On Thu, 28 Dec 2017, "Thomas Schmitt" <scdbackup@gmx.net> wrote:
...
> Especially in need of attention:
>
> - I could not find a clear description how "wget" determines the local
> file paths from URLs and option --directory-prefix="$imageTmp".
> My current conversion from URL to path is purely heuristic therefore:
>
> localPath="$imageTmp"/`echo "$url" | \
> sed -e 's/^[hH][tT][tT][pP]:\/\///' \
> -e 's/^[hH][tT][tT][pP][sS]:\/\///' \
> -e 's/^[fF][tT][pP]:\/\///' \
> -e 's/^[fF][iI][lL][eE]:\/\///'`
A rather less laboured way of getting the same effect with sed would be:
sed -e 's,^\(https\?\|ftp\|file\)://,,i'
[ Things to note about that:
s,,, in place of s/// means that no escaping of / is needed
the 'i' flag at the end makes the match case insensitive
s\? means match zero or one 's'
]
However, I doubt that it's important to worry about the potential for
unexpectedly removing a prefix of e.g. cdrom:// or ://, in which case
you could dispense with sed and instead do this:
localpath="$imageTmp/${url#[[:alpha:]]*://}"
> - I introduced a dependency on "awk", which was not used in jigdo-lite
> before. The task is to obtain the first word of jigdo-file's output:
>
> fileMD5=`$jigdoFile md5 "$localPath" 2>/dev/null | awk '{print $1}'`
The way it's done elsewhere in the script (which I happen to think is
pretty horrible, but that's what is already there) is using set, thus:
set -- `$jigdoFile md5sum --report=quiet "$localPath"`
which leaves the value that you are after in $1.
I also happen to think that using `` rather than $() is pretty horrible
in this day and age, but that's what's currently there throughout the
script, so I guess one should stick with that, or fix it everywhere.
Cheers, Phil.
--
|)| Philip Hands [+44 (0)20 8530 9560] HANDS.COM Ltd.
|-| http://www.hands.com/ http://ftp.uk.debian.org/
|(| Hugo-Klemm-Strasse 34, 21075 Hamburg, GERMANY
Attachment:
signature.asc
Description: PGP signature