1 |
commit: 635e33cdc8f18bb290756633ce0714c496383cfb |
2 |
Author: William Hubbs <w.d.hubbs <AT> gmail <DOT> com> |
3 |
AuthorDate: Tue Dec 1 23:39:04 2015 +0000 |
4 |
Commit: William Hubbs <williamh <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Dec 1 23:39:04 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/openrc.git/commit/?id=635e33cd |
7 |
|
8 |
librc: comsolidate rc_sys_v1 and rc_sys_v2 into rc_sys |
9 |
|
10 |
These functions were never meant to be used outside of OpenRC, and they |
11 |
were added when we thought we were going to do away with the automatic |
12 |
detection of subsystems. Since the autodetection is not going away, we |
13 |
can combine these functions into rc_sys. |
14 |
|
15 |
src/librc/librc.c | 82 ++++++++++++++++++-------------------------------- |
16 |
src/librc/librc.h | 2 -- |
17 |
src/librc/rc.h.in | 8 ----- |
18 |
src/test/rc.funcs.list | 4 --- |
19 |
4 files changed, 30 insertions(+), 66 deletions(-) |
20 |
|
21 |
diff --git a/src/librc/librc.c b/src/librc/librc.c |
22 |
index 8f04313..5e5de8d 100644 |
23 |
--- a/src/librc/librc.c |
24 |
+++ b/src/librc/librc.c |
25 |
@@ -210,14 +210,14 @@ found: |
26 |
} |
27 |
#endif |
28 |
|
29 |
-/* New sys identification code |
30 |
- * Not to be used for any binaries outside of openrc. */ |
31 |
+ |
32 |
const char * |
33 |
-rc_sys_v2(void) |
34 |
+rc_sys(void) |
35 |
{ |
36 |
-#define __STRING_SWITCH(x) { char *__string_switch = x; if (false) {} |
37 |
-#define __STRING_CASE(y) else if (strcmp(__string_switch,y) == 0) |
38 |
-#define __STRING_SWITCH_END() } |
39 |
+#ifdef PREFIX |
40 |
+ return RC_SYS_PREFIX; |
41 |
+#endif |
42 |
+ |
43 |
char *systype = rc_conf_value("rc_sys"); |
44 |
if (systype) { |
45 |
char *s = systype; |
46 |
@@ -227,43 +227,11 @@ rc_sys_v2(void) |
47 |
*s = toupper((unsigned char) *s); |
48 |
s++; |
49 |
} |
50 |
- /* Now do detection */ |
51 |
- __STRING_SWITCH(systype) |
52 |
- __STRING_CASE(RC_SYS_PREFIX) { return RC_SYS_PREFIX; } |
53 |
-#ifdef __FreeBSD__ |
54 |
- __STRING_CASE(RC_SYS_JAIL) { return RC_SYS_JAIL; } |
55 |
-#endif /* __FreeBSD__ */ |
56 |
-#ifdef __NetBSD__ |
57 |
- __STRING_CASE(RC_SYS_XEN0) { return RC_SYS_XEN0; } |
58 |
- __STRING_CASE(RC_SYS_XENU) { return RC_SYS_XENU; } |
59 |
-#endif /* __NetBSD__ */ |
60 |
-#ifdef __linux__ |
61 |
- __STRING_CASE(RC_SYS_XEN0) { return RC_SYS_XEN0; } |
62 |
- __STRING_CASE(RC_SYS_XENU) { return RC_SYS_XENU; } |
63 |
- __STRING_CASE(RC_SYS_UML) { return RC_SYS_UML; } |
64 |
- __STRING_CASE(RC_SYS_VSERVER) { return RC_SYS_VSERVER; } |
65 |
- __STRING_CASE(RC_SYS_OPENVZ) { return RC_SYS_OPENVZ; } |
66 |
- __STRING_CASE(RC_SYS_LXC) { return RC_SYS_LXC; } |
67 |
-#endif /* __linux__ */ |
68 |
- __STRING_SWITCH_END() |
69 |
} |
70 |
-#undef __STRING_SWITCH |
71 |
-#undef __STRING_CASE |
72 |
-#undef __STRING_SWITCH_END |
73 |
- return NULL; |
74 |
-} |
75 |
-librc_hidden_def(rc_sys_v2) |
76 |
- |
77 |
-/* Old sys identification code. |
78 |
- * Not to be used for any binaries outside of openrc. */ |
79 |
-const char * |
80 |
-rc_sys_v1(void) |
81 |
-{ |
82 |
-#ifdef PREFIX |
83 |
- return RC_SYS_PREFIX; |
84 |
-#else |
85 |
|
86 |
#ifdef __FreeBSD__ |
87 |
+ if (systype && strcmp(systype, RC_SYS_JAIL) == 0) |
88 |
+ return RC_SYS_JAIL; |
89 |
int jailed = 0; |
90 |
size_t len = sizeof(jailed); |
91 |
|
92 |
@@ -273,6 +241,12 @@ rc_sys_v1(void) |
93 |
#endif |
94 |
|
95 |
#ifdef __NetBSD__ |
96 |
+ if (systype) { |
97 |
+ if(strcmp(systype, RC_SYS_XEN0) == 0) |
98 |
+ return RC_SYS_XEN0; |
99 |
+ if (strcmp(systype, RC_SYS_XENU) == 0) |
100 |
+ return RC_SYS_XENU; |
101 |
+ } |
102 |
if (exists("/kern/xen/privcmd")) |
103 |
return RC_SYS_XEN0; |
104 |
if (exists("/kern/xen")) |
105 |
@@ -280,6 +254,22 @@ rc_sys_v1(void) |
106 |
#endif |
107 |
|
108 |
#ifdef __linux__ |
109 |
+ if (systype) { |
110 |
+ if (strcmp(systype, RC_SYS_XEN0) == 0) |
111 |
+ return RC_SYS_XEN0; |
112 |
+ if (strcmp(systype, RC_SYS_XENU) == 0) |
113 |
+ return RC_SYS_XENU; |
114 |
+ if (strcmp(systype, RC_SYS_UML) == 0) |
115 |
+ return RC_SYS_UML; |
116 |
+ if (strcmp(systype, RC_SYS_VSERVER) == 0) |
117 |
+ return RC_SYS_VSERVER; |
118 |
+ if (strcmp(systype, RC_SYS_OPENVZ) == 0) |
119 |
+ return RC_SYS_OPENVZ; |
120 |
+ if (strcmp(systype, RC_SYS_LXC) == 0) |
121 |
+ return RC_SYS_LXC; |
122 |
+ if (strcmp(systype, RC_SYS_SYSTEMD_NSPAWN) == 0) |
123 |
+ return RC_SYS_SYSTEMD_NSPAWN; |
124 |
+ } |
125 |
if (exists("/proc/xen")) { |
126 |
if (file_regex("/proc/xen/capabilities", "control_d")) |
127 |
return RC_SYS_XEN0; |
128 |
@@ -301,18 +291,6 @@ rc_sys_v1(void) |
129 |
#endif |
130 |
|
131 |
return NULL; |
132 |
-#endif /* PREFIX */ |
133 |
-} |
134 |
-librc_hidden_def(rc_sys_v1) |
135 |
- |
136 |
-const char * |
137 |
-rc_sys(void) |
138 |
-{ |
139 |
- if (rc_conf_value("rc_sys")) { |
140 |
- return rc_sys_v2(); |
141 |
- } else { |
142 |
- return rc_sys_v1(); |
143 |
- } |
144 |
} |
145 |
librc_hidden_def(rc_sys) |
146 |
|
147 |
|
148 |
diff --git a/src/librc/librc.h b/src/librc/librc.h |
149 |
index 0824eba..01bb740 100644 |
150 |
--- a/src/librc/librc.h |
151 |
+++ b/src/librc/librc.h |
152 |
@@ -130,8 +130,6 @@ librc_hidden_proto(rc_stringlist_new) |
153 |
librc_hidden_proto(rc_stringlist_split) |
154 |
librc_hidden_proto(rc_stringlist_sort) |
155 |
librc_hidden_proto(rc_sys) |
156 |
-librc_hidden_proto(rc_sys_v1) |
157 |
-librc_hidden_proto(rc_sys_v2) |
158 |
librc_hidden_proto(rc_yesno) |
159 |
|
160 |
#endif |
161 |
|
162 |
diff --git a/src/librc/rc.h.in b/src/librc/rc.h.in |
163 |
index e3a586f..141ecb9 100644 |
164 |
--- a/src/librc/rc.h.in |
165 |
+++ b/src/librc/rc.h.in |
166 |
@@ -343,14 +343,6 @@ bool rc_service_daemons_crashed(const char *); |
167 |
* @return string from RC_SYS_* types or NULL if none detected */ |
168 |
const char *rc_sys(void); |
169 |
|
170 |
-/*! Returns the type of subsystem using old automatic code |
171 |
- * @return string from RC_SYS_* types or NULL if none detected */ |
172 |
-const char *rc_sys_v1(void); |
173 |
- |
174 |
-/*! Returns the type of subsystem using new rc.conf rc_sys value |
175 |
- * @return string from RC_SYS_* types or NULL if none detected */ |
176 |
-const char *rc_sys_v2(void); |
177 |
- |
178 |
/*! @name Dependency options |
179 |
* These options can change the services found by the rc_get_depinfo and |
180 |
* rc_get_depends functions. */ |
181 |
|
182 |
diff --git a/src/test/rc.funcs.list b/src/test/rc.funcs.list |
183 |
index f4c90b5..c87e470 100644 |
184 |
--- a/src/test/rc.funcs.list |
185 |
+++ b/src/test/rc.funcs.list |
186 |
@@ -112,9 +112,5 @@ rc_stringlist_split |
187 |
rc_stringlist_split@@RC_1.0 |
188 |
rc_sys |
189 |
rc_sys@@RC_1.0 |
190 |
-rc_sys_v1 |
191 |
-rc_sys_v1@@RC_1.0 |
192 |
-rc_sys_v2 |
193 |
-rc_sys_v2@@RC_1.0 |
194 |
rc_yesno |
195 |
rc_yesno@@RC_1.0 |