chiark / gitweb /
Use different struct acct, and different headers, on different platforms.
[chiark-utils.git] / cprogs / acctdump.c
index 151e11d69a79ba667214c9f71d3dafc26edf76d6..566840294c954ca3c2a6e3d8816c470d512f1905 100644 (file)
 #include <sys/stat.h>
 
 typedef unsigned long long u64;
-#include "acct.h"
-/*#include <sys/acct.h>*/
+
+
+/* Sadly this thing is not very portable */
+
+#if defined(__linux__)
+
+#include <sys/types.h>
+#include <sys/acct.h>
+
 typedef struct acct_v3 struct_acct;
 
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/acct.h>
+
+typedef struct acctv2 struct_acct;
+
+#else
+
+#error Do not know what struct_acct to use on this platform
+
+#endif
+
+
 #include "myopt.h"
 
 static int forwards, nobanner, usestdin, raw, usages;
@@ -62,23 +84,11 @@ static const char *sigabbrev[]= {
   "XFSZ", "VTALRM", "PROF", "WINCH", "IO"
 };
 
-static void usage(FILE *file) {
+void usagemessage(void) {
   fputs("usage: acctdump [<options>] [<file> ...]\n"
        "options: -f|--forwards -q|--no-banner -p|--stdin -r|--raw -u|--resource\n",
-       file);
-  if (ferror(file)) { perror("print usage"); exit(8); }
-}
-
-void badusage(const char *fmt, ...) {
-  va_list al;
-
-  fputs("usage error: ",stderr);
-  va_start(al,fmt);
-  vfprintf(stderr,fmt,al);
-  va_end(al);
-  fputs("\n",stderr);
-  usage(stderr);
-  exit(12);
+       stderr);
+  if (ferror(stderr)) { perror("print usage"); exit(8); }
 }
 
 static void checkstdout(void) {