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;
> 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to