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
26
27
28
29
30
31
32
33
34#define FOR_uname
35#define FORCE_FLAGS
36#include "toys.h"
37
38
39
40
41#if defined(__i686__)
42#define GROSS "i686"
43#elif defined(__i586__)
44#define GROSS "i586"
45#elif defined(__i486__)
46#define GROSS "i486"
47#elif defined(__i386__)
48#define GROSS "i386"
49#endif
50
51void uname_main(void)
52{
53 int i, flags = toys.optflags, needspace=0;
54 struct utsname u;
55
56 uname(&u);
57
58 if (!flags) flags = FLAG_s;
59 for (i=0; i<5; i++) {
60 char *c = ((char *) &u)+(sizeof(u.sysname)*i);
61
62 if (flags & ((1<<i)|FLAG_a)) {
63 int len = strlen(c);
64
65
66
67#ifdef GROSS
68 if (i==4 && !strcmp(c,"x86_64")) {
69 printf(GROSS);
70 continue;
71 }
72#endif
73
74 if (needspace++) {
75
76
77 *(--c)=' ';
78 len++;
79 }
80 xwrite(1, c, len);
81 }
82 }
83 putchar('\n');
84}
85
86void arch_main(void)
87{
88 toys.optflags = FLAG_m;
89 uname_main();
90}
91