Date: Tue, 7 Jun 2016 06:52:40 +0100 From: David Malone <dwmalone@maths.tcd.ie> To: "Pedro F. Giffuni" <pfg@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r299954 - stable/10/sbin/restore Message-ID: <20160607055240.GA53732@walton.maths.tcd.ie> In-Reply-To: <201605161629.u4GGTumH048298@repo.freebsd.org> References: <201605161629.u4GGTumH048298@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Pedro, The OpenBSD commit message said off_t, but you commit and commit message says size_t, which won't be bigger than a long on some of our platforms. Should it have been off_t, or did I misunderstand something? David. > Author: pfg > Date: Mon May 16 16:29:56 2016 > New Revision: 299954 > URL: https://svnweb.freebsd.org/changeset/base/299954 > > Log: > MFC r298901: > restore: promote some getfiles() parameters to size_t. > > This is based on a change from OpenBSD: > > "Fix restore so that it can actually restore files larger than 4GB by > changing the type of "size" to off_t in getfiles() plus little dependent > type cleanup, from Daniel Lucq." > > It is an important for machines with 32 bit longs. > While here unsign the flags, also from OpenBSD. > > Obtained from: OpenBSD (with changes) > > Modified: > stable/10/sbin/restore/dirs.c > stable/10/sbin/restore/extern.h > stable/10/sbin/restore/tape.c > Directory Properties: > stable/10/ (props changed) > > Modified: stable/10/sbin/restore/dirs.c > ============================================================================== > --- stable/10/sbin/restore/dirs.c Mon May 16 16:16:46 2016 (r299953) > +++ stable/10/sbin/restore/dirs.c Mon May 16 16:29:56 2016 (r299954) > @@ -85,7 +85,7 @@ struct modeinfo { > mode_t mode; > uid_t uid; > gid_t gid; > - int flags; > + u_int flags; > int extsize; > }; > > @@ -115,8 +115,8 @@ static struct inotab *allocinotab(struct > static void flushent(void); > static struct inotab *inotablookup(ino_t); > static RST_DIR *opendirfile(const char *); > -static void putdir(char *, long); > -static void putdirattrs(char *, long); > +static void putdir(char *, size_t); > +static void putdirattrs(char *, size_t); > static void putent(struct direct *); > static void rst_seekdir(RST_DIR *, long, long); > static long rst_telldir(RST_DIR *); > @@ -323,10 +323,10 @@ searchdir(ino_t inum, char *name) > * Put the directory entries in the directory file > */ > static void > -putdir(char *buf, long size) > +putdir(char *buf, size_t size) > { > struct direct *dp; > - long loc, i; > + size_t loc, i; > > for (loc = 0; loc < size; ) { > dp = (struct direct *)(buf + loc); > @@ -356,12 +356,12 @@ putdir(char *buf, long size) > "reclen not multiple of 4 "); > if (dp->d_reclen < DIRSIZ(0, dp)) > vprintf(stdout, > - "reclen less than DIRSIZ (%d < %zu) ", > + "reclen less than DIRSIZ (%u < %zu) ", > dp->d_reclen, DIRSIZ(0, dp)); > #if NAME_MAX < 255 > if (dp->d_namlen > NAME_MAX) > vprintf(stdout, > - "reclen name too big (%d > %d) ", > + "reclen name too big (%u > %u) ", > dp->d_namlen, NAME_MAX); > #endif > vprintf(stdout, "\n"); > @@ -418,7 +418,7 @@ flushent(void) > * Save extended attributes for a directory entry to a file. > */ > static void > -putdirattrs(char *buf, long size) > +putdirattrs(char *buf, size_t size) > { > > if (mf != NULL && fwrite(buf, size, 1, mf) != 1) > > Modified: stable/10/sbin/restore/extern.h > ============================================================================== > --- stable/10/sbin/restore/extern.h Mon May 16 16:16:46 2016 (r299953) > +++ stable/10/sbin/restore/extern.h Mon May 16 16:29:56 2016 (r299954) > @@ -54,8 +54,8 @@ void freeentry(struct entry *); > void freename(char *); > int genliteraldir(char *, ino_t); > char *gentempname(struct entry *); > -void getfile(void (*)(char *, long), void (*)(char *, long), > - void (*)(char *, long)); > +void getfile(void (*)(char *, size_t), void (*)(char *, size_t), > + void (*)(char *, size_t)); > void getvol(long); > void initsymtable(char *); > int inodetype(ino_t); > @@ -98,7 +98,7 @@ void swabst(u_char *, u_char *); > void treescan(char *, ino_t, long (*)(char *, ino_t, int)); > ino_t upperbnd(ino_t); > long verifyfile(char *, ino_t, int); > -void xtrnull(char *, long); > +void xtrnull(char *, size_t); > > /* From ../dump/dumprmt.c */ > void rmtclose(void); > > Modified: stable/10/sbin/restore/tape.c > ============================================================================== > --- stable/10/sbin/restore/tape.c Mon May 16 16:16:46 2016 (r299953) > +++ stable/10/sbin/restore/tape.c Mon May 16 16:29:56 2016 (r299954) > @@ -104,7 +104,7 @@ static int checksum(int *); > static void findinode(struct s_spcl *); > static void findtapeblksize(void); > static char *setupextattr(int); > -static void xtrattr(char *, long); > +static void xtrattr(char *, size_t); > static void set_extattr_link(char *, void *, int); > static void set_extattr_fd(int, char *, void *, int); > static int gethead(struct s_spcl *); > @@ -114,12 +114,12 @@ static u_long swabl(u_long); > static u_char *swablong(u_char *, int); > static u_char *swabshort(u_char *, int); > static void terminateinput(void); > -static void xtrfile(char *, long); > -static void xtrlnkfile(char *, long); > -static void xtrlnkskip(char *, long); > -static void xtrmap(char *, long); > -static void xtrmapskip(char *, long); > -static void xtrskip(char *, long); > +static void xtrfile(char *, size_t); > +static void xtrlnkfile(char *, size_t); > +static void xtrlnkskip(char *, size_t); > +static void xtrmap(char *, size_t); > +static void xtrmapskip(char *, size_t); > +static void xtrskip(char *, size_t); > > /* > * Set up an input source > @@ -564,7 +564,7 @@ printdumpinfo(void) > int > extractfile(char *name) > { > - int flags; > + u_int flags; > uid_t uid; > gid_t gid; > mode_t mode; > @@ -931,13 +931,13 @@ skipfile(void) > * to the skip function. > */ > void > -getfile(void (*datafill)(char *, long), void (*attrfill)(char *, long), > - void (*skip)(char *, long)) > +getfile(void (*datafill)(char *, size_t), void (*attrfill)(char *, size_t), > + void (*skip)(char *, size_t)) > { > int i; > - off_t size; > + volatile off_t size; > int curblk, attrsize; > - void (*fillit)(char *, long); > + void (*fillit)(char *, size_t); > static char clearedbuf[MAXBSIZE]; > char buf[MAXBSIZE / TP_BSIZE][TP_BSIZE]; > char junk[TP_BSIZE]; > @@ -1066,7 +1066,7 @@ setupextattr(int extsize) > * Extract the next block of extended attributes. > */ > static void > -xtrattr(char *buf, long size) > +xtrattr(char *buf, size_t size) > { > > if (extloc + size > extbufsize) > @@ -1079,7 +1079,7 @@ xtrattr(char *buf, long size) > * Write out the next block of a file. > */ > static void > -xtrfile(char *buf, long size) > +xtrfile(char *buf, size_t size) > { > > if (Nflag) > @@ -1096,7 +1096,7 @@ xtrfile(char *buf, long size) > */ > /* ARGSUSED */ > static void > -xtrskip(char *buf, long size) > +xtrskip(char *buf, size_t size) > { > > if (lseek(ofile, size, SEEK_CUR) == -1) { > @@ -1111,7 +1111,7 @@ xtrskip(char *buf, long size) > * Collect the next block of a symbolic link. > */ > static void > -xtrlnkfile(char *buf, long size) > +xtrlnkfile(char *buf, size_t size) > { > > pathlen += size; > @@ -1128,7 +1128,7 @@ xtrlnkfile(char *buf, long size) > */ > /* ARGSUSED */ > static void > -xtrlnkskip(char *buf, long size) > +xtrlnkskip(char *buf, size_t size) > { > > fprintf(stderr, "unallocated block in symbolic link %s\n", > @@ -1140,7 +1140,7 @@ xtrlnkskip(char *buf, long size) > * Collect the next block of a bit map. > */ > static void > -xtrmap(char *buf, long size) > +xtrmap(char *buf, size_t size) > { > > memmove(map, buf, size); > @@ -1152,7 +1152,7 @@ xtrmap(char *buf, long size) > */ > /* ARGSUSED */ > static void > -xtrmapskip(char *buf, long size) > +xtrmapskip(char *buf, size_t size) > { > > panic("hole in map\n"); > @@ -1164,7 +1164,7 @@ xtrmapskip(char *buf, long size) > */ > /* ARGSUSED */ > void > -xtrnull(char *buf, long size) > +xtrnull(char *buf, size_t size) > { > > return; >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160607055240.GA53732>