Changeset View
Changeset View
Standalone View
Standalone View
head/usr.bin/lastcomm/lastcomm.c
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | |||||
#include <unistd.h> | #include <unistd.h> | ||||
#include "pathnames.h" | #include "pathnames.h" | ||||
/*XXX*/#include <inttypes.h> | /*XXX*/#include <inttypes.h> | ||||
time_t expand(u_int); | time_t expand(u_int); | ||||
char *flagbits(int); | char *flagbits(int); | ||||
const char *getdev(dev_t); | const char *getdev(dev_t); | ||||
int readrec_forward(FILE *f, struct acctv2 *av2); | int readrec_forward(FILE *f, struct acctv3 *av3); | ||||
int readrec_backward(FILE *f, struct acctv2 *av2); | int readrec_backward(FILE *f, struct acctv3 *av3); | ||||
int requested(char *[], struct acctv2 *); | int requested(char *[], struct acctv3 *); | ||||
static void usage(void); | static void usage(void); | ||||
#define AC_UTIME 1 /* user */ | #define AC_UTIME 1 /* user */ | ||||
#define AC_STIME 2 /* system */ | #define AC_STIME 2 /* system */ | ||||
#define AC_ETIME 4 /* elapsed */ | #define AC_ETIME 4 /* elapsed */ | ||||
#define AC_CTIME 8 /* user + system time, default */ | #define AC_CTIME 8 /* user + system time, default */ | ||||
#define AC_BTIME 16 /* starting time */ | #define AC_BTIME 16 /* starting time */ | ||||
#define AC_FTIME 32 /* exit time (starting time + elapsed time )*/ | #define AC_FTIME 32 /* exit time (starting time + elapsed time )*/ | ||||
int | int | ||||
main(int argc, char *argv[]) | main(int argc, char *argv[]) | ||||
{ | { | ||||
struct acctv2 ab; | struct acctv3 ab; | ||||
char *p; | char *p; | ||||
FILE *fp; | FILE *fp; | ||||
int (*readrec)(FILE *f, struct acctv2 *av2); | int (*readrec)(FILE *f, struct acctv3 *av3); | ||||
time_t t; | time_t t; | ||||
int ch, rv; | int ch, rv; | ||||
const char *acctfile, *format; | const char *acctfile, *format; | ||||
char buf[1024]; | char buf[1024]; | ||||
int flags = 0; | int flags = 0; | ||||
acctfile = _PATH_ACCT; | acctfile = _PATH_ACCT; | ||||
format = NULL; | format = NULL; | ||||
▲ Show 20 Lines • Show All 137 Lines • ▼ Show 20 Lines | #define BIT(flag, ch) if (f & flag) *p++ = ch | ||||
BIT(ACOMPAT, 'C'); | BIT(ACOMPAT, 'C'); | ||||
BIT(ACORE, 'D'); | BIT(ACORE, 'D'); | ||||
BIT(AXSIG, 'X'); | BIT(AXSIG, 'X'); | ||||
*p = '\0'; | *p = '\0'; | ||||
return (flags); | return (flags); | ||||
} | } | ||||
int | int | ||||
requested(char *argv[], struct acctv2 *acp) | requested(char *argv[], struct acctv3 *acp) | ||||
{ | { | ||||
const char *p; | const char *p; | ||||
do { | do { | ||||
p = user_from_uid(acp->ac_uid, 0); | p = user_from_uid(acp->ac_uid, 0); | ||||
if (!strcmp(p, *argv)) | if (!strcmp(p, *argv)) | ||||
return (1); | return (1); | ||||
if ((p = getdev(acp->ac_tty)) && !strcmp(p, *argv)) | if ((p = getdev(acp->ac_tty)) && !strcmp(p, *argv)) | ||||
Show All 30 Lines |