chiark / gitweb /
Tolerate lack of ac_exitcode.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 26 Oct 2014 23:46:18 +0000 (23:46 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 26 Oct 2014 23:46:18 +0000 (23:46 +0000)
cprogs/acctdump.c
debian/changelog

index 5668402..7139922 100644 (file)
@@ -42,6 +42,7 @@ typedef unsigned long long u64;
 #include <sys/acct.h>
 
 typedef struct acct_v3 struct_acct;
+#define HAVE_AC_EXITCODE
 
 #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
 
@@ -77,12 +78,14 @@ static const struct cmdinfo cmdinfos[]= {
   {  0                                                 }
 };
 
+#ifdef HAVE_AC_EXITCODE
 static const char *sigabbrev[]= {
   "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE",
   "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT",
   "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU",
   "XFSZ", "VTALRM", "PROF", "WINCH", "IO"
 };
+#endif
 
 void usagemessage(void) {
   fputs("usage: acctdump [<options>] [<file> ...]\n"
@@ -160,12 +163,18 @@ static int walkdev_cptr(const void *av, const void *bv) {
 static void printbanner(void) {
   if (raw) {
     fputs("begin date command          "
-         "uid      gid      tty dev  FSDX exit",
-         stdout);
+         "uid      gid      tty dev  FSDX "
+#ifdef HAVE_AC_EXITCODE
+         "exit"
+#endif
+         , stdout);
   } else {
     fputs("begin date and time command          "
-         "user     group    tty dev    FSDX sigexit",
-         stdout);
+         "user     group    tty dev    FSDX "
+#ifdef HAVE_AC_EXITCODE
+         "sigexit"
+#endif
+         , stdout);
   }
   if (usages) {
     fputs("  user time   sys time  elap time   minflt   maxflt",
@@ -178,7 +187,7 @@ static void printbanner(void) {
 static void printrecord(const struct_acct *as, const char *filename) {
   static int walkeddev;
 
-  int i, dc, r;
+  int i, r;
   const char *fp;
   char buf[100];
   struct tm *tm;
@@ -245,7 +254,9 @@ static void printrecord(const struct_acct *as, const char *filename) {
     printf("#%x",r);
   }
   putchar(' ');
-  
+
+#ifdef HAVE_AC_EXITCODE
+  int dc;
   dc= WCOREDUMP(as->ac_exitcode) ? 'd' : 'k';
   if (raw) {
     if (WIFEXITED(as->ac_exitcode)) {
@@ -275,6 +286,7 @@ static void printrecord(const struct_acct *as, const char *filename) {
       printf("#%04lx",(unsigned long)as->ac_exitcode);
     }
   }
+#endif /*HAVE_AC_EXITCODE*/
 
   if (usages) {
     printf(" %10lu %10lu %10lu %8ld %8ld",
index e140080..9350f09 100644 (file)
@@ -4,6 +4,7 @@ chiark-utils (4.4.1) unstable; urgency=low
   * Do not build on platforms with no <sys/acct.h>
   * Use different struct acct, and different headers, on different
     platforms.
+  * Tolerate lack of ac_exitcode.
 
  --