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

84 lines
2.2 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--- lastcomm.c
+++ lastcomm.c
@@ -48,6 +48,10 @@
#include <pwd.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#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;