On Sun, Aug 14, 2016 at 09:59:21PM -0700, Philip Guenther wrote:
> 
> du is an easy on, though the use of fts_number here reminded me that we 
> need to increase to a long long at some point like the other BSDs did.
> 
> hexdump is...subtle, as it both creates format strings on the fly and 
> *rewrites* them!  Turns out it was using %q for both of those, hah!  The 
> display.c change is a straight forward quad_t-->int64_t conversion, while 
> the parse.c change is to use %ll instead of %q.
> 
> systat just needs u_quad_t to be converted to uint64_t, but while we're 
> here let's convert bcopy() to memcpy() and bzero() to memset().
> 
> ok?

QK, reads fine to me. See one comment below.


> 
> PHilip
> 
> Index: usr.bin/du/du.c
> ===================================================================
> RCS file: /data/src/openbsd/src/usr.bin/du/du.c,v
> retrieving revision 1.31
> diff -u -p -r1.31 du.c
> --- usr.bin/du/du.c   10 Oct 2015 05:32:52 -0000      1.31
> +++ usr.bin/du/du.c   15 Aug 2016 04:08:25 -0000
> @@ -50,7 +50,7 @@
>  
>  
>  int   linkchk(FTSENT *);
> -void  prtout(quad_t, char *, int);
> +void  prtout(int64_t, char *, int);
>  void  usage(void);
>  
>  int
> @@ -59,7 +59,7 @@ main(int argc, char *argv[])
>       FTS *fts;
>       FTSENT *p;
>       long blocksize;
> -     quad_t totalblocks;
> +     int64_t totalblocks;
>       int ftsoptions, listfiles, maxdepth;
>       int Hflag, Lflag, cflag, hflag, kflag;
>       int ch, notused, rval;
> @@ -177,7 +177,7 @@ main(int argc, char *argv[])
>                        * root of a traversal, display the total.
>                        */
>                       if (p->fts_level <= maxdepth)
> -                             prtout((quad_t)howmany(p->fts_number,
> +                             prtout(howmany(p->fts_number,
>                                   (unsigned long)blocksize), p->fts_path,
>                                   hflag);
>                       break;
> @@ -207,7 +207,7 @@ main(int argc, char *argv[])
>       if (errno)
>               err(1, "fts_read");
>       if (cflag) {
> -             prtout((quad_t)howmany(totalblocks, blocksize), "total", hflag);
> +             prtout(howmany(totalblocks, blocksize), "total", hflag);
>       }
>       fts_close(fts);
>       exit(rval);
> @@ -301,17 +301,17 @@ linkchk(FTSENT *p)
>  }
>  
>  void
> -prtout(quad_t size, char *path, int hflag)
> +prtout(int64_t size, char *path, int hflag)
>  {
>       if (!hflag)
> -             (void)printf("%lld\t%s\n", (long long)size, path);
> +             (void)printf("%lld\t%s\n", size, path);
>       else {
>               char buf[FMT_SCALED_STRSIZE];
>  
>               if (fmt_scaled(size * 512, buf) == 0)
>                       (void)printf("%s\t%s\n", buf, path);
>               else
> -                     (void)printf("%lld\t%s\n", (long long)size, path);
> +                     (void)printf("%lld\t%s\n", size, path);
>       }
>  }
>  
> Index: usr.bin/hexdump/display.c
> ===================================================================
> RCS file: /data/src/openbsd/src/usr.bin/hexdump/display.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 display.c
> --- usr.bin/hexdump/display.c 15 Mar 2016 04:19:13 -0000      1.24
> +++ usr.bin/hexdump/display.c 15 Aug 2016 04:16:35 -0000
> @@ -100,7 +100,7 @@ display(void)
>               for (pr = endfu->nextpr; pr; pr = pr->nextpr)
>                       switch(pr->flags) {
>                       case F_ADDRESS:
> -                             (void)printf(pr->fmt, (quad_t)eaddress);
> +                             (void)printf(pr->fmt, (int64_t)eaddress);
>                               break;
>                       case F_TEXT:
>                               (void)printf("%s", pr->fmt);
> @@ -123,7 +123,7 @@ print(PR *pr, u_char *bp)
>  
>       switch(pr->flags) {
>       case F_ADDRESS:
> -             (void)printf(pr->fmt, (quad_t)address);
> +             (void)printf(pr->fmt, (int64_t)address);
>               break;
>       case F_BPAD:
>               (void)printf(pr->fmt, "");
> @@ -149,15 +149,15 @@ print(PR *pr, u_char *bp)
>       case F_INT:
>               switch(pr->bcnt) {
>               case 1:
> -                     (void)printf(pr->fmt, (quad_t)*bp);
> +                     (void)printf(pr->fmt, (int64_t)*bp);
>                       break;
>               case 2:
>                       memmove(&s2, bp, sizeof(s2));
> -                     (void)printf(pr->fmt, (quad_t)s2);
> +                     (void)printf(pr->fmt, (int64_t)s2);
>                       break;
>               case 4:
>                       memmove(&s4, bp, sizeof(s4));
> -                     (void)printf(pr->fmt, (quad_t)s4);
> +                     (void)printf(pr->fmt, (int64_t)s4);
>                       break;
>               case 8:
>                       memmove(&s8, bp, sizeof(s8));
> @@ -180,15 +180,15 @@ print(PR *pr, u_char *bp)
>       case F_UINT:
>               switch(pr->bcnt) {
>               case 1:
> -                     (void)printf(pr->fmt, (u_quad_t)*bp);
> +                     (void)printf(pr->fmt, (uint64_t)*bp);
>                       break;
>               case 2:
>                       memmove(&u2, bp, sizeof(u2));
> -                     (void)printf(pr->fmt, (u_quad_t)u2);
> +                     (void)printf(pr->fmt, (uint64_t)u2);
>                       break;
>               case 4:
>                       memmove(&u4, bp, sizeof(u4));
> -                     (void)printf(pr->fmt, (u_quad_t)u4);
> +                     (void)printf(pr->fmt, (uint64_t)u4);
>                       break;
>               case 8:
>                       memmove(&u8, bp, sizeof(u8));
> Index: usr.bin/hexdump/parse.c
> ===================================================================
> RCS file: /data/src/openbsd/src/usr.bin/hexdump/parse.c,v
> retrieving revision 1.20
> diff -u -p -r1.20 parse.c
> --- usr.bin/hexdump/parse.c   15 Mar 2016 04:19:13 -0000      1.20
> +++ usr.bin/hexdump/parse.c   15 Aug 2016 04:13:28 -0000
> @@ -217,7 +217,7 @@ rewrite(FS *fs)
>       PR *pr, **nextpr;
>       FU *fu;
>       char *p1, *p2;
> -     char savech, *fmtp, cs[3];
> +     char savech, *fmtp, cs[4];
>       int nconv, prec;
>       size_t len;
>  
> @@ -295,9 +295,10 @@ rewrite(FS *fs)
>                               else
>                                       pr->flags = F_UINT;
>  
> -                             cs[2] = '\0';
> -                             cs[1] = cs[0];
> -                             cs[0] = 'q';
> +                             cs[3] = '\0';
> +                             cs[2] = cs[0];
> +                             cs[1] = 'l';
> +                             cs[0] = 'l';
>                               switch(fu->bcnt) {
>                               case 0: case 4:
>                                       pr->bcnt = 4;
> @@ -355,9 +356,10 @@ rewrite(FS *fs)
>                                       ++p2;
>                                       switch(p1[2]) {
>                                       case 'd': case 'o': case'x':
> -                                             cs[0] = 'q';
> -                                             cs[1] = p1[2];
> -                                             cs[2] = '\0';
> +                                             cs[0] = 'l';
> +                                             cs[1] = 'l';
> +                                             cs[2] = p1[2];
> +                                             cs[3] = '\0';
>                                               break;
>                                       default:
>                                               if (p1[2])
> Index: usr.bin/systat/vmstat.c
> ===================================================================
> RCS file: /data/src/openbsd/src/usr.bin/systat/vmstat.c,v
> retrieving revision 1.80
> diff -u -p -r1.80 vmstat.c
> --- usr.bin/systat/vmstat.c   20 Aug 2015 22:32:42 -0000      1.80
> +++ usr.bin/systat/vmstat.c   15 Aug 2016 04:35:28 -0000
> @@ -64,7 +64,7 @@ static struct Info {
>       struct  vmtotal Total;
>       struct  nchstats nchstats;
>       long    nchcount;
> -     u_quad_t *intrcnt;
> +     uint64_t *intrcnt;
>  } s, s1, s2, s3, z;
>  
>  extern struct _disk  cur;
> @@ -606,25 +606,25 @@ getinfo(struct Info *si)
>       size = sizeof(si->time);
>       if (sysctl(cp_time_mib, 2, &si->time, &size, NULL, 0) < 0) {
>               error("Can't get KERN_CPTIME: %s\n", strerror(errno));
> -             bzero(&si->time, sizeof(si->time));
> +             memset(&si->time, 0, sizeof(si->time));
>       }
>  
>       size = sizeof(si->nchstats);
>       if (sysctl(nchstats_mib, 2, &si->nchstats, &size, NULL, 0) < 0) {
>               error("Can't get KERN_NCHSTATS: %s\n", strerror(errno));
> -             bzero(&si->nchstats, sizeof(si->nchstats));
> +             memset(&si->nchstats, 0, sizeof(si->nchstats));
>       }
>  
>       size = sizeof(si->uvmexp);
>       if (sysctl(uvmexp_mib, 2, &si->uvmexp, &size, NULL, 0) < 0) {
>               error("Can't get VM_UVMEXP: %s\n", strerror(errno));
> -             bzero(&si->uvmexp, sizeof(si->uvmexp));
> +             memset(&si->uvmexp, 0, sizeof(si->uvmexp));
>       }
>  
>       size = sizeof(si->Total);
>       if (sysctl(vmtotal_mib, 2, &si->Total, &size, NULL, 0) < 0) {
>               error("Can't get VM_METER: %s\n", strerror(errno));
> -             bzero(&si->Total, sizeof(si->Total));
> +             memset(&si->Total, 0, sizeof(si->Total));
>       }
>  }
>  
> @@ -632,7 +632,7 @@ static void
>  allocinfo(struct Info *si)
>  {
>       memset(si, 0, sizeof(*si));
> -     si->intrcnt = calloc(nintr, sizeof(u_quad_t));
> +     si->intrcnt = calloc(nintr, sizeof *si->intrcnt);
>       if (si->intrcnt == NULL)
>               errx(2, "out of memory");
>  }
> @@ -640,11 +640,11 @@ allocinfo(struct Info *si)
>  static void
>  copyinfo(struct Info *from, struct Info *to)
>  {
> -     u_quad_t *intrcnt;
> +     uint64_t *intrcnt;
>  
>       intrcnt = to->intrcnt;
>       *to = *from;
> -     bcopy(from->intrcnt, to->intrcnt = intrcnt, nintr * sizeof (u_quad_t));
> +     memcpy(to->intrcnt = intrcnt, from->intrcnt, nintr * sizeof *intrcnt);

The little *intrcnt is looking for his parens. Seriously, this is
somewhat confusing here without them.


>  }
>  
>  static void
> 

Reply via email to