SHA256
1
0
forked from pool/acct
acct/acct-hz.patch

82 lines
2.4 KiB
Diff
Raw Normal View History

Subject: acct-hz.patch
---
lastcomm.c | 14 +++++++++++++-
sa.c | 14 +++++++++++++-
2 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/lastcomm.c b/lastcomm.c
index 276f9fa..993118d 100644
--- a/lastcomm.c
+++ b/lastcomm.c
@@ -49,6 +49,10 @@ MA 02139, USA. */
#include <pwd.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
#include "common.h"
#include "files.h"
#include "uid_hash.h"
@@ -71,7 +75,7 @@ int debugging_enabled = 0; /* Nonzero means print internal
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 +332,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);
diff --git a/sa.c b/sa.c
index 55b1a23..8891a50 100644
--- a/sa.c
+++ b/sa.c
@@ -189,7 +189,7 @@ int dont_read_summary_files = 0;
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)
@@ -1173,6 +1173,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) / (double) hzval;
#endif
--
1.7.7