1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#define FOR_uname
26#include "toys.h"
27
28
29
30
31#if defined(__i686__)
32#define GROSS "i686"
33#elif defined(__i586__)
34#define GROSS "i586"
35#elif defined(__i486__)
36#define GROSS "i486"
37#elif defined(__i386__)
38#define GROSS "i386"
39#endif
40
41void uname_main(void)
42{
43 int i, flags = toys.optflags, needspace=0;
44 struct utsname u;
45
46 uname(&u);
47
48 if (!flags) flags = FLAG_s;
49 for (i=0; i<5; i++) {
50 char *c = ((char *) &u)+(sizeof(u.sysname)*i);
51
52 if (flags & ((1<<i)|FLAG_a)) {
53 int len = strlen(c);
54
55
56
57#ifdef GROSS
58 if (i==4 && !strcmp(c,"x86_64")) {
59 printf(GROSS);
60 continue;
61 }
62#endif
63
64 if (needspace++) {
65
66
67 *(--c)=' ';
68 len++;
69 }
70 xwrite(1, c, len);
71 }
72 }
73 putchar('\n');
74}
75