X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=blobdiff_plain;f=cprogs%2Facctdump.c;h=b9040ac710f91eebe6a83af73262a2027a4e4e29;hp=77e1896f253ad8bbd78032e161eba20e029c4bb3;hb=6f3a1bd6659dd7e724db2e2f18f62bf331e63421;hpb=2189c49e5f192af1255b790fed00adaba6e0970b diff --git a/cprogs/acctdump.c b/cprogs/acctdump.c index 77e1896..b9040ac 100644 --- a/cprogs/acctdump.c +++ b/cprogs/acctdump.c @@ -53,6 +53,7 @@ typedef struct acct_v3 struct_acct; #include typedef struct acctv2 struct_acct; +#define HAVE_AC_IO_MEM #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" +#endif +#ifdef HAVE_AC_IO_MEM + " avg.mem io" #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; + char commbuf[sizeof(as->ac_comm)]; 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("%-16.16s ", as->ac_comm); + + for (i=0; iac_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); @@ -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); +#endif +#ifdef HAVE_AC_IO_MEM + printf(" %4e %4e", + as->ac_mem, + as->ac_io); #endif } putchar('\n');