chiark
/
gitweb
/
~ian
/
chiark-utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-cache-proxy: New --serve-timeout option.
[chiark-utils.git]
/
cprogs
/
acctdump.c
diff --git
a/cprogs/acctdump.c
b/cprogs/acctdump.c
index 77e1896f253ad8bbd78032e161eba20e029c4bb3..b9040ac710f91eebe6a83af73262a2027a4e4e29 100644
(file)
--- a/
cprogs/acctdump.c
+++ b/
cprogs/acctdump.c
@@
-53,6
+53,7
@@
typedef struct acct_v3 struct_acct;
#include <sys/acct.h>
typedef struct acctv2 struct_acct;
#include <sys/acct.h>
typedef struct acctv2 struct_acct;
+#define HAVE_AC_IO_MEM
#define FIELD_AC_FLAG(as) ((as)->ac_flagx & ~ANVER)
#else
#define FIELD_AC_FLAG(as) ((as)->ac_flagx & ~ANVER)
#else
@@
-183,6
+184,9
@@
static void printbanner(void) {
fputs(" user time sys time elap time "
#ifdef HAVE_AC_FLT
" minflt maxflt"
fputs(" user time sys time elap time "
#ifdef HAVE_AC_FLT
" minflt maxflt"
+#endif
+#ifdef HAVE_AC_IO_MEM
+ " avg.mem io"
#endif
, stdout);
}
#endif
, stdout);
}
@@
-201,17
+205,26
@@
static void printrecord(const struct_acct *as, const char *filename) {
struct passwd *pw;
struct group *gr;
time_t btime;
struct passwd *pw;
struct group *gr;
time_t btime;
+ char commbuf[sizeof(as->ac_comm)];
if (raw) {
printf("%10lu ",(unsigned long)as->ac_btime);
} else {
btime= as->ac_btime;
tm= localtime(&btime);
if (raw) {
printf("%10lu ",(unsigned long)as->ac_btime);
} else {
btime= as->ac_btime;
tm= localtime(&btime);
- strftime(buf,sizeof(buf),"%Y-%m-%d %H:%M:%S",tm); buf[sizeof(buf)-1]= 0;
+ if (tm) {
+ strftime(buf,sizeof(buf),"%Y-%m-%d %H:%M:%S",tm); buf[sizeof(buf)-1]= 0;
+ } else {
+ snprintf(buf,sizeof(buf),"@%lu",(unsigned long)btime);
+ }
printf("%19s ",buf);
}
printf("%19s ",buf);
}
-
- printf("%-16.16s ", as->ac_comm);
+
+ for (i=0; i<sizeof(as->ac_comm); i++) {
+ int c=as->ac_comm[i];
+ commbuf[i]= ((c!=0 && c<=32) || c>=127) ? '?' : c;
+ }
+ printf("%-*.*s ", (int)sizeof(commbuf),(int)sizeof(commbuf), commbuf);
pw= raw ? 0 : getpwuid(as->ac_uid);
if (pw) printf("%-8s ",pw->pw_name);
pw= raw ? 0 : getpwuid(as->ac_uid);
if (pw) printf("%-8s ",pw->pw_name);
@@
-303,6
+316,11
@@
static void printrecord(const struct_acct *as, const char *filename) {
printf(" %8lu %8lu",
(unsigned long)as->ac_minflt,
(unsigned long)as->ac_majflt);
printf(" %8lu %8lu",
(unsigned long)as->ac_minflt,
(unsigned long)as->ac_majflt);
+#endif
+#ifdef HAVE_AC_IO_MEM
+ printf(" %4e %4e",
+ as->ac_mem,
+ as->ac_io);
#endif
}
putchar('\n');
#endif
}
putchar('\n');