Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/time modernize:
details: https://anonhg.NetBSD.org/src/rev/70e9b19d59eb
branches: trunk
changeset: 534098:70e9b19d59eb
user: christos <christos%NetBSD.org@localhost>
date: Tue Jul 16 15:41:57 2002 +0000
description:
modernize:
- use wait4
- KNF
- factor out common printf code
- use err/warn
- use getprogname
diffstat:
usr.bin/time/Makefile | 3 +-
usr.bin/time/time.c | 116 +++++++++++++++++++++++--------------------------
2 files changed, 56 insertions(+), 63 deletions(-)
diffs (196 lines):
diff -r 56bf046d2a2d -r 70e9b19d59eb usr.bin/time/Makefile
--- a/usr.bin/time/Makefile Tue Jul 16 14:20:04 2002 +0000
+++ b/usr.bin/time/Makefile Tue Jul 16 15:41:57 2002 +0000
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.3 1994/12/08 09:36:55 jtc Exp $
+# $NetBSD: Makefile,v 1.4 2002/07/16 15:41:57 christos Exp $
# @(#)Makefile 8.1 (Berkeley) 6/6/93
+WARNS=2
PROG= time
.include <bsd.prog.mk>
diff -r 56bf046d2a2d -r 70e9b19d59eb usr.bin/time/time.c
--- a/usr.bin/time/time.c Tue Jul 16 14:20:04 2002 +0000
+++ b/usr.bin/time/time.c Tue Jul 16 15:41:57 2002 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: time.c,v 1.11 1999/06/05 19:19:19 kleink Exp $ */
+/* $NetBSD: time.c,v 1.12 2002/07/16 15:41:57 christos Exp $ */
/*
* Copyright (c) 1987, 1988, 1993
@@ -43,7 +43,7 @@
#if 0
static char sccsid[] = "@(#)time.c 8.1 (Berkeley) 6/6/93";
#endif
-__RCSID("$NetBSD: time.c,v 1.11 1999/06/05 19:19:19 kleink Exp $");
+__RCSID("$NetBSD: time.c,v 1.12 2002/07/16 15:41:57 christos Exp $");
#endif /* not lint */
#include <sys/types.h>
@@ -51,20 +51,21 @@
#include <sys/resource.h>
#include <sys/wait.h>
#include <errno.h>
+#include <err.h>
#include <locale.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-
-int main __P((int, char **));
-static void usage __P((void));
+int main(int, char **);
+static void usage(void);
+static void prl(long, const char *);
+static void prtv(const char *, const char *, const struct timeval *,
+ const char *);
int
-main(argc, argv)
- int argc;
- char **argv;
+main(int argc, char **argv)
{
int pid;
int ch, status;
@@ -103,24 +104,23 @@
gettimeofday(&before, (struct timezone *)NULL);
switch(pid = vfork()) {
case -1: /* error */
- perror("vfork");
- exit(EXIT_FAILURE);
+ err(EXIT_FAILURE, "Vfork failed");
/* NOTREACHED */
case 0: /* child */
/* LINTED will return only on failure */
execvp(*argv, argv);
- perror(*argv);
- _exit((errno == ENOENT) ? 127 : 126);
+ err((errno == ENOENT) ? 127 : 126, "Can't exec `%s'", *argv);
/* NOTREACHED */
}
/* parent */
(void)signal(SIGINT, SIG_IGN);
(void)signal(SIGQUIT, SIG_IGN);
- while (wait3(&status, 0, &ru) != pid);
- gettimeofday(&after, (struct timezone *)NULL);
+ if ((pid = wait4(pid, &status, 0, &ru)) == -1)
+ err(EXIT_FAILURE, "wait4 %d failed", pid);
+ (void)gettimeofday(&after, (struct timezone *)NULL);
if (!WIFEXITED(status))
- fprintf(stderr, "Command terminated abnormally.\n");
+ warnx("Command terminated abnormally.");
timersub(&after, &before, &after);
if ((lconv = localeconv()) == NULL ||
@@ -128,67 +128,59 @@
decpt = ".";
if (portableflag) {
- fprintf (stderr, "real %9ld%s%02ld\n",
- (long)after.tv_sec, decpt, (long)after.tv_usec/10000);
- fprintf (stderr, "user %9ld%s%02ld\n",
- (long)ru.ru_utime.tv_sec, decpt, (long)ru.ru_utime.tv_usec/10000);
- fprintf (stderr, "sys %9ld%s%02ld\n",
- (long)ru.ru_stime.tv_sec, decpt, (long)ru.ru_stime.tv_usec/10000);
+ prtv("real ", decpt, &after, "\n");
+ prtv("user ", decpt, &ru.ru_utime, "\n");
+ prtv("sys ", decpt, &ru.ru_stime, "\n");
} else {
-
- fprintf(stderr, "%9ld%s%02ld real ",
- (long)after.tv_sec, decpt, (long)after.tv_usec/10000);
- fprintf(stderr, "%9ld%s%02ld user ",
- (long)ru.ru_utime.tv_sec, decpt, (long)ru.ru_utime.tv_usec/10000);
- fprintf(stderr, "%9ld%s%02ld sys\n",
- (long)ru.ru_stime.tv_sec, decpt, (long)ru.ru_stime.tv_usec/10000);
+ prtv("", decpt, &after, " real ");
+ prtv("", decpt, &ru.ru_utime, " user ");
+ prtv("", decpt, &ru.ru_stime, " sys\n");
}
if (lflag) {
int hz = (int)sysconf(_SC_CLK_TCK);
- long ticks;
+ unsigned long long ticks;
+#define SCALE(x) (long)(ticks ? x / ticks : 0)
ticks = hz * (ru.ru_utime.tv_sec + ru.ru_stime.tv_sec) +
hz * (ru.ru_utime.tv_usec + ru.ru_stime.tv_usec) / 1000000;
-
- fprintf(stderr, "%10ld %s\n",
- ru.ru_maxrss, "maximum resident set size");
- fprintf(stderr, "%10ld %s\n", ticks ? ru.ru_ixrss / ticks : 0,
- "average shared memory size");
- fprintf(stderr, "%10ld %s\n", ticks ? ru.ru_idrss / ticks : 0,
- "average unshared data size");
- fprintf(stderr, "%10ld %s\n", ticks ? ru.ru_isrss / ticks : 0,
- "average unshared stack size");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_minflt, "page reclaims");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_majflt, "page faults");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_nswap, "swaps");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_inblock, "block input operations");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_oublock, "block output operations");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_msgsnd, "messages sent");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_msgrcv, "messages received");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_nsignals, "signals received");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_nvcsw, "voluntary context switches");
- fprintf(stderr, "%10ld %s\n",
- ru.ru_nivcsw, "involuntary context switches");
+ prl(ru.ru_maxrss, "maximum resident set size");
+ prl(SCALE(ru.ru_ixrss), "average shared memory size");
+ prl(SCALE(ru.ru_idrss), "average unshared data size");
+ prl(SCALE(ru.ru_isrss), "average unshared stack size");
+ prl(ru.ru_minflt, "page reclaims");
+ prl(ru.ru_majflt, "page faults");
+ prl(ru.ru_nswap, "swaps");
+ prl(ru.ru_inblock, "block input operations");
+ prl(ru.ru_oublock, "block output operations");
+ prl(ru.ru_msgsnd, "messages sent");
+ prl(ru.ru_msgrcv, "messages received");
+ prl(ru.ru_nsignals, "signals received");
+ prl(ru.ru_nvcsw, "voluntary context switches");
+ prl(ru.ru_nivcsw, "involuntary context switches");
}
- exit(WIFEXITED(status) ? WEXITSTATUS(status) : EXIT_FAILURE);
- /* NOTREACHED */
+ return (WIFEXITED(status) ? WEXITSTATUS(status) : EXIT_FAILURE);
}
static void
usage()
{
-
- fprintf(stderr, "usage: time [-lp] utility [argument ...]\n");
+ (void)fprintf(stderr, "Usage: %s [-lp] utility [argument ...]\n",
+ getprogname());
exit(EXIT_FAILURE);
}
+
+static void
+prl(long val, const char *expn)
+{
+ (void)fprintf(stderr, "%10ld %s\n", val, expn);
+}
+
+static void
+prtv(const char *pre, const char *decpt, const struct timeval *tv,
+ const char *post)
+{
+ (void)fprintf(stderr, "%s%9ld%s%02ld%s", pre, (long)tv->tv_sec, decpt,
+ (long)tv->tv_usec / 10000, post);
+}
Home |
Main Index |
Thread Index |
Old Index