On 4/9/2011 1:04 PM, Theo de Raadt wrote:
> When you print and off_t, for portability you should use:
>
>      "%lld", (long long)offt
>
>
>

With pleasure,
Steven
Only in /usr/src/usr.bin/rdistd: CVS
diff -uw /usr/src/usr.bin/rdistd/Makefile rdistd/Makefile
--- /usr/src/usr.bin/rdistd/Makefile    Tue May  6 18:10:11 2003
+++ rdistd/Makefile     Mon Mar 28 22:03:04 2011
@@ -4,5 +4,6 @@
 SRCS=  common.c filesys-os.c filesys.c message.c rdistd.c server.c
 .PATH:  ${.CURDIR}/../rdist
 CFLAGS+=-I${.CURDIR}/../rdist -DOS_H=\"os-openbsd.h\"
+#CFLAGS+=-Wall -pedantic
 
 .include <bsd.prog.mk>
diff -uw /usr/src/usr.bin/rdistd/filesys.c rdistd/filesys.c
--- /usr/src/usr.bin/rdistd/filesys.c   Thu Oct 29 00:34:06 2009
+++ rdistd/filesys.c    Mon Mar 28 16:28:11 2011
@@ -402,7 +402,7 @@
  * information.
  */
 int
-getfilesysinfo(char *file, long *freespace, long *freefiles)
+getfilesysinfo(char *file, off_t *freespace, off_t *freefiles)
 {
 #if    defined(STATFS_TYPE)
        static statfs_t statfsbuf;
diff -uw /usr/src/usr.bin/rdistd/server.c rdistd/server.c
--- /usr/src/usr.bin/rdistd/server.c    Thu Oct 29 00:34:06 2009
+++ rdistd/server.c     Sat Apr  9 15:17:21 2011
@@ -41,8 +41,8 @@
 int    catname = 0;            /* cat name to target name */
 char   *sptarget[32];          /* stack of saved ptarget's for directories */
 char   *fromhost = NULL;       /* Client hostname */
-static long min_freespace = 0; /* Minimium free space on a filesystem */
-static long min_freefiles = 0; /* Minimium free # files on a filesystem */
+static off_t   min_freespace = 0;      /* Minimium free space on a filesystem 
*/
+static off_t   min_freefiles = 0;      /* Minimium free # files on a 
filesystem */
 int    oumask;                 /* Old umask */
 
 static int cattarget(char *);
@@ -656,8 +656,8 @@
        case S_IFIFO:
 #endif
 #endif
-               (void) sendcmd(QC_YES, "%ld %ld %o %s %s",
-                              (long) stb.st_size, stb.st_mtime,
+               (void) sendcmd(QC_YES, "%lld %ld %o %s %s",
+                              (long long) stb.st_size, stb.st_mtime,
                               stb.st_mode & 07777,
                               getusername(stb.st_uid, target, options), 
                               getgroupname(stb.st_gid, target, options));
@@ -794,13 +794,13 @@
        wrerr = 0;
        olderrno = 0;
        for (i = 0; i < size; i += BUFSIZ) {
-               int amt = BUFSIZ;
+               size_t  amt = BUFSIZ;
 
                cp = buf;
                if (i + amt > size)
                        amt = size - i;
                do {
-                       int j;
+                       size_t  j;
 
                        j = readrem(cp, amt);
                        if (j <= 0) {
@@ -1350,7 +1350,7 @@
                        fatalerr("Expected digit, got '%s'.", cp);
                        return;
                }
-               min_freespace = (unsigned long) atoi(cp);
+               min_freespace = (off_t) atoll(cp);
                break;
 
        case SC_FREEFILES:      /* Minimium free files */
@@ -1358,7 +1358,7 @@
                        fatalerr("Expected digit, got '%s'.", cp);
                        return;
                }
-               min_freefiles = (unsigned long) atoi(cp);
+               min_freefiles = (off_t) atoll(cp);
                break;
 
        case SC_LOGGING:        /* Logging options */
@@ -1396,7 +1396,7 @@
        char *owner, *group, *file;
        char new[MAXPATHLEN];
        char fileb[MAXPATHLEN];
-       long freespace = -1, freefiles = -1;
+       off_t   freespace = -1, freefiles = -1;
        char *cp = cmd;
 
        /*
@@ -1420,7 +1420,7 @@
        /*
         * Get file size
         */
-       size = strtol(cp, &cp, 10);
+       size = (off_t) strtoll(cp, &cp, 10);
        if (*cp++ != ' ') {
                error("recvit: size not delimited");
                return;
@@ -1429,7 +1429,7 @@
        /*
         * Get modification time
         */
-       mtime = strtol(cp, &cp, 10);
+       mtime = (time_t) strtol(cp, &cp, 10);
        if (*cp++ != ' ') {
                error("recvit: mtime not delimited");
                return;
@@ -1438,7 +1438,7 @@
        /*
         * Get access time
         */
-       atime = strtol(cp, &cp, 10);
+       atime = (time_t) strtol(cp, &cp, 10);
        if (*cp++ != ' ') {
                error("recvit: atime not delimited");
                return;
@@ -1478,8 +1478,8 @@
        file = fileb;
 
        debugmsg(DM_MISC,
-                "recvit: opts = %04o mode = %04o size = %d mtime = %d",
-                opts, mode, size, mtime);
+                "recvit: opts = %04o mode = %04o size = %lld mtime = %d",
+                opts, mode, (long long) size, mtime);
        debugmsg(DM_MISC,
        "recvit: owner = '%s' group = '%s' file = '%s' catname = %d isdir = %d",
                 owner, group, file, catname, (type == S_IFDIR) ? 1 : 0);
@@ -1523,7 +1523,7 @@
         */
        if (min_freespace || min_freefiles) {
                /* Convert file size to kilobytes */
-               long fsize = (long) (size / 1024);
+               off_t   fsize = (off_t) (size / ((off_t) 1024));
 
                if (getfilesysinfo(target, &freespace, &freefiles) != 0)
                        return;
@@ -1535,15 +1535,15 @@
                if (min_freespace && (freespace >= 0) && 
                    (freespace - fsize < min_freespace)) {
                        error(
-                    "%s: Not enough free space on filesystem: min %d free %d",
-                             target, min_freespace, freespace);
+                    "%s: Not enough free space on filesystem: min %lld free 
%lld",
+                             target, (long long) min_freespace, (long long) 
freespace);
                        return;
                }
                if (min_freefiles && (freefiles >= 0) &&
                    (freefiles - 1 < min_freefiles)) {
                        error(
-                    "%s: Not enough free files on filesystem: min %d free %d",
-                             target, min_freefiles, freefiles);
+                    "%s: Not enough free files on filesystem: min %lld free 
%lld",
+                             target, (long long) min_freefiles, (long long) 
freefiles);
                        return;
                }
        }
@@ -1594,7 +1594,7 @@
        /*
         * Get file mode
         */
-       mode = strtol(cp, &cp, 8);
+       mode = (int) strtol(cp, &cp, 8);
        if (*cp++ != ' ') {
                error("dochmog: mode not delimited");
                return;
Only in /usr/src/usr.bin/rdist: CVS
diff -uw /usr/src/usr.bin/rdist/Makefile rdist/Makefile
--- /usr/src/usr.bin/rdist/Makefile     Sun Jan  4 21:55:28 2004
+++ rdist/Makefile      Mon Mar 28 22:03:24 2011
@@ -3,6 +3,7 @@
 
 PROG=  rdist
 CFLAGS+=-I. -I${.CURDIR} -DOS_H=\"os-openbsd.h\"
+#CFLAGS+=-Wall -pedantic
 SRCS=  gram.y child.c client.c common.c distopt.c docmd.c expand.c \
        isexec.c lookup.c message.c rdist.c
 CLEANFILES+=gram.c y.tab.h
diff -uw /usr/src/usr.bin/rdist/child.c rdist/child.c
--- /usr/src/usr.bin/rdist/child.c      Thu Oct 29 00:34:05 2009
+++ rdist/child.c       Sun Mar 27 16:36:19 2011
@@ -177,7 +177,7 @@
 readchild(CHILD *child)
 {
        char rbuf[BUFSIZ];
-       int amt;
+       ssize_t amt;
 
        debugmsg(DM_CALL, "[readchild(%s, %d, %d) start]", 
                 child->c_name, child->c_pid, child->c_readfd);
@@ -196,7 +196,7 @@
         */
        while ((amt = read(child->c_readfd, rbuf, sizeof(rbuf))) > 0) {
                /* XXX remove these debug calls */
-               debugmsg(DM_MISC, "[readchild(%s, %d, %d) got %d bytes]", 
+               debugmsg(DM_MISC, "[readchild(%s, %d, %d) got %ld bytes]", 
                         child->c_name, child->c_pid, child->c_readfd, amt);
 
                (void) xwrite(fileno(stdout), rbuf, amt);
@@ -205,7 +205,7 @@
                         child->c_name, child->c_pid, child->c_readfd);
        }
 
-       debugmsg(DM_MISC, "readchild(%s, %d, %d) done: amt = %d errno = %d\n",
+       debugmsg(DM_MISC, "readchild(%s, %d, %d) done: amt = %ld errno = %d\n",
                 child->c_name, child->c_pid, child->c_readfd, amt, errno);
 
        /* 
diff -uw /usr/src/usr.bin/rdist/client.c rdist/client.c
--- /usr/src/usr.bin/rdist/client.c     Thu Oct 29 00:34:06 2009
+++ rdist/client.c      Sat Apr  9 15:07:05 2011
@@ -399,8 +399,8 @@
         */
        ENCODE(ername, rname);
 
-       (void) sendcmd(C_RECVREG, "%o %04o %ld %ld %ld %s %s %s", 
-                      opts, stb->st_mode & 07777, (long) stb->st_size, 
+       (void) sendcmd(C_RECVREG, "%o %04o %lld %ld %ld %s %s %s", 
+               opts, stb->st_mode & 07777, (long long) stb->st_size,
                       stb->st_mtime, stb->st_atime,
                       user, group, ername);
        if (response() < 0) {
@@ -409,8 +409,8 @@
        }
 
 
-       debugmsg(DM_MISC, "Send file '%s' %ld bytes\n", rname,
-                (long) stb->st_size);
+       debugmsg(DM_MISC, "Send file '%s' %lld bytes\n", rname,
+               (long long) stb->st_size);
 
        /*
         * Set remote time out alarm handler.
@@ -666,8 +666,8 @@
         * Gather and send basic link info
         */
        ENCODE(ername, rname);
-       (void) sendcmd(C_RECVSYMLINK, "%o %04o %ld %ld %ld %s %s %s", 
-                      opts, stb->st_mode & 07777, (long) stb->st_size, 
+       (void) sendcmd(C_RECVSYMLINK, "%o %04o %lld %ld %ld %s %s %s", 
+               opts, stb->st_mode & 07777, (long long) stb->st_size, 
                       stb->st_mtime, stb->st_atime,
                       user, group, ername);
        if (response() < 0)
@@ -869,7 +869,7 @@
        /*
         * Parse size
         */
-       size = (off_t) strtol(cp, (char **)&cp, 10);
+       size = (off_t) strtoll(cp, (char **)&cp, 10);
        if (*cp++ != ' ') {
                error("update: size not delimited");
                return(US_NOTHING);
@@ -878,7 +878,7 @@
        /*
         * Parse mtime
         */
-       mtime = strtol(cp, (char **)&cp, 10);
+       mtime = (time_t) strtol(cp, (char **)&cp, 10);
        if (*cp++ != ' ') {
                error("update: mtime not delimited");
                return(US_NOTHING);
@@ -921,8 +921,8 @@
 
        debugmsg(DM_MISC, "update(%s,) local mode %04o remote mode %04o\n", 
                 rname, lmode, rmode);
-       debugmsg(DM_MISC, "update(%s,) size %ld mtime %d owner '%s' grp '%s'\n",
-                rname, (long) size, mtime, owner, group);
+       debugmsg(DM_MISC, "update(%s,) size %lld mtime %d owner '%s' grp 
'%s'\n",
+               rname, (long long) size, mtime, owner, group);
 
        if (statp->st_mtime != mtime) {
                if (statp->st_mtime < mtime && IS_ON(opts, DO_YOUNGER)) {
@@ -935,8 +935,8 @@
        }
 
        if (statp->st_size != size) {
-               debugmsg(DM_MISC, "size does not match (%ld != %ld).\n",
-                        (long) statp->st_size, (long) size);
+               debugmsg(DM_MISC, "size does not match (%lld != %lld).\n",
+                       (long long) statp->st_size, (long long) size);
                return(US_OUTDATE);
        } 
 
diff -uw /usr/src/usr.bin/rdist/common.c rdist/common.c
--- /usr/src/usr.bin/rdist/common.c     Thu Oct 29 00:34:06 2009
+++ rdist/common.c      Sun Mar 27 16:05:16 2011
@@ -69,7 +69,7 @@
 char                   defgroup[64] = "bin";   /* Default group */
 
 static int sendcmdmsg(int, char *, size_t);
-static int remread(int, u_char *, int);
+static ssize_t remread(int, u_char *, size_t);
 static int remmore(void);
 
 /* 
@@ -354,17 +354,17 @@
  */
 static u_char rembuf[BUFSIZ];
 static u_char *remptr;
-static int remleft;
+static ssize_t remleft;
 
 #define remc() (--remleft < 0 ? remmore() : *remptr++)
 
 /*
  * Back end to remote read()
  */
-static int
-remread(int fd, u_char *buf, int bufsiz)
+static ssize_t
+remread(int fd, u_char *buf, size_t bufsiz)
 {
-       return(read(fd, (char *)buf, bufsiz));
+       return(read(fd, buf, bufsiz));
 }
 
 static int
@@ -452,8 +452,8 @@
 /*
  * Non-line-oriented remote read.
  */
-int
-readrem(char *p, int space)
+ssize_t
+readrem(char *p, size_t space)
 {
        if (remleft <= 0) {
                /*
diff -uw /usr/src/usr.bin/rdist/config-data.h rdist/config-data.h
--- /usr/src/usr.bin/rdist/config-data.h        Mon Jun  2 22:56:14 2003
+++ rdist/config-data.h Sun Mar 27 16:05:11 2011
@@ -82,10 +82,10 @@
  * Set default write(2) return and amount types.
  */
 #if    !defined(WRITE_RETURN_T)
-#define                WRITE_RETURN_T          int     /* What write() returns 
*/
+#define        WRITE_RETURN_T  ssize_t /* What write() returns */
 #endif /* WRITE_RETURN_T */
 #if    !defined(WRITE_AMT_T)
-#define                WRITE_AMT_T             int     /* Amount to write */
+#define WRITE_AMT_T    size_t  /* Amount to write */
 #endif /* WRITE_AMT_T */
 
 #endif /* __configdata_h__ */
diff -uw /usr/src/usr.bin/rdist/defs.h rdist/defs.h
--- /usr/src/usr.bin/rdist/defs.h       Wed Jan  2 12:44:11 2008
+++ rdist/defs.h        Sun Mar 27 16:05:11 2011
@@ -370,7 +370,7 @@
 void sighandler(int);
 int sendcmd(char, char *, ...);
 int remline(u_char *, int, int);
-int readrem(char *, int);
+ssize_t readrem(char *, size_t);
 char *getusername(UID_T, char *, opt_t);
 char *getgroupname(GID_T, char *, opt_t);
 int response(void);
@@ -420,7 +420,7 @@
 int is_nfs_mounted(char *, struct stat *, int *);
 int is_ro_mounted(char *, struct stat *, int *);
 int is_symlinked(char *, struct stat *, int *);
-int getfilesysinfo(char *, long *, long *);
+int getfilesysinfo(char *, off_t *, off_t *);
 
 /* gram.c */
 int yylex(void);
diff -uw /usr/src/usr.bin/rdist/docmd.c rdist/docmd.c
--- /usr/src/usr.bin/rdist/docmd.c      Thu Oct 29 00:34:06 2009
+++ rdist/docmd.c       Sat Apr  9 15:07:05 2011
@@ -308,7 +308,7 @@
        char *ruser, *cp;
        static char *cur_host = NULL;
        extern char *locuser;
-       extern long min_freefiles, min_freespace;
+       extern off_t    min_freefiles, min_freespace;
        extern char *remotemsglist;
        char tuser[BUFSIZ], buf[BUFSIZ];
        u_char respbuff[BUFSIZ];
@@ -404,8 +404,8 @@
                        return(0);
        }
        if (min_freespace) {
-               (void) sendcmd(C_SETCONFIG, "%c%d", SC_FREESPACE, 
-                              min_freespace);
+               (void) sendcmd(C_SETCONFIG, "%c%lld", SC_FREESPACE, 
+                              (long long) min_freespace);
                if (response() < 0)
                        return(0);
        }
diff -uw /usr/src/usr.bin/rdist/rdist.c rdist/rdist.c
--- /usr/src/usr.bin/rdist/rdist.c      Thu Oct 29 00:34:06 2009
+++ rdist/rdist.c       Sun Mar 27 16:05:11 2011
@@ -42,8 +42,8 @@
 char                  *distfile = NULL;                /* Name of distfile to 
use */
 int            maxchildren = MAXCHILDREN;      /* Max no of concurrent PIDs */
 int            nflag = 0;                      /* Say without doing */
-long           min_freespace = 0;              /* Min filesys free space */
-long           min_freefiles = 0;              /* Min filesys free # files */
+off_t  min_freespace = 0;      /* Min filesys free space */
+off_t  min_freefiles = 0;              /* Min filesys free # files */
 FILE                  *fin = NULL;                     /* Input file pointer */
 char           localmsglist[] = "stdout=all:notify=all:syslog=nerror,ferror";
 char                  *remotemsglist = NULL;
@@ -161,7 +161,7 @@
                                usage();
                        }
                        if (c == 'a')
-                               min_freespace = atoi(optarg);
+                               min_freespace = atoll(optarg);
                        else if (c == 'A')
                                min_freefiles = atoi(optarg);
                        else if (c == 'M')

Reply via email to