diff options
| -rw-r--r-- | src/librc/librc.c | 47 | ||||
| -rw-r--r-- | src/rc/rc-misc.c | 36 | 
2 files changed, 40 insertions, 43 deletions
| diff --git a/src/librc/librc.c b/src/librc/librc.c index f323d0fd..12d31348 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 1c340dd6..f1622fcf 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; | 
