[GRASS-dev] Re: [GRASS GIS] #39: r.in.srtm fails to validate zip
files
Glynn Clements
glynn at gclements.plus.com
Sun Feb 10 13:40:19 EST 2008
GRASS GIS wrote:
> #39: r.in.srtm fails to validate zip files
> ------------------------+---------------------------------------------------
> Reporter: kyngchaos | Owner: hamish
> Type: defect | Status: assigned
> Priority: major | Milestone: 6.3.0
> Component: default | Version: unspecified
> Resolution: | Keywords:
> ------------------------+---------------------------------------------------
> Changes (by hamish):
>
> * status: new => assigned
> * owner: grass-dev at lists.osgeo.org => hamish
> * cc: grass-dev at lists.osgeo.org (added)
>
> Comment:
>
> SUS says:
> http://www.opengroup.org/onlinepubs/009695399/utilities/file.html
>
> --mime is not mentioned.
>
>
>
> re "why was it changed" in r19303: it never used `zip` to test, it was
> using `ls` to look for a file with a .zip extension. (input= refers to the
> tile name not the file name)
>
> {{{
> -ls -1 "$FILE.hgt.zip" | grep zip > /dev/null
> -if [ $? -ne 0 ] ; then
> +# really a ZIP file?
> +if [ "`file -ib $FILE.hgt.zip`" != "application/x-zip" ] ; then
> echo "$FILE.hgt.zip is no zip file."
> exit 1
> fi
> }}}
>
> for one thing "echo $foo.zip | grep zip" was always true.
>
> Perhaps the reason for the test had to do with downloaders creating
> incomplete or 0 byte files, or having wrongly named files?
If incomplete downloads are an issue, file probably won't help if you
manage to download anything at all, as it normally only checks the
first few bytes of the file. My /usr/share/misc/file/magic file has:
# ZIP archives (Greg Roelofs, c/o zip-bugs at wkuvx1.wku.edu)
0 string PK\003\004
>4 byte 0x09 Zip archive data, at least v0.9 to extract
>4 byte 0x0a Zip archive data, at least v1.0 to extract
>4 byte 0x0b Zip archive data, at least v1.1 to extract
>4 byte 0x14
>>30 ubelong !0x6d696d65 Zip archive data, at least v2.0 to extract
>0x161 string WINZIP Zip archive data, WinZIP self-extracting
This suggests that the first 8 bytes are sufficient in most cases, 34
bytes for v2.0, or 360 bytes for a self-extracting archive.
> I've removed `file` and added a call to `unzip -t` in 6.3 trunk.
>
> waiting to backport to 6.3.0's branch and close the bug until someone
> tests the change please.
"unzip -vb" would probably be enough to catch aborted downloads. ZIP
files have the catalog at the end of the file, so a truncated file
would normally lack a catalog.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list