Rename proc_getent to rc_proc_getent and make it global
This commit is contained in:
parent
6fcc55cef8
commit
c3be42006b
@ -29,6 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "librc.h"
|
#include "librc.h"
|
||||||
|
#include "einfo.h"
|
||||||
|
|
||||||
bool
|
bool
|
||||||
rc_yesno(const char *value)
|
rc_yesno(const char *value)
|
||||||
@ -127,6 +128,53 @@ rc_getline(char **line, size_t *len, FILE *fp)
|
|||||||
}
|
}
|
||||||
librc_hidden_def(rc_getline)
|
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_STRINGLIST *
|
||||||
rc_config_list(const char *file)
|
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_getfile)
|
||||||
librc_hidden_proto(rc_getline)
|
librc_hidden_proto(rc_getline)
|
||||||
librc_hidden_proto(rc_newer_than)
|
librc_hidden_proto(rc_newer_than)
|
||||||
|
librc_hidden_proto(rc_proc_getent)
|
||||||
librc_hidden_proto(rc_older_than)
|
librc_hidden_proto(rc_older_than)
|
||||||
librc_hidden_proto(rc_runlevel_exists)
|
librc_hidden_proto(rc_runlevel_exists)
|
||||||
librc_hidden_proto(rc_runlevel_get)
|
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 */
|
* @return true if source is older than target, otherwise false */
|
||||||
bool rc_older_than(const char *, const char *, time_t *, char *);
|
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,
|
/*! Update the cached dependency tree if it's older than any init script,
|
||||||
* its configuration file or an external configuration file the init script
|
* its configuration file or an external configuration file the init script
|
||||||
* has specified.
|
* has specified.
|
||||||
|
@ -18,6 +18,7 @@ global:
|
|||||||
rc_getline;
|
rc_getline;
|
||||||
rc_newer_than;
|
rc_newer_than;
|
||||||
rc_older_than;
|
rc_older_than;
|
||||||
|
rc_proc_getent;
|
||||||
rc_runlevel_exists;
|
rc_runlevel_exists;
|
||||||
rc_runlevel_get;
|
rc_runlevel_get;
|
||||||
rc_runlevel_list;
|
rc_runlevel_list;
|
||||||
|
54
src/rc/rc.c
54
src/rc/rc.c
@ -167,52 +167,6 @@ cleanup(void)
|
|||||||
#endif
|
#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
|
static char
|
||||||
read_key(bool block)
|
read_key(bool block)
|
||||||
{
|
{
|
||||||
@ -969,9 +923,9 @@ main(int argc, char **argv)
|
|||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
if (strcmp(newlevel, RC_LEVEL_SYSINIT) == 0) {
|
if (strcmp(newlevel, RC_LEVEL_SYSINIT) == 0) {
|
||||||
/* If we requested a runlevel, save it now */
|
/* If we requested a runlevel, save it now */
|
||||||
p = proc_getent("rc_runlevel");
|
p = rc_proc_getent("rc_runlevel");
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
p = proc_getent("softlevel");
|
p = rc_proc_getent("softlevel");
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
set_krunlevel(p);
|
set_krunlevel(p);
|
||||||
free(p);
|
free(p);
|
||||||
@ -1123,7 +1077,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
/* mark any services skipped as started */
|
/* mark any services skipped as started */
|
||||||
proc = p = proc_getent("noinit");
|
proc = p = rc_proc_getent("noinit");
|
||||||
if (proc) {
|
if (proc) {
|
||||||
while ((token = strsep(&p, ",")))
|
while ((token = strsep(&p, ",")))
|
||||||
rc_service_mark(token, RC_SERVICE_STARTED);
|
rc_service_mark(token, RC_SERVICE_STARTED);
|
||||||
@ -1144,7 +1098,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
/* mark any services skipped as stopped */
|
/* mark any services skipped as stopped */
|
||||||
proc = p = proc_getent("noinit");
|
proc = p = rc_proc_getent("noinit");
|
||||||
if (proc) {
|
if (proc) {
|
||||||
while ((token = strsep(&p, ",")))
|
while ((token = strsep(&p, ",")))
|
||||||
rc_service_mark(token, RC_SERVICE_STOPPED);
|
rc_service_mark(token, RC_SERVICE_STOPPED);
|
||||||
|
@ -32,6 +32,8 @@ rc_newer_than
|
|||||||
rc_newer_than@@RC_1.0
|
rc_newer_than@@RC_1.0
|
||||||
rc_older_than
|
rc_older_than
|
||||||
rc_older_than@@RC_1.0
|
rc_older_than@@RC_1.0
|
||||||
|
rc_proc_getent
|
||||||
|
rc_proc_getent@@RC_1.0
|
||||||
rc_runlevel_exists
|
rc_runlevel_exists
|
||||||
rc_runlevel_exists@@RC_1.0
|
rc_runlevel_exists@@RC_1.0
|
||||||
rc_runlevel_get
|
rc_runlevel_get
|
||||||
|
Loading…
Reference in New Issue
Block a user