Date: Tue, 7 Jun 2016 09:21:16 -0500 From: Pedro Giffuni <pfg@FreeBSD.org> To: David Malone <dwmalone@maths.tcd.ie> 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: <1601b9c2-41a8-03e4-fa8f-3ccf4785ecd4@FreeBSD.org> In-Reply-To: <20160607055240.GA53732@walton.maths.tcd.ie> References: <201605161629.u4GGTumH048298@repo.freebsd.org> <20160607055240.GA53732@walton.maths.tcd.ie>
next in thread | previous in thread | raw e-mail | index | archive | help
H David; On 06/07/16 00:52, David Malone wrote: > 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? > You didn't misunderstand anything. The OpenBSD commit logs says off_t but their commit also has size_t's. I didn't feel like changing their commit log but still wanted to keep the "spirit" of the change and give them credit. size_t is bigger on the platforms that matter, plus it is unsigned. Pedro. > 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?1601b9c2-41a8-03e4-fa8f-3ccf4785ecd4>