diff options
Diffstat (limited to 'uname.c')
-rw-r--r-- | uname.c | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/uname.c b/uname.c deleted file mode 100644 index f7e2291a8..000000000 --- a/uname.c +++ /dev/null | |||
@@ -1,156 +0,0 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* uname -- print system information | ||
3 | Copyright (C) 1989-1999 Free Software Foundation, Inc. | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2, or (at your option) | ||
8 | any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software Foundation, | ||
17 | Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | ||
18 | |||
19 | /* Option Example | ||
20 | |||
21 | -s, --sysname SunOS | ||
22 | -n, --nodename rocky8 | ||
23 | -r, --release 4.0 | ||
24 | -v, --version | ||
25 | -m, --machine sun | ||
26 | -a, --all SunOS rocky8 4.0 sun | ||
27 | |||
28 | The default behavior is equivalent to `-s'. | ||
29 | |||
30 | David MacKenzie <djm@gnu.ai.mit.edu> */ | ||
31 | |||
32 | /* Busyboxed by Erik Andersen */ | ||
33 | |||
34 | #include <stdio.h> | ||
35 | #include <stdlib.h> | ||
36 | #include <string.h> | ||
37 | #include <sys/types.h> | ||
38 | #include <sys/utsname.h> | ||
39 | |||
40 | #if defined (HAVE_SYSINFO) && defined (HAVE_SYS_SYSTEMINFO_H) | ||
41 | # include <sys/systeminfo.h> | ||
42 | #endif | ||
43 | #include "busybox.h" | ||
44 | |||
45 | static void print_element(unsigned int mask, char *element); | ||
46 | |||
47 | /* Values that are bitwise or'd into `toprint'. */ | ||
48 | /* Operating system name. */ | ||
49 | static const int PRINT_SYSNAME = 1; | ||
50 | |||
51 | /* Node name on a communications network. */ | ||
52 | static const int PRINT_NODENAME = 2; | ||
53 | |||
54 | /* Operating system release. */ | ||
55 | static const int PRINT_RELEASE = 4; | ||
56 | |||
57 | /* Operating system version. */ | ||
58 | static const int PRINT_VERSION = 8; | ||
59 | |||
60 | /* Machine hardware name. */ | ||
61 | static const int PRINT_MACHINE = 16; | ||
62 | |||
63 | /* Host processor type. */ | ||
64 | static const int PRINT_PROCESSOR = 32; | ||
65 | |||
66 | /* Mask indicating which elements of the name to print. */ | ||
67 | static unsigned char toprint; | ||
68 | |||
69 | |||
70 | int uname_main(int argc, char **argv) | ||
71 | { | ||
72 | struct utsname name; | ||
73 | char processor[256]; | ||
74 | |||
75 | #if defined(__sparc__) && defined(__linux__) | ||
76 | char *fake_sparc = getenv("FAKE_SPARC"); | ||
77 | #endif | ||
78 | |||
79 | toprint = 0; | ||
80 | |||
81 | /* Parse any options */ | ||
82 | //fprintf(stderr, "argc=%d, argv=%s\n", argc, *argv); | ||
83 | while (--argc > 0 && **(++argv) == '-') { | ||
84 | while (*(++(*argv))) { | ||
85 | switch (**argv) { | ||
86 | case 's': | ||
87 | toprint |= PRINT_SYSNAME; | ||
88 | break; | ||
89 | case 'n': | ||
90 | toprint |= PRINT_NODENAME; | ||
91 | break; | ||
92 | case 'r': | ||
93 | toprint |= PRINT_RELEASE; | ||
94 | break; | ||
95 | case 'v': | ||
96 | toprint |= PRINT_VERSION; | ||
97 | break; | ||
98 | case 'm': | ||
99 | toprint |= PRINT_MACHINE; | ||
100 | break; | ||
101 | case 'p': | ||
102 | toprint |= PRINT_PROCESSOR; | ||
103 | break; | ||
104 | case 'a': | ||
105 | toprint = (PRINT_SYSNAME | PRINT_NODENAME | PRINT_RELEASE | | ||
106 | PRINT_PROCESSOR | PRINT_VERSION | | ||
107 | PRINT_MACHINE); | ||
108 | break; | ||
109 | default: | ||
110 | show_usage(); | ||
111 | } | ||
112 | } | ||
113 | } | ||
114 | |||
115 | if (toprint == 0) | ||
116 | toprint = PRINT_SYSNAME; | ||
117 | |||
118 | if (uname(&name) == -1) | ||
119 | perror_msg("cannot get system name"); | ||
120 | |||
121 | #if defined (HAVE_SYSINFO) && defined (SI_ARCHITECTURE) | ||
122 | if (sysinfo(SI_ARCHITECTURE, processor, sizeof(processor)) == -1) | ||
123 | perror_msg("cannot get processor type"); | ||
124 | } | ||
125 | |||
126 | #else | ||
127 | strcpy(processor, "unknown"); | ||
128 | #endif | ||
129 | |||
130 | #if defined(__sparc__) && defined(__linux__) | ||
131 | if (fake_sparc != NULL | ||
132 | && (fake_sparc[0] == 'y' | ||
133 | || fake_sparc[0] == 'Y')) strcpy(name.machine, "sparc"); | ||
134 | #endif | ||
135 | |||
136 | print_element(PRINT_SYSNAME, name.sysname); | ||
137 | print_element(PRINT_NODENAME, name.nodename); | ||
138 | print_element(PRINT_RELEASE, name.release); | ||
139 | print_element(PRINT_VERSION, name.version); | ||
140 | print_element(PRINT_MACHINE, name.machine); | ||
141 | print_element(PRINT_PROCESSOR, processor); | ||
142 | |||
143 | return EXIT_SUCCESS; | ||
144 | } | ||
145 | |||
146 | /* If the name element set in MASK is selected for printing in `toprint', | ||
147 | print ELEMENT; then print a space unless it is the last element to | ||
148 | be printed, in which case print a newline. */ | ||
149 | |||
150 | static void print_element(unsigned int mask, char *element) | ||
151 | { | ||
152 | if (toprint & mask) { | ||
153 | toprint &= ~mask; | ||
154 | printf("%s%c", element, toprint ? ' ' : '\n'); | ||
155 | } | ||
156 | } | ||