--- lastcomm.c +++ lastcomm.c @@ -48,6 +48,10 @@ #include +#ifdef HAVE_UNISTD_H +#include +#endif + #include "common.h" #include "uid_hash.h" #include "dev_hash.h" @@ -65,7 +69,7 @@ int strict_match_flag = 0; /* Nonzero if each record has to match all items on the command line */ int print_controls = 0; /* don't print control characters */ -int ahz = AHZ; /* for viewing logs from another system */ +int ahz = 0; /* for viewing logs from another system */ char *program_name; /* name of the program, for usage & errs */ @@ -88,7 +92,6 @@ int get_entry PARAMS((struct acct **)); int desired_entry PARAMS((char *, char *, char *)); - /* code */ void @@ -288,6 +291,14 @@ print_pacct_record (rec, stddebug); } + if (!ahz) // if this is the first cycle run, ahz is not set yet + { + if (rec->ac_version == 3) + ahz = 100; // value AHZ = 100 is hardcoded in acct.h, but in #ifdef __KERNEL__ block. too bad + else + ahz = sysconf(_SC_CLK_TCK); + } + if (desired_entry (this_uid, this_dev, rec->ac_comm)) { #ifdef HAVE_COMP_T --- sa.c +++ sa.c @@ -174,7 +174,7 @@ int print_users = 0; int percentages = 0; /* include percentages in printout */ int user_summary_flag = 0; /* are we printing a user summary? */ -int ahz = AHZ; /* for viewing logs from another system */ +int ahz = 0; /* for viewing logs from another system */ #if defined(HAVE_ACUTIME) && defined(HAVE_ACSTIME) @@ -262,7 +262,6 @@ int ask_if_junkable PARAMS((char *, int)); - /* code */ void @@ -1116,6 +1115,18 @@ /* loop while there are entries to be had */ while ((rec = pacct_get_entry ()) != NULL) { + if (!ahz) // if this is the first cycle run, ahz is not set yet + { + if (rec->ac_version == 3) + ahz = 100; // value AHZ = 100 is hardcoded in acct.h, but in #ifdef __KERNEL__ block. too bad + else + ahz = sysconf(_SC_CLK_TCK); + + if (debugging_enabled) + { + fprintf (stddebug, "AHZ -> %d\n", ahz); + } + } #ifdef HAVE_ACUTIME # ifdef ACUTIME_COMPT double ut = comp_t_2_double (rec->ac_utime) / (double) ahz;