Skip site navigation (1)Skip section navigation (2)
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>