Date: Wed, 9 Aug 2000 00:59:29 +0100 From: Mark Ovens <marko@freebsd.org> To: current@freebsd.org Subject: Request for review/comments - new option for uname(1) Message-ID: <20000809005929.K250@parish>
index | next in thread | raw e-mail
[-- Attachment #1 --]
The output of ``uname -a'' appears in hundreds of e-mails and PRs yet
the output format is not ideal for this (especially e-mail in
80-column mail readers) as it is a single line.
Attached is a patch for an enhancement I've made that adds a new
option ``-A'' (rather than change ``-a'') that splits it up into 3
lines thus making it better for including verbatim in e-mails and PRs:
# uname -A
FreeBSD parish 4.1-STABLE FreeBSD 4.1-STABLE #0:
Tue Aug 8 00:51:02 BST 2000
mark@parish:/usr/src/sys/compile/PARISH i386
The only thing I couldn't work out is why sysctl() adds 5 spaces after
the date sub-string, so I've haven't stripped them out (hence the
indented third line).
Is there any reason why this is unacceptable and could not be committed?
BTW, please Cc: me.
Thanks for your time.
--
4.4 - The number of the Beastie
________________________________________________________________
51.44°N FreeBSD - The Power To Serve http://www.freebsd.org
2.057°W My Webpage http://ukug.uk.freebsd.org/~mark
mailto:marko@freebsd.org http://www.radan.com
[-- Attachment #2 --]
--- uname.c.orig Tue Aug 8 21:32:36 2000
+++ uname.c Tue Aug 8 21:53:20 2000
@@ -61,16 +61,20 @@
#define RFLAG 0x04
#define SFLAG 0x08
#define VFLAG 0x10
+#define AFLAG 0x20
u_int flags;
int ch, mib[2];
size_t len, tlen;
char *p, *prefix, buf[1024];
flags = 0;
- while ((ch = getopt(argc, argv, "amnprsv")) != -1)
+ while ((ch = getopt(argc, argv, "Aamnprsv")) != -1)
switch(ch) {
+ case 'A':
case 'a':
flags |= (MFLAG | NFLAG | RFLAG | SFLAG | VFLAG);
+ if (ch == 'A')
+ flags |= AFLAG;
break;
case 'p':
case 'm':
@@ -137,9 +141,22 @@
len = sizeof(buf);
if (sysctl(mib, 2, &buf, &len, NULL, 0) == -1)
err(1, "sysctl");
- for (p = buf, tlen = len; tlen--; ++p)
- if (*p == '\n' || *p == '\t')
- *p = ' ';
+
+ if (flags & AFLAG) {
+ for (p = buf, tlen = len; tlen--; ++p)
+ if (*p == ':') {
+ *++p = '\n';
+ break;
+ }
+
+ if (buf[strlen(buf) - 1] == '\n')
+ buf[strlen(buf) - 1] = '\0';
+ } else {
+ for (p = buf, tlen = len; tlen--; ++p)
+ if (*p == '\n' || *p == '\t')
+ *p = ' ';
+ }
+
(void)printf("%s%.*s", prefix, (int)len, buf);
prefix = " ";
}
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000809005929.K250>
