Blob Blame History Raw
Subject: acct-hz.patch

---
 lastcomm.c |   14 +++++++++++++-
 sa.c       |   14 +++++++++++++-
 2 files changed, 26 insertions(+), 2 deletions(-)

Index: lastcomm.c
===================================================================
--- lastcomm.c.orig
+++ lastcomm.c
@@ -71,7 +71,7 @@ int debugging_enabled = 0;	/* Nonzero me
 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 */
 
@@ -328,6 +328,14 @@ void parse_entries(void)
           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))
         {
           double ut = ACUTIME_2_DOUBLE (rec->ac_utime);
Index: sa.c
===================================================================
--- sa.c.orig
+++ sa.c
@@ -191,7 +191,7 @@ int print_users = 0;
 int percentages = 0;		/* include percentages in printout */
 int user_summary_flag = 0;	/* are we printing a user summary? */
 int group_summary_flag = 0;	/* are we printing a group 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)
@@ -1180,6 +1180,18 @@ void parse_acct_entries (void)
   /* 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
       double ut = comp_t_2_double (rec->ac_utime) / CURR_AHZ;
 #endif