Rename proc_getent to rc_proc_getent and make it global
This commit is contained in:
		@@ -29,6 +29,7 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "librc.h"
 | 
			
		||||
#include "einfo.h"
 | 
			
		||||
 | 
			
		||||
bool
 | 
			
		||||
rc_yesno(const char *value)
 | 
			
		||||
@@ -127,6 +128,53 @@ rc_getline(char **line, size_t *len, FILE *fp)
 | 
			
		||||
}
 | 
			
		||||
librc_hidden_def(rc_getline)
 | 
			
		||||
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
char *
 | 
			
		||||
rc_proc_getent(const char *ent)
 | 
			
		||||
{
 | 
			
		||||
	FILE *fp;
 | 
			
		||||
	char *proc, *p, *value = NULL;
 | 
			
		||||
	size_t i, len;
 | 
			
		||||
 | 
			
		||||
	if (!exists("/proc/cmdline"))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	if (!(fp = fopen("/proc/cmdline", "r"))) {
 | 
			
		||||
		eerror("failed to open `/proc/cmdline': %s", strerror(errno));
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	proc = NULL;
 | 
			
		||||
	i = 0;
 | 
			
		||||
	if (rc_getline(&proc, &i, fp) == -1 || proc == NULL)
 | 
			
		||||
		eerror("rc_getline: %s", strerror(errno));
 | 
			
		||||
 | 
			
		||||
	if (proc != NULL) {
 | 
			
		||||
		len = strlen(ent);
 | 
			
		||||
 | 
			
		||||
		while ((p = strsep(&proc, " "))) {
 | 
			
		||||
			if (strncmp(ent, p, len) == 0 && (p[len] == '\0' || p[len] == ' ' || p[len] == '=')) {
 | 
			
		||||
				p += len;
 | 
			
		||||
 | 
			
		||||
				if (*p == '=')
 | 
			
		||||
					p++;
 | 
			
		||||
 | 
			
		||||
				value = xstrdup(p);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!value)
 | 
			
		||||
		errno = ENOENT;
 | 
			
		||||
 | 
			
		||||
	fclose(fp);
 | 
			
		||||
	free(proc);
 | 
			
		||||
 | 
			
		||||
	return value;
 | 
			
		||||
}
 | 
			
		||||
librc_hidden_def(rc_proc_getent)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
RC_STRINGLIST *
 | 
			
		||||
rc_config_list(const char *file)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -87,6 +87,7 @@ librc_hidden_proto(rc_find_pids)
 | 
			
		||||
librc_hidden_proto(rc_getfile)
 | 
			
		||||
librc_hidden_proto(rc_getline)
 | 
			
		||||
librc_hidden_proto(rc_newer_than)
 | 
			
		||||
librc_hidden_proto(rc_proc_getent)
 | 
			
		||||
librc_hidden_proto(rc_older_than)
 | 
			
		||||
librc_hidden_proto(rc_runlevel_exists)
 | 
			
		||||
librc_hidden_proto(rc_runlevel_get)
 | 
			
		||||
 
 | 
			
		||||
@@ -361,6 +361,13 @@ bool rc_newer_than(const char *, const char *, time_t *, char *);
 | 
			
		||||
 * @return true if source is older than target, otherwise false */
 | 
			
		||||
bool rc_older_than(const char *, const char *, time_t *, char *);
 | 
			
		||||
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
/*! Read variables/values from /proc/cmdline
 | 
			
		||||
 * @param value
 | 
			
		||||
 * @return pointer to the value, otherwise NULL */
 | 
			
		||||
char *rc_proc_getent(const char *);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*! Update the cached dependency tree if it's older than any init script,
 | 
			
		||||
 * its configuration file or an external configuration file the init script
 | 
			
		||||
 * has specified.
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ global:
 | 
			
		||||
	rc_getline;
 | 
			
		||||
	rc_newer_than;
 | 
			
		||||
	rc_older_than;
 | 
			
		||||
	rc_proc_getent;
 | 
			
		||||
	rc_runlevel_exists;
 | 
			
		||||
	rc_runlevel_get;
 | 
			
		||||
	rc_runlevel_list;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								src/rc/rc.c
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								src/rc/rc.c
									
									
									
									
									
								
							@@ -167,52 +167,6 @@ cleanup(void)
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
static char *
 | 
			
		||||
proc_getent(const char *ent)
 | 
			
		||||
{
 | 
			
		||||
	FILE *fp;
 | 
			
		||||
	char *proc, *p, *value = NULL;
 | 
			
		||||
	size_t i, len;
 | 
			
		||||
 | 
			
		||||
	if (!exists("/proc/cmdline"))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	if (!(fp = fopen("/proc/cmdline", "r"))) {
 | 
			
		||||
		eerror("failed to open `/proc/cmdline': %s", strerror(errno));
 | 
			
		||||
		return NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	proc = NULL;
 | 
			
		||||
	i = 0;
 | 
			
		||||
	if (rc_getline(&proc, &i, fp) == -1 || proc == NULL)
 | 
			
		||||
		eerror("rc_getline: %s", strerror(errno));
 | 
			
		||||
 | 
			
		||||
	if (proc != NULL) {
 | 
			
		||||
		len = strlen(ent);
 | 
			
		||||
 | 
			
		||||
		while ((p = strsep(&proc, " "))) {
 | 
			
		||||
			if (strncmp(ent, p, len) == 0 && (p[len] == '\0' || p[len] == ' ' || p[len] == '=')) {
 | 
			
		||||
				p += len;
 | 
			
		||||
 | 
			
		||||
				if (*p == '=')
 | 
			
		||||
					p++;
 | 
			
		||||
 | 
			
		||||
				value = xstrdup(p);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!value)
 | 
			
		||||
		errno = ENOENT;
 | 
			
		||||
 | 
			
		||||
	fclose(fp);
 | 
			
		||||
	free(proc);
 | 
			
		||||
 | 
			
		||||
	return value;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static char
 | 
			
		||||
read_key(bool block)
 | 
			
		||||
{
 | 
			
		||||
@@ -969,9 +923,9 @@ main(int argc, char **argv)
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
			if (strcmp(newlevel, RC_LEVEL_SYSINIT) == 0) {
 | 
			
		||||
				/* If we requested a runlevel, save it now */
 | 
			
		||||
				p = proc_getent("rc_runlevel");
 | 
			
		||||
				p = rc_proc_getent("rc_runlevel");
 | 
			
		||||
				if (p == NULL)
 | 
			
		||||
					p = proc_getent("softlevel");
 | 
			
		||||
					p = rc_proc_getent("softlevel");
 | 
			
		||||
				if (p != NULL) {
 | 
			
		||||
					set_krunlevel(p);
 | 
			
		||||
					free(p);
 | 
			
		||||
@@ -1123,7 +1077,7 @@ main(int argc, char **argv)
 | 
			
		||||
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
	/* mark any services skipped as started */
 | 
			
		||||
	proc = p = proc_getent("noinit");
 | 
			
		||||
	proc = p = rc_proc_getent("noinit");
 | 
			
		||||
	if (proc) {
 | 
			
		||||
		while ((token = strsep(&p, ",")))
 | 
			
		||||
			rc_service_mark(token, RC_SERVICE_STARTED);
 | 
			
		||||
@@ -1144,7 +1098,7 @@ main(int argc, char **argv)
 | 
			
		||||
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
	/* mark any services skipped as stopped */
 | 
			
		||||
	proc = p = proc_getent("noinit");
 | 
			
		||||
	proc = p = rc_proc_getent("noinit");
 | 
			
		||||
	if (proc) {
 | 
			
		||||
		while ((token = strsep(&p, ",")))
 | 
			
		||||
			rc_service_mark(token, RC_SERVICE_STOPPED);
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,8 @@ rc_newer_than
 | 
			
		||||
rc_newer_than@@RC_1.0
 | 
			
		||||
rc_older_than
 | 
			
		||||
rc_older_than@@RC_1.0
 | 
			
		||||
rc_proc_getent
 | 
			
		||||
rc_proc_getent@@RC_1.0
 | 
			
		||||
rc_runlevel_exists
 | 
			
		||||
rc_runlevel_exists@@RC_1.0
 | 
			
		||||
rc_runlevel_get
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user