=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/kdump/kdump.c,v retrieving revision 1.16 retrieving revision 1.17 diff -c -r1.16 -r1.17 *** src/usr.bin/kdump/kdump.c 2002/06/12 06:07:15 1.16 --- src/usr.bin/kdump/kdump.c 2002/06/23 20:01:25 1.17 *************** *** 1,4 **** ! /* $OpenBSD: kdump.c,v 1.16 2002/06/12 06:07:15 mpech Exp $ */ /*- * Copyright (c) 1988, 1993 --- 1,4 ---- ! /* $OpenBSD: kdump.c,v 1.17 2002/06/23 20:01:25 deraadt Exp $ */ /*- * Copyright (c) 1988, 1993 *************** *** 43,49 **** #if 0 static char sccsid[] = "@(#)kdump.c 8.4 (Berkeley) 4/28/95"; #endif ! static char *rcsid = "$OpenBSD: kdump.c,v 1.16 2002/06/12 06:07:15 mpech Exp $"; #endif /* not lint */ #include --- 43,49 ---- #if 0 static char sccsid[] = "@(#)kdump.c 8.4 (Berkeley) 4/28/95"; #endif ! static char *rcsid = "$OpenBSD: kdump.c,v 1.17 2002/06/23 20:01:25 deraadt Exp $"; #endif /* not lint */ #include *************** *** 70,75 **** --- 70,76 ---- int timestamp, decimal, fancy = 1, tail, maxdata; char *tracefile = DEF_TRACEFILE; struct ktr_header ktr_header; + pid_t pid = -1; #define eqs(s1, s2) (strcmp((s1), (s2)) == 0) *************** *** 158,174 **** static void usage(void); int ! main(argc, argv) ! int argc; ! char *argv[]; { ! int ch, ktrlen, size; ! void *m; int trpoints = ALL_POINTS; current = &emulations[0]; /* native */ ! while ((ch = getopt(argc, argv, "e:f:dlm:nRTt:")) != -1) switch (ch) { case 'e': setemul(optarg); --- 159,173 ---- static void usage(void); int ! main(int argc, char *argv[]) { ! int ch, ktrlen, size, silent; int trpoints = ALL_POINTS; + void *m; current = &emulations[0]; /* native */ ! while ((ch = getopt(argc, argv, "e:f:dlm:nRp:Tt:")) != -1) switch (ch) { case 'e': setemul(optarg); *************** *** 188,193 **** --- 187,195 ---- case 'n': fancy = 0; break; + case 'p': + pid = atoi(optarg); + break; case 'R': timestamp = 2; /* relative timestamp */ break; *************** *** 211,217 **** if (!freopen(tracefile, "r", stdin)) err(1, "%s", tracefile); while (fread_tail(&ktr_header, sizeof(struct ktr_header), 1)) { ! if (trpoints & (1<ktr_type) { --- 274,283 ---- } static void ! dumpheader(struct ktr_header *kth) { static struct timeval prevtime; + char unknown[64], *type; struct timeval temp; switch (kth->ktr_type) { *************** *** 299,305 **** type = "EMUL"; break; default: ! (void)sprintf(unknown, "UNKNOWN(%d)", kth->ktr_type); type = unknown; } --- 303,310 ---- type = "EMUL"; break; default: ! (void)snprintf(unknown, sizeof unknown, "UNKNOWN(%d)", ! kth->ktr_type); type = unknown; } *************** *** 317,324 **** } static void ! ioctldecode(cmd) ! u_long cmd; { char dirbuf[4], *dir = dirbuf; --- 322,328 ---- } static void ! ioctldecode(u_long cmd) { char dirbuf[4], *dir = dirbuf; *************** *** 337,344 **** } static void ! ktrsyscall(ktr) ! struct ktr_syscall *ktr; { int argsize = ktr->ktr_argsize; register_t *ap; --- 341,347 ---- } static void ! ktrsyscall(struct ktr_syscall *ktr) { int argsize = ktr->ktr_argsize; register_t *ap; *************** *** 353,358 **** --- 356,362 ---- if (fancy) { if (ktr->ktr_code == SYS_ioctl) { const char *cp; + if (decimal) (void)printf("(%ld", (long)*ap); else *************** *** 392,399 **** } static void ! ktrsysret(ktr) ! struct ktr_sysret *ktr; { int ret = ktr->ktr_retval; int error = ktr->ktr_error; --- 396,402 ---- } static void ! ktrsysret(struct ktr_sysret *ktr) { int ret = ktr->ktr_retval; int error = ktr->ktr_error; *************** *** 428,444 **** } static void ! ktrnamei(cp, len) ! const char *cp; ! int len; { (void)printf("\"%.*s\"\n", len, cp); } static void ! ktremul(cp, len) ! char *cp; ! int len; { char name[1024]; --- 431,443 ---- } static void ! ktrnamei(const char *cp, int len) { (void)printf("\"%.*s\"\n", len, cp); } static void ! ktremul(char *cp, int len) { char name[1024]; *************** *** 453,469 **** } static void ! ktrgenio(ktr, len) ! struct ktr_genio *ktr; ! int len; { - int datalen = len - sizeof (struct ktr_genio); char *dp = (char *)ktr + sizeof (struct ktr_genio); ! char *cp; ! int col = 0; ! int width; ! char visbuf[5]; static int screenwidth = 0; if (screenwidth == 0) { struct winsize ws; --- 452,464 ---- } static void ! ktrgenio(struct ktr_genio *ktr, int len) { char *dp = (char *)ktr + sizeof (struct ktr_genio); ! int datalen = len - sizeof (struct ktr_genio); static int screenwidth = 0; + int col = 0, width; + char visbuf[5], *cp; if (screenwidth == 0) { struct winsize ws; *************** *** 483,488 **** --- 478,484 ---- for (; datalen > 0; datalen--, dp++) { (void) vis(visbuf, *dp, VIS_CSTYLE, *(dp+1)); cp = visbuf; + /* * Keep track of printables and * space chars (like fold(1)). *************** *** 491,497 **** (void)putchar('\t'); col = 8; } ! switch(*cp) { case '\n': col = 0; (void)putchar('\n'); --- 487,493 ---- (void)putchar('\t'); col = 8; } ! switch (*cp) { case '\n': col = 0; (void)putchar('\n'); *************** *** 517,524 **** } static void ! ktrpsig(psig) ! struct ktr_psig *psig; { (void)printf("SIG%s ", sys_signame[psig->signo]); if (psig->action == SIG_DFL) --- 513,519 ---- } static void ! ktrpsig(struct ktr_psig *psig) { (void)printf("SIG%s ", sys_signame[psig->signo]); if (psig->action == SIG_DFL) *************** *** 541,567 **** } static void ! ktrcsw(cs) ! struct ktr_csw *cs; { (void)printf("%s %s\n", cs->out ? "stop" : "resume", cs->user ? "user" : "kernel"); } static void ! usage() { (void)fprintf(stderr, ! "usage: kdump [-dnlRT] [-e emulation] [-f trfile] [-m maxdata] [-t [cnis]]\n"); exit(1); } static void ! setemul(name) ! const char *name; { int i; for (i = 0; emulations[i].name != NULL; i++) if (strcmp(emulations[i].name, name) == 0) { current = &emulations[i]; --- 536,561 ---- } static void ! ktrcsw(struct ktr_csw *cs) { (void)printf("%s %s\n", cs->out ? "stop" : "resume", cs->user ? "user" : "kernel"); } static void ! usage(void) { (void)fprintf(stderr, ! "usage: kdump [-dnlRT] [-e emulation] [-p pid] [-f trfile] [-m maxdata] [-t [cnis]]\n"); exit(1); } static void ! setemul(const char *name) { int i; + for (i = 0; emulations[i].name != NULL; i++) if (strcmp(emulations[i].name, name) == 0) { current = &emulations[i];