annotate toys/uname.c @ 370:c7a26e26ad08

Add TOYBOX_SUID.
author Rob Landley <rob@landley.net>
date Tue, 05 Jan 2010 12:17:05 -0600
parents a50d2c0f96ed
children 31215cc6c9f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
326
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
1 /* vi: set sw=4 ts=4:
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
2 *
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
3 * uname.c - return system name
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
4 *
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
5 * Copyright 2008 Rob Landley <rob@landley.net>
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
6 *
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
7 * See http://www.opengroup.org/onlinepubs/009695399/utilities/uname.html
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
8
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
9 USE_UNAME(NEWTOY(uname, "amvrns", TOYFLAG_BIN))
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
10
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
11 config UNAME
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
12 bool "uname"
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
13 default y
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
14 help
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
15 usage: uname [-asnrvmpio]
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
16
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
17 Print system information.
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
18
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
19 -s System name
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
20 -n Network (domain) name
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
21 -r Release number
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
22 -v Version (build date)
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
23 -m Machine (hardware) name
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
24 -a All of the above
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
25 */
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
26
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
27 #include "toys.h"
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
28 #include <sys/utsname.h>
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
29
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
30 // If a 32 bit x86 build environment working in a chroot under an x86-64
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
31 // kernel returns x86_64 for -m it confuses ./configure. Special case it.
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
32
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
33 #if defined(__i686__)
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
34 #define GROSS "i686"
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
35 #elif defined(__i586__)
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
36 #define GROSS "i586"
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
37 #elif defined(__i486__)
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
38 #define GROSS "i486"
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
39 #elif defined(__i386__)
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
40 #define GROSS "i386"
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
41 #endif
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
42
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
43 #define FLAG_a (1<<5)
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
44
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
45 void uname_main(void)
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
46 {
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
47 int i, flags = toys.optflags, needspace=0;
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
48
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
49 uname((void *)toybuf);
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
50
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
51 if (!flags) flags=1;
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
52 for (i=0; i<5; i++) {
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
53 char *c = toybuf+(65*i);
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
54
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
55 if (flags & ((1<<i)|FLAG_a)) {
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
56 int len = strlen(c);
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
57
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
58 // This problem originates in autoconf, so of course the solution
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
59 // is horribly ugly.
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
60 #ifdef GROSS
327
a50d2c0f96ed Fix typo.
Rob Landley <rob@landley.net>
parents: 326
diff changeset
61 if (i==4 && !strcmp(c,"x86_64")) printf(GROSS);
326
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
62 else
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
63 #endif
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
64
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
65 if (needspace++) {
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
66 // We can't decrement on the first entry, because
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
67 // needspace would be 0
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
68 *(--c)=' ';
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
69 len++;
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
70 }
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
71 xwrite(1, c, len);
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
72 }
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
73 }
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
74 putchar('\n');
531b4d716460 Add uname
Rob Landley <rob@landley.net>
parents:
diff changeset
75 }