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