Entropy42
04-13-2003, 06:38 AM
This is a patch against the compressloop implementation at http://projects.openoffice.nl/downloads/compressloop/
(I use this because it doesn't need huge amounts of RAM, since you can specify the image size in advance.)
For some reason, atoi() and atol() don't like numbers greater than 2^31. (Most likely because they assume signed results???)
As a result, compressloop is limited to a maximum input image size of 2^31 (2 gigs) instead of the 2^32 (4 gigs) limit of a long.
I'm sure the best way to fix this would be to replace atoi(), but it's 1:34 AM and I want to compress UT2k3 now, so my patch to the utilities is as follows:
diff cloop/compressloop.c cloop-sectorpatch/compressloop.c
74a75
> fprintf(stderr, "\t-s sectors\t\tset number of 2048-byte sectors instead of image size in bytes\n");
105a107
> unsigned long imagesec;
111c113
< while ((optionchar=getopt(argc,argv,"b:i:I:c:Fv"))!=-1) {
---
> while ((optionchar=getopt(argc,argv,"b:s:i:I:c:Fv"))!=-1) {
119a122,125
> break;
> case 's':
> imagesec=atoi(optarg);
> imagesize=imagesec*2048;
This allows you to set the input image size in 2048-byte sectors. This gets around the atoi() limitation, and also makes compressloop easier to use in scripts with mkisofs -q -print-size
(I use this because it doesn't need huge amounts of RAM, since you can specify the image size in advance.)
For some reason, atoi() and atol() don't like numbers greater than 2^31. (Most likely because they assume signed results???)
As a result, compressloop is limited to a maximum input image size of 2^31 (2 gigs) instead of the 2^32 (4 gigs) limit of a long.
I'm sure the best way to fix this would be to replace atoi(), but it's 1:34 AM and I want to compress UT2k3 now, so my patch to the utilities is as follows:
diff cloop/compressloop.c cloop-sectorpatch/compressloop.c
74a75
> fprintf(stderr, "\t-s sectors\t\tset number of 2048-byte sectors instead of image size in bytes\n");
105a107
> unsigned long imagesec;
111c113
< while ((optionchar=getopt(argc,argv,"b:i:I:c:Fv"))!=-1) {
---
> while ((optionchar=getopt(argc,argv,"b:s:i:I:c:Fv"))!=-1) {
119a122,125
> break;
> case 's':
> imagesec=atoi(optarg);
> imagesize=imagesec*2048;
This allows you to set the input image size in 2048-byte sectors. This gets around the atoi() limitation, and also makes compressloop easier to use in scripts with mkisofs -q -print-size