* dump-utmp.c: Fix some off-by-one errors. Handle cases where we
authorTom Yu <tlyu@mit.edu>
Fri, 4 May 2001 04:22:50 +0000 (04:22 +0000)
committerTom Yu <tlyu@mit.edu>
Fri, 4 May 2001 04:22:50 +0000 (04:22 +0000)
have utmpname() but not utmpname().

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13230 dc483132-0cff-0310-8789-dd5450dbe970

src/util/pty/ChangeLog
src/util/pty/dump-utmp.c

index 42f3a69eb255e146033b9797914733bd08c43018..41e6a34562d5fab86e831b18e261134ce05bfa93 100644 (file)
@@ -1,5 +1,8 @@
 2001-05-04  Tom Yu  <tlyu@mit.edu>
 
+       * dump-utmp.c: Fix some off-by-one errors.  Handle cases where we
+       have utmpname() but not utmpname().
+
        * pty-int.h: Fix typo; VHANG_first -> VHANG_FIRST.
 
        * open_slave.c (pty_open_slave): Add workaround for Tru64 v5.0,
index 81bb49ce284b144963a305d5adaa342590189316..6847ac9bce9253a66ab6931e0945008ea9915586 100644 (file)
@@ -231,13 +231,8 @@ main(int argc, char **argv)
            perror(fn);
            exit(1);
        }
-       do {
-           nread = read(f, &u, recsize);
-           if (nread == -1) {
-               perror("read");
-               exit(1);
-           }
-           if (nread && nread < recsize) {
+       while ((nread = read(f, &u, recsize)) > 0) {
+           if (nread < recsize) {
                fprintf(stderr, "short read");
                close(f);
                exit(1);
@@ -251,15 +246,24 @@ main(int argc, char **argv)
            } else {
                print_ut(all, &u.ut);
            }
-       } while (nread);
+       }
+       if (nread == -1) {
+           perror("read");
+           exit(1);
+       }
        close(f);
     } else {
        if (is_utmpx) {
-#if defined(UTMPX) && defined(UTN)
+#ifdef UTMPX
+#ifdef HAVE_UTMPXNAME
            utmpxname(fn);
            setutxent();
            while ((utxp = getutxent()) != NULL)
                print_utx(all, utxp);
+#else
+           fprintf(stderr, "no utmpxname(); can't use getutxent()\n");
+           exit(1);
+#endif
 #else
            abort();
 #endif
@@ -270,7 +274,8 @@ main(int argc, char **argv)
            while ((utp = getutent()) != NULL)
                print_ut(all, utp);
 #else
-           abort();
+           fprintf(stderr, "no utmpname(); can't use getutent()\n");
+           exit(1);
 #endif
        }
     }