Here is a new patch to address the compile-time issues of afio. It supersedes the earlier patch I provided, and should be applied to 2.4.7-2.
I hope that I'm providing these patches right. I'm producing them with diff -ur . diff -u afio-2.4.7-old/Makefile afio-2.4.7/Makefile --- afio-2.4.7-old/Makefile Wed Jul 24 16:57:44 2002 +++ afio-2.4.7/Makefile Wed Jul 24 15:48:12 2002 @@ -58,7 +58,7 @@ #CFLAGS1 = -Wall -s -g -O2 -fomit-frame-pointer #CFLAGS1 = -Wall -O2 -fomit-frame-pointer # edd 14 Mar 2002 added -D_FILE_OFFSET_BITS=64 and -D_LARGEFILE_SOURCE -CFLAGS1 = -W -s -g -O2 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +CFLAGS1 = -Wall -s -g -O2 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE CC=gcc diff -u afio-2.4.7-old/afio.c afio-2.4.7/afio.c --- afio-2.4.7-old/afio.c Wed Oct 10 02:03:53 2001 +++ afio-2.4.7/afio.c Wed Jul 24 16:56:08 2002 @@ -1138,14 +1138,7 @@ if (inread (header, H_STRLEN) < 0) return (warnarch ("Corrupt ASCII header", (off_t) H_STRLEN)); header[H_STRLEN] = '\0'; -#if 0 - if (sscanf (header, H_SCAN, &asb->sb_dev, - &asb->sb_ino, &asb->sb_mode, &asb->sb_uid, - &asb->sb_gid, &asb->sb_nlink, &asb->sb_rdev, - &asb->sb_mtime, &namelen, &asb->sb_size) != H_COUNT) - return (warnarch ("Bad ASCII header", (off_t) H_STRLEN)); -#else - /* this should be much more portable than the one above */ + if (sscanf (header, PH_SCAN, &pasb.PSt_dev, &pasb.PSt_ino, &pasb.PSt_mode, &pasb.PSt_uid, &pasb.PSt_gid, &pasb.PSt_nlink, &pasb.PSt_rdev, @@ -1161,7 +1154,6 @@ asb->sb_rdev = pasb.PSt_rdev; asb->sb_mtime = pasb.PSt_mtime; asb->sb_size = pasb.PSt_size; -#endif if (namelen == 0 || namelen >= PATHSIZE) return (warnarch ("Bad ASCII pathname length", (off_t) H_STRLEN)); if (inread (name, namelen) < 0) @@ -1550,7 +1542,7 @@ char *name; reg Stat *asb; { - reg Link *linkp; + reg Link *linkp=NULL; reg int ifd; auto int compression; @@ -1599,16 +1591,18 @@ bufend = bufidx = buffer; if (!failed) { - if (areof) - if (total == 0) + if (areof) { + if (total == 0) { fatal (arspec, "No input"); - else + } else { - if((aruntil!=0) || askfornext) + if((aruntil!=0) || askfornext) { next (O_RDONLY, "Input EOF"); - else + } else { fatal (arspec, "Premature input EOF"); + } } + } #if 0 fprintf(stderr,"aruntil=%Ld arleft=%Ld arbsize=%d\n",aruntil,arleft,arbsize); #endif @@ -1721,12 +1715,15 @@ asb->sb_size = 0; } #endif /* S_IFLNK */ - if ((name[0] == '/') && !abspaths) - if (name[1]) + if ((name[0] == '/') && !abspaths) { + if (name[1]) { while ((name[0] = name[1])) ++name; - else + } else { name[0] = '.'; + } + } + asb->sb_atime = asb->sb_ctime = asb->sb_mtime; return (0); } @@ -2854,12 +2851,12 @@ } else namedot = NULL; /* not uncompressing */ - if ((exists = (LSTAT (name, &osb) == 0))) + if ((exists = (LSTAT (name, &osb) == 0))) { /* The asb.sb_ino here has not been truncated to 16 bits, so the check is safe and may even add some protection. */ if (ispass && osb.sb_ino == asb->sb_ino - && osb.sb_dev == asb->sb_dev) + && osb.sb_dev == asb->sb_dev) return (warn (name, "Same file")); else if ((osb.sb_mode & S_IFMT) == (asb->sb_mode & S_IFMT)) operm = osb.sb_mode & (xflag ? S_IPERM : S_IPOPN); @@ -2867,6 +2864,7 @@ return (warn (name, syserr ())); else exists = 0; + } if (linkp) { if (exists) @@ -2914,7 +2912,7 @@ case S_IFBLK: case S_IFCHR: fd = 0; - if (exists) + if (exists) { if (asb->sb_rdev == osb.sb_rdev) if (perm != operm && chmod (name, perm) < 0) return (warn (name, syserr ())); @@ -2928,6 +2926,8 @@ and is encoded in dev and ino instead see out(). */ + } + if(asb->sb_rdev==0) asb->sb_rdev=(asb->sb_dev << 16) + asb->sb_ino; if (mknod (name, asb->sb_mode, asb->sb_rdev) < 0 && (errno != ENOENT @@ -2977,7 +2977,7 @@ #ifdef S_IFLNK case S_IFLNK: fd = 0; - if (exists) + if (exists) { if ((ssize = readlink (name, sname, sizeof (sname))) < 0) return (warn (name, syserr ())); else if (strncmp (sname, asb->sb_link, ssize) == 0) @@ -2986,6 +2986,7 @@ return (warn (name, syserr ())); else exists = 0; + } if (symlink (asb->sb_link, name) < 0 && (errno != ENOENT || dirneed (name) < 0 @@ -2994,13 +2995,15 @@ break; #endif /* S_IFLNK */ case S_IFREG: - if (exists) + if (exists) { if (nflag && osb.sb_mtime > asb->sb_mtime) return (warn_nocount (name, "Newer file exists")); else if (unlink (name) < 0) return (warn (name, syserr ())); else exists = 0; + } + if ((fd = creat (name, perm)) < 0 && (errno != ENOENT || dirneed (name) < 0 @@ -3059,7 +3062,7 @@ if((asb->sb_mode & S_IFMT) != S_IFLNK) { if (xflag && (!exists || asb->sb_uid != osb.sb_uid - || asb->sb_gid != osb.sb_gid)) + || asb->sb_gid != osb.sb_gid)) { if (chown (name, uid == 0 ? ush (asb->sb_uid) : uid, ush (asb->sb_gid))) perror (name); @@ -3067,6 +3070,7 @@ if(perm&S_IPEXE) if(chmod (name, perm) < 0) return (warn (name, syserr ())); + } } if (linkp == NULL && asb->sb_nlink > 1) @@ -3271,8 +3275,8 @@ sb.sb_rdev=(dev_t)0; } - if(extfmt) outhead2 (name, &sb); else outhead (name, &sb); - if (fd) + if(extfmt) { outhead2 (name, &sb); } else { outhead (name, &sb); } + if (fd) { if (fd==ZIPFD) { outdatazip(zipfdfd,name,sb.sb_size); @@ -3284,6 +3288,7 @@ } else VOID close (outdata (fd, name, sb.sb_size)); + } if (vflag) { @@ -3500,8 +3505,8 @@ if ((pad = (total + M_STRLEN + H_STRLEN + namelen) % arpad)) pad = arpad - pad; VOID strcpy (header, M_ASCII); - VOID sprintf (header + M_STRLEN, H_PRINT, 0, 0, - 0, 0, 0, 1, 0, (time_t) 0, namelen, pad); + VOID sprintf (header + M_STRLEN, H_PRINT, 0, (unsigned long long)0, + 0, 0, 0, 1, 0, (time_t) 0, namelen, (unsigned long long)pad); outwrite (header, M_STRLEN + H_STRLEN); outwrite (name, namelen); outpad (pad); @@ -3556,15 +3561,16 @@ reg uint namelen; auto char header[M_STRLEN + H_STRLEN + 1]; - if ((name[0] == '/') && !abspaths) + if ((name[0] == '/') && !abspaths) { if (name[1]) ++name; else name = "."; + } namelen = (uint) strlen (name) + 1; VOID strcpy (header, M_ASCII); VOID sprintf (header + M_STRLEN, H_PRINT, ush (asb->sb_dev), - ush (asb->sb_ino), ush (asb->sb_mode), ush (asb->sb_uid), + asb->sb_ino, ush (asb->sb_mode), ush (asb->sb_uid), ush (asb->sb_gid), ush (asb->sb_nlink), ush (asb->sb_rdev), mflag ? timenow : asb->sb_mtime, namelen, asb->sb_size); outwrite (header, M_STRLEN + H_STRLEN); @@ -3588,17 +3594,18 @@ reg uint namelen; auto char header[M_STRLEN + H_STRLEN2 + 1]; - if ((name[0] == '/') && !abspaths) + if ((name[0] == '/') && !abspaths) { if (name[1]) ++name; else name = "."; + } namelen = (uint) strlen (name) + 1; VOID strcpy (header, M_ASCII2); - VOID sprintf (header + M_STRLEN, H_PRINT2, ush (asb->sb_dev), - (asb->sb_ino), ush (asb->sb_mode), ush (asb->sb_uid), + VOID sprintf (header + M_STRLEN, H_PRINT2, ush(asb->sb_dev), + asb->sb_ino, ush (asb->sb_mode), ush (asb->sb_uid), ush (asb->sb_gid), ush (asb->sb_nlink), ush (asb->sb_rdev), - mflag ? timenow : asb->sb_mtime, namelen, asb->sb_size); + mflag ? timenow : asb->sb_mtime, namelen, (unsigned long long)asb->sb_size); outwrite (header, M_STRLEN + H_STRLEN2); outwrite (name, namelen); #ifdef S_IFLNK @@ -4079,7 +4086,7 @@ major (asb->sb_rdev), minor (asb->sb_rdev)); break; case S_IFREG: - VOID printf (" %8ld", asb->sb_size); + VOID printf (" %8Ld", asb->sb_size); break; default: VOID printf (" "); @@ -4121,11 +4128,12 @@ if (vflag || lflag) { from=NULL; - if (asb->sb_nlink > 1) + if (asb->sb_nlink > 1) { if ((from = linkfrom (asb,1))) VOID printf (" -> %s", from->l_path->p_name); else VOID linkto (name, asb); + } #ifdef S_IFLNK if (((asb->sb_mode & S_IFMT) == S_IFLNK)&&(from==NULL)) @@ -4301,11 +4309,13 @@ #endif for (idx = 0; (pid = fork ()) < 0; ++idx) { - if (idx == sizeof (delay)) + if (idx == sizeof (delay)) { if (die) fatal (arspec, syserr ()); else return (-1); + } + VOID warn_nocount (what, "Trouble forking..."); if (Fflag && !die) /* give up and go on... */ return (-1); diff -u afio-2.4.7-old/afio.h afio-2.4.7/afio.h --- afio-2.4.7-old/afio.h Sat Oct 6 23:43:47 2001 +++ afio-2.4.7/afio.h Wed Jul 24 16:54:48 2002 @@ -101,10 +101,8 @@ #define H_COUNT 10 /* Number of items in ASCII header */ /* old ASCII format */ -#define H_PRINT "%06o%06o%06o%06o%06o%06o%06o%011lo%06o%011lo" -/* H_SCAN is obsolete, replaced by PH_SCAN to be more portable. */ -#define H_SCAN "%6ho%6ho%6ho%6ho%6ho%6ho%6ho%11lo%6o%11lo" -#define PH_SCAN "%6lo%6lo%6lo%6lo%6lo%6lo%6lo%11lo%6o%11lo" +#define H_PRINT "%06o%06Lo%06o%06o%06o%06o%06o%011lo%06o%011Lo" +#define PH_SCAN "%6lo%6lo%6lo%6lo%6lo%6lo%6lo%11lo%6o%11Lo" /* Below is a handy piece of ASCII art which can be used to decode old @@ -118,8 +116,8 @@ /* extended ASCII format */ -#define H_PRINT2 "%06o%011lo%06o%06o%06o%06o%06o%011lo%06o%011lo" -#define PH_SCAN2 "%6lo%11lo%6lo%6lo%6lo%6lo%6lo%11lo%6o%11lo" +#define H_PRINT2 "%06o%011Lo%06o%06o%06o%06o%06o%011lo%06o%011Lo" +#define PH_SCAN2 "%6lo%11lo%6lo%6lo%6lo%6lo%6lo%11lo%6o%11Lo" typedef struct { @@ -131,7 +129,7 @@ long unsigned int PSt_nlink; long unsigned int PSt_rdev; long unsigned int PSt_mtime; -long unsigned int PSt_size; +unsigned long long PSt_size; } PStat; #define H_STRLEN 70 /* old ASCII header string length */ Common subdirectories: afio-2.4.7-old/debian and afio-2.4.7/debian Common subdirectories: afio-2.4.7-old/script1 and afio-2.4.7/script1 Common subdirectories: afio-2.4.7-old/script2 and afio-2.4.7/script2 Common subdirectories: afio-2.4.7-old/script3 and afio-2.4.7/script3 Common subdirectories: afio-2.4.7-old/script4 and afio-2.4.7/script4 Common subdirectories: afio-2.4.7-old/script5 and afio-2.4.7/script5 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]