summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-02-19 15:51:59 +0000
committerRoy Marples <roy@marples.name>2008-02-19 15:51:59 +0000
commit79d40707dbadaf83b12078c8183824c6ba88a6eb (patch)
tree5d87bd6fba4ee302fd68659c58c0314a467de084
parente1e36b2872c1f87d3d0b5308561884af3cd013ac (diff)
downloadopenrc-79d40707dbadaf83b12078c8183824c6ba88a6eb.tar.gz
openrc-79d40707dbadaf83b12078c8183824c6ba88a6eb.tar.bz2
openrc-79d40707dbadaf83b12078c8183824c6ba88a6eb.tar.xz
Fix compile on Linux.
-rw-r--r--src/librc/librc.c47
-rw-r--r--src/rc/rc-misc.c36
2 files changed, 40 insertions, 43 deletions
diff --git a/src/librc/librc.c b/src/librc/librc.c
index f323d0f..12d3134 100644
--- a/src/librc/librc.c
+++ b/src/librc/librc.c
@@ -147,6 +147,43 @@ static bool rm_dir (const char *pathname, bool top)
return (true);
}
+/* Other systems may need this at some point, but for now it's Linux only */
+#ifdef __linux__
+static bool file_regex (const char *file, const char *regex)
+{
+ FILE *fp;
+ char *line;
+ regex_t re;
+ bool retval = false;
+ int result;
+
+ if (! (fp = fopen (file, "r")))
+ return (false);
+
+ if ((result = regcomp (&re, regex, REG_EXTENDED | REG_NOSUB)) != 0) {
+ fclose (fp);
+ line = xmalloc (sizeof (char) * BUFSIZ);
+ regerror (result, &re, line, BUFSIZ);
+ fprintf (stderr, "file_regex: %s", line);
+ free (line);
+ return (false);
+ }
+
+ while ((line = rc_getline (fp))) {
+ if (regexec (&re, line, 0, NULL, 0) == 0)
+ retval = true;
+ free (line);
+ if (retval)
+ break;
+ }
+ fclose (fp);
+ regfree (&re);
+
+ return (retval);
+}
+#endif
+
+
const char *rc_sys (void)
{
#ifdef __FreeBSD__
@@ -160,13 +197,9 @@ const char *rc_sys (void)
#ifdef __linux__
if (exists ("/proc/xen")) {
- if ((fp = fopen ("/proc/xen/capabilities", "r"))) {
- fclose (fp);
- if (file_regex ("/proc/xen/capabilities", "control_d"))
- return (RC_SYS_XEN0);
- }
- if (! sys[0])
- return (RC_SYS_XENU);
+ if (file_regex ("/proc/xen/capabilities", "control_d"))
+ return (RC_SYS_XEN0);
+ return (RC_SYS_XENU);
} else if (file_regex ("/proc/cpuinfo", "UML"))
return (RC_SYS_UML);
else if (file_regex ("/proc/self/status",
diff --git a/src/rc/rc-misc.c b/src/rc/rc-misc.c
index 1c340dd..f1622fc 100644
--- a/src/rc/rc-misc.c
+++ b/src/rc/rc-misc.c
@@ -235,42 +235,6 @@ char **env_filter (void)
return (env);
}
-/* Other systems may need this at some point, but for now it's Linux only */
-#ifdef __linux__
-static bool file_regex (const char *file, const char *regex)
-{
- FILE *fp;
- char *line;
- regex_t re;
- bool retval = false;
- int result;
-
- if (! (fp = fopen (file, "r")))
- return (false);
-
- if ((result = regcomp (&re, regex, REG_EXTENDED | REG_NOSUB)) != 0) {
- fclose (fp);
- line = xmalloc (sizeof (char) * BUFSIZ);
- regerror (result, &re, line, BUFSIZ);
- fprintf (stderr, "file_regex: %s", line);
- free (line);
- return (false);
- }
-
- while ((line = rc_getline (fp))) {
- if (regexec (&re, line, 0, NULL, 0) == 0)
- retval = true;
- free (line);
- if (retval)
- break;
- }
- fclose (fp);
- regfree (&re);
-
- return (retval);
-}
-#endif
-
char **env_config (void)
{
char **env = NULL;