#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;
"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) {