From 44f5a72d1aeb131cc2cb464a53809a5a8d90c46e Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Tue, 26 Feb 2019 16:08:55 -0600 Subject: [PATCH] remove hidden-visibility.h I am removing this on the advice of a member of the Gentoo toolchain team. It was explained to me that this doesn't offer any significant benefits to OpenRC. If anyone ffeels differently, please open a pull request reverting this and adding an explanation of what it does and how to know which functions to mark hidden in the future. This fixes #301. --- src/includes/hidden-visibility.h | 26 ------------- src/libeinfo/libeinfo.c | 54 --------------------------- src/librc/librc-daemon.c | 5 --- src/librc/librc-depend.c | 10 ----- src/librc/librc-misc.c | 8 ---- src/librc/librc-stringlist.c | 8 ---- src/librc/librc.c | 28 -------------- src/librc/librc.h | 63 -------------------------------- 8 files changed, 202 deletions(-) delete mode 100644 src/includes/hidden-visibility.h diff --git a/src/includes/hidden-visibility.h b/src/includes/hidden-visibility.h deleted file mode 100644 index 9d397c23..00000000 --- a/src/includes/hidden-visibility.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Written by Mike Frysinger - * Placed in the Public Domain - */ - -#ifndef _HIDDEN_VISIBILITY_H_ -#define _HIDDEN_VISIBILITY_H_ - -#if defined(__ELF__) && defined(__GNUC__) -# define __hidden_asmname(name) __hidden_asmname1 (__USER_LABEL_PREFIX__, name) -# define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) -# define __hidden_asmname2(prefix, name) #prefix name -# define __hidden_proto(name, internal) \ - extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ - __attribute__ ((visibility ("hidden"))); -# define __hidden_ver(local, internal, name) \ - extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ - extern __typeof (name) __EI_##name __attribute__((alias (__hidden_asmname1 (,#local)))) -# define hidden_proto(name) __hidden_proto(name, __RC_##name) -# define hidden_def(name) __hidden_ver(__RC_##name, name, name); -#else -# define hidden_proto(name) -# define hidden_def(name) -#endif - -#endif diff --git a/src/libeinfo/libeinfo.c b/src/libeinfo/libeinfo.c index b8064540..d57c2856 100644 --- a/src/libeinfo/libeinfo.c +++ b/src/libeinfo/libeinfo.c @@ -39,34 +39,6 @@ const char libeinfo_copyright[] = "Copyright (c) 2007-2008 Roy Marples"; #include "einfo.h" #include "helpers.h" -#include "hidden-visibility.h" - -hidden_proto(ecolor) -hidden_proto(ebegin) -hidden_proto(ebeginv) -hidden_proto(ebracket) -hidden_proto(eend) -hidden_proto(eendv) -hidden_proto(eerror) -hidden_proto(eerrorn) -hidden_proto(eerrorx) -hidden_proto(eindent) -hidden_proto(eindentv) -hidden_proto(einfo) -hidden_proto(einfon) -hidden_proto(einfov) -hidden_proto(einfovn) -hidden_proto(elog) -hidden_proto(eoutdent) -hidden_proto(eoutdentv) -hidden_proto(eprefix) -hidden_proto(ewarn) -hidden_proto(ewarnn) -hidden_proto(ewarnv) -hidden_proto(ewarnvn) -hidden_proto(ewarnx) -hidden_proto(ewend) -hidden_proto(ewendv) /* Incase we cannot work out how many columns from ioctl, supply a default */ #define DEFAULT_COLS 80 @@ -510,7 +482,6 @@ eprefix(const char *EINFO_RESTRICT prefix) { _eprefix = prefix; } -hidden_def(eprefix) static void EINFO_PRINTF(2, 0) elogv(int level, const char *EINFO_RESTRICT fmt, va_list ap) @@ -537,7 +508,6 @@ elog(int level, const char *EINFO_RESTRICT fmt, ...) elogv(level, fmt, ap); va_end(ap); } -hidden_def(elog) static int _eindent(FILE * EINFO_RESTRICT stream) @@ -576,7 +546,6 @@ _ecolor(FILE * EINFO_RESTRICT f, ECOLOR color) return ecolors_str[i]; return ""; } -hidden_def(ecolor) const char * ecolor(ECOLOR color) @@ -643,7 +612,6 @@ einfon(const char *EINFO_RESTRICT fmt, ...) LASTCMD("einfon"); return retval; } -hidden_def(einfon) int ewarnn(const char *EINFO_RESTRICT fmt, ...) @@ -659,7 +627,6 @@ ewarnn(const char *EINFO_RESTRICT fmt, ...) LASTCMD("ewarnn"); return retval; } -hidden_def(ewarnn) int eerrorn(const char *EINFO_RESTRICT fmt, ...) @@ -675,7 +642,6 @@ eerrorn(const char *EINFO_RESTRICT fmt, ...) LASTCMD("errorn"); return retval; } -hidden_def(eerrorn) int einfo(const char *EINFO_RESTRICT fmt, ...) @@ -692,7 +658,6 @@ einfo(const char *EINFO_RESTRICT fmt, ...) LASTCMD("einfo"); return retval; } -hidden_def(einfo) int ewarn(const char *EINFO_RESTRICT fmt, ...) @@ -710,7 +675,6 @@ ewarn(const char *EINFO_RESTRICT fmt, ...) LASTCMD("ewarn"); return retval; } -hidden_def(ewarn) void ewarnx(const char *EINFO_RESTRICT fmt, ...) @@ -727,7 +691,6 @@ ewarnx(const char *EINFO_RESTRICT fmt, ...) } exit(EXIT_FAILURE); } -hidden_def(ewarnx) int eerror(const char *EINFO_RESTRICT fmt, ...) @@ -745,7 +708,6 @@ eerror(const char *EINFO_RESTRICT fmt, ...) LASTCMD("eerror"); return retval; } -hidden_def(eerror) void eerrorx(const char *EINFO_RESTRICT fmt, ...) @@ -761,7 +723,6 @@ eerrorx(const char *EINFO_RESTRICT fmt, ...) } exit(EXIT_FAILURE); } -hidden_def(eerrorx) int ebegin(const char *EINFO_RESTRICT fmt, ...) @@ -780,7 +741,6 @@ ebegin(const char *EINFO_RESTRICT fmt, ...) LASTCMD("ebegin"); return retval; } -hidden_def(ebegin) static void _eend(FILE * EINFO_RESTRICT fp, int col, ECOLOR color, const char *msg) @@ -854,7 +814,6 @@ eend(int retval, const char *EINFO_RESTRICT fmt, ...) LASTCMD("eend"); return retval; } -hidden_def(eend) int ewend(int retval, const char *EINFO_RESTRICT fmt, ...) @@ -869,14 +828,12 @@ ewend(int retval, const char *EINFO_RESTRICT fmt, ...) LASTCMD("ewend"); return retval; } -hidden_def(ewend) void ebracket(int col, ECOLOR color, const char *msg) { _eend(stdout, col, color, msg); } -hidden_def(ebracket) void eindent(void) @@ -898,7 +855,6 @@ eindent(void) setenv("EINFO_INDENT", num, 1); free(num); } -hidden_def(eindent) void eoutdent(void) { @@ -924,7 +880,6 @@ void eoutdent(void) } errno = serrno; } -hidden_def(eoutdent) int einfovn(const char *EINFO_RESTRICT fmt, ...) @@ -940,7 +895,6 @@ einfovn(const char *EINFO_RESTRICT fmt, ...) LASTCMD("einfovn"); return retval; } -hidden_def(einfovn) int ewarnvn(const char *EINFO_RESTRICT fmt, ...) @@ -956,7 +910,6 @@ ewarnvn(const char *EINFO_RESTRICT fmt, ...) LASTCMD("ewarnvn"); return retval; } -hidden_def(ewarnvn) int einfov(const char *EINFO_RESTRICT fmt, ...) @@ -973,7 +926,6 @@ einfov(const char *EINFO_RESTRICT fmt, ...) LASTCMD("einfov"); return retval; } -hidden_def(einfov) int ewarnv(const char *EINFO_RESTRICT fmt, ...) @@ -990,7 +942,6 @@ ewarnv(const char *EINFO_RESTRICT fmt, ...) LASTCMD("ewarnv"); return retval; } -hidden_def(ewarnv) int ebeginv(const char *EINFO_RESTRICT fmt, ...) @@ -1010,7 +961,6 @@ ebeginv(const char *EINFO_RESTRICT fmt, ...) LASTCMD("ebeginv"); return retval; } -hidden_def(ebeginv) int eendv(int retval, const char *EINFO_RESTRICT fmt, ...) @@ -1025,7 +975,6 @@ eendv(int retval, const char *EINFO_RESTRICT fmt, ...) LASTCMD("eendv"); return retval; } -hidden_def(eendv) int ewendv(int retval, const char *EINFO_RESTRICT fmt, ...) @@ -1040,7 +989,6 @@ ewendv(int retval, const char *EINFO_RESTRICT fmt, ...) LASTCMD("ewendv"); return retval; } -hidden_def(ewendv) void eindentv(void) @@ -1048,7 +996,6 @@ eindentv(void) if (is_verbose()) eindent(); } -hidden_def(eindentv) void eoutdentv(void) @@ -1056,4 +1003,3 @@ eoutdentv(void) if (is_verbose()) eoutdent(); } -hidden_def(eoutdentv) diff --git a/src/librc/librc-daemon.c b/src/librc/librc-daemon.c index 6c12669f..9e7a97ab 100644 --- a/src/librc/librc-daemon.c +++ b/src/librc/librc-daemon.c @@ -208,7 +208,6 @@ rc_find_pids(const char *exec, const char *const *argv, uid_t uid, pid_t pid) closedir(procdir); return pids; } -librc_hidden_def(rc_find_pids) #elif BSD @@ -313,7 +312,6 @@ rc_find_pids(const char *exec, const char *const *argv, uid_t uid, pid_t pid) return pids; } -librc_hidden_def(rc_find_pids) #else # error "Platform not supported!" @@ -455,7 +453,6 @@ rc_service_daemon_set(const char *service, const char *exec, free(dirpath); return retval; } -librc_hidden_def(rc_service_daemon_set) bool rc_service_started_daemon(const char *service, @@ -495,7 +492,6 @@ rc_service_started_daemon(const char *service, free(dirpath); return retval; } -librc_hidden_def(rc_service_started_daemon) bool rc_service_daemons_crashed(const char *service) @@ -653,4 +649,3 @@ rc_service_daemons_crashed(const char *service) return retval; } -librc_hidden_def(rc_service_daemons_crashed) diff --git a/src/librc/librc-depend.c b/src/librc/librc-depend.c index f010a072..dcce40e5 100644 --- a/src/librc/librc-depend.c +++ b/src/librc/librc-depend.c @@ -78,7 +78,6 @@ rc_deptree_free(RC_DEPTREE *deptree) } free(deptree); } -librc_hidden_def(rc_deptree_free) static RC_DEPINFO * get_depinfo(const RC_DEPTREE *deptree, const char *service) @@ -109,7 +108,6 @@ RC_DEPTREE * rc_deptree_load(void) { return rc_deptree_load_file(RC_DEPTREE_CACHE); } -librc_hidden_def(rc_deptree_load) RC_DEPTREE * rc_deptree_load_file(const char *deptree_file) @@ -173,7 +171,6 @@ rc_deptree_load_file(const char *deptree_file) return deptree; } -librc_hidden_def(rc_deptree_load_file) static bool valid_service(const char *runlevel, const char *service, const char *type) @@ -459,7 +456,6 @@ rc_deptree_depend(const RC_DEPTREE *deptree, rc_stringlist_add(svcs, svc->value); return svcs; } -librc_hidden_def(rc_deptree_depend) RC_STRINGLIST * rc_deptree_depends(const RC_DEPTREE *deptree, @@ -487,7 +483,6 @@ rc_deptree_depends(const RC_DEPTREE *deptree, rc_stringlist_free(visited); return sorted; } -librc_hidden_def(rc_deptree_depends) RC_STRINGLIST * rc_deptree_order(const RC_DEPTREE *deptree, const char *runlevel, int options) @@ -543,7 +538,6 @@ rc_deptree_order(const RC_DEPTREE *deptree, const char *runlevel, int options) rc_stringlist_free(types); return services; } -librc_hidden_def(rc_deptree_order) /* Given a time, recurse the target path to find out if there are @@ -633,7 +627,6 @@ rc_newer_than(const char *source, const char *target, return mtime_check(source, target, true, newest, file); } -librc_hidden_def(rc_newer_than) bool rc_older_than(const char *source, const char *target, @@ -641,7 +634,6 @@ rc_older_than(const char *source, const char *target, { return mtime_check(source, target, false, oldest, file); } -librc_hidden_def(rc_older_than) typedef struct deppair { @@ -737,7 +729,6 @@ rc_deptree_update_needed(time_t *newest, char *file) return newer; } -librc_hidden_def(rc_deptree_update_needed) /* This is a 7 phase operation Phase 1 is a shell script which loads each init script and config in turn @@ -1084,4 +1075,3 @@ rc_deptree_update(void) rc_deptree_free(deptree); return retval; } -librc_hidden_def(rc_deptree_update) diff --git a/src/librc/librc-misc.c b/src/librc/librc-misc.c index c6af405c..1f3d23f4 100644 --- a/src/librc/librc-misc.c +++ b/src/librc/librc-misc.c @@ -43,7 +43,6 @@ rc_yesno(const char *value) return false; } -librc_hidden_def(rc_yesno) /** @@ -91,7 +90,6 @@ rc_getfile(const char *file, char **buffer, size_t *len) fclose(fp); return ret; } -librc_hidden_def(rc_getfile) ssize_t rc_getline(char **line, size_t *len, FILE *fp) @@ -116,7 +114,6 @@ rc_getline(char **line, size_t *len, FILE *fp) } return last; } -librc_hidden_def(rc_getline) char * rc_proc_getent(const char *ent _unused) @@ -163,7 +160,6 @@ rc_proc_getent(const char *ent _unused) return NULL; #endif } -librc_hidden_def(rc_proc_getent) RC_STRINGLIST * rc_config_list(const char *file) @@ -202,7 +198,6 @@ rc_config_list(const char *file) return list; } -librc_hidden_def(rc_config_list) static void rc_config_set_value(RC_STRINGLIST *config, char *value) { @@ -373,7 +368,6 @@ rc_config_load(const char *file) return config; } -librc_hidden_def(rc_config_load) char * rc_config_value(RC_STRINGLIST *list, const char *entry) @@ -392,7 +386,6 @@ rc_config_value(RC_STRINGLIST *list, const char *entry) } return NULL; } -librc_hidden_def(rc_config_value) /* Global for caching the strings loaded from rc.conf to avoid reparsing for * each rc_conf_value call */ @@ -438,4 +431,3 @@ rc_conf_value(const char *setting) return rc_config_value(rc_conf, setting); } -librc_hidden_def(rc_conf_value) diff --git a/src/librc/librc-stringlist.c b/src/librc/librc-stringlist.c index 58c6ef8d..773cb9cb 100644 --- a/src/librc/librc-stringlist.c +++ b/src/librc/librc-stringlist.c @@ -25,7 +25,6 @@ rc_stringlist_new(void) TAILQ_INIT(l); return l; } -librc_hidden_def(rc_stringlist_new) RC_STRING * rc_stringlist_add(RC_STRINGLIST *list, const char *value) @@ -36,7 +35,6 @@ rc_stringlist_add(RC_STRINGLIST *list, const char *value) TAILQ_INSERT_TAIL(list, s, entries); return s; } -librc_hidden_def(rc_stringlist_add) RC_STRING * rc_stringlist_addu(RC_STRINGLIST *list, const char *value) @@ -51,7 +49,6 @@ rc_stringlist_addu(RC_STRINGLIST *list, const char *value) return rc_stringlist_add(list, value); } -librc_hidden_def(rc_stringlist_addu) bool rc_stringlist_delete(RC_STRINGLIST *list, const char *value) @@ -69,7 +66,6 @@ rc_stringlist_delete(RC_STRINGLIST *list, const char *value) errno = EEXIST; return false; } -librc_hidden_def(rc_stringlist_delete) RC_STRING * rc_stringlist_find(RC_STRINGLIST *list, const char *value) @@ -83,7 +79,6 @@ rc_stringlist_find(RC_STRINGLIST *list, const char *value) } return NULL; } -librc_hidden_def(rc_stringlist_find) RC_STRINGLIST * rc_stringlist_split(const char *value, const char *sep) @@ -98,7 +93,6 @@ rc_stringlist_split(const char *value, const char *sep) return list; } -librc_hidden_def(rc_stringlist_split) void rc_stringlist_sort(RC_STRINGLIST **list) @@ -128,7 +122,6 @@ rc_stringlist_sort(RC_STRINGLIST **list) free(l); *list = new; } -librc_hidden_def(rc_stringlist_sort) void rc_stringlist_free(RC_STRINGLIST *list) @@ -148,4 +141,3 @@ rc_stringlist_free(RC_STRINGLIST *list) } free(list); } -librc_hidden_def(rc_stringlist_free) diff --git a/src/librc/librc.c b/src/librc/librc.c index 9d6abc7a..90327097 100644 --- a/src/librc/librc.c +++ b/src/librc/librc.c @@ -351,7 +351,6 @@ rc_sys(void) return sys; } -librc_hidden_def(rc_sys) static const char * rc_parse_service_state(RC_SERVICE state) @@ -426,20 +425,17 @@ rc_runlevel_starting(void) { return exists(RC_STARTING); } -librc_hidden_def(rc_runlevel_starting) bool rc_runlevel_stopping(void) { return exists(RC_STOPPING); } -librc_hidden_def(rc_runlevel_stopping) RC_STRINGLIST *rc_runlevel_list(void) { return ls_dir(RC_RUNLEVELDIR, LS_DIR); } -librc_hidden_def(rc_runlevel_list) char * rc_runlevel_get(void) @@ -466,7 +462,6 @@ rc_runlevel_get(void) return runlevel; } -librc_hidden_def(rc_runlevel_get) bool rc_runlevel_set(const char *runlevel) @@ -479,7 +474,6 @@ rc_runlevel_set(const char *runlevel) fclose(fp); return true; } -librc_hidden_def(rc_runlevel_set) bool rc_runlevel_exists(const char *runlevel) @@ -494,7 +488,6 @@ rc_runlevel_exists(const char *runlevel) return true; return false; } -librc_hidden_def(rc_runlevel_exists) bool rc_runlevel_stack(const char *dst, const char *src) @@ -507,7 +500,6 @@ rc_runlevel_stack(const char *dst, const char *src) snprintf(d, sizeof(s), "%s/%s/%s", RC_RUNLEVELDIR, dst, src); return (symlink(s, d) == 0 ? true : false); } -librc_hidden_def(rc_runlevel_stack) bool rc_runlevel_unstack(const char *dst, const char *src) @@ -517,7 +509,6 @@ rc_runlevel_unstack(const char *dst, const char *src) snprintf(path, sizeof(path), "%s/%s/%s", RC_RUNLEVELDIR, dst, src); return (unlink(path) == 0 ? true : false); } -librc_hidden_def(rc_runlevel_unstack) RC_STRINGLIST * rc_runlevel_stacks(const char *runlevel) @@ -530,7 +521,6 @@ rc_runlevel_stacks(const char *runlevel) rc_stringlist_free(ancestor_list); return stack; } -librc_hidden_def(rc_runlevel_stacks) /* Resolve a service name to its full path */ char * @@ -584,7 +574,6 @@ rc_service_resolve(const char *service) return NULL; } -librc_hidden_def(rc_service_resolve) bool rc_service_exists(const char *service) @@ -623,7 +612,6 @@ rc_service_exists(const char *service) free(file); return retval; } -librc_hidden_def(rc_service_exists) #define OPTSTR \ ". '%s'; echo $extra_commands $extra_started_commands $extra_stopped_commands" @@ -665,7 +653,6 @@ rc_service_extra_commands(const char *service) free(cmd); return commands; } -librc_hidden_def(rc_service_extra_commands) #define DESCSTR ". '%s'; echo \"${description%s%s}\"" char * @@ -695,7 +682,6 @@ rc_service_description(const char *service, const char *option) free(cmd); return desc; } -librc_hidden_def(rc_service_description) bool rc_service_in_runlevel(const char *service, const char *runlevel) @@ -706,7 +692,6 @@ rc_service_in_runlevel(const char *service, const char *runlevel) runlevel, basename_c(service)); return exists(file); } -librc_hidden_def(rc_service_in_runlevel) bool rc_service_mark(const char *service, const RC_SERVICE state) @@ -826,7 +811,6 @@ rc_service_mark(const char *service, const RC_SERVICE state) free(init); return true; } -librc_hidden_def(rc_service_mark) RC_SERVICE rc_service_state(const char *service) @@ -869,7 +853,6 @@ rc_service_state(const char *service) return state; } -librc_hidden_def(rc_service_state) char * rc_service_value_get(const char *service, const char *option) @@ -884,7 +867,6 @@ rc_service_value_get(const char *service, const char *option) return buffer; } -librc_hidden_def(rc_service_value_get) bool rc_service_value_set(const char *service, const char *option, @@ -909,7 +891,6 @@ rc_service_value_set(const char *service, const char *option, } return true; } -librc_hidden_def(rc_service_value_set) bool @@ -936,7 +917,6 @@ rc_service_schedule_start(const char *service, const char *service_to_start) free(init); return retval; } -librc_hidden_def(rc_service_schedule_start) bool rc_service_schedule_clear(const char *service) @@ -949,7 +929,6 @@ rc_service_schedule_clear(const char *service) return true; return false; } -librc_hidden_def(rc_service_schedule_clear) RC_STRINGLIST * rc_services_in_runlevel(const char *runlevel) @@ -987,7 +966,6 @@ rc_services_in_runlevel(const char *runlevel) list = rc_stringlist_new(); return list; } -librc_hidden_def(rc_services_in_runlevel) RC_STRINGLIST * rc_services_in_runlevel_stacked(const char *runlevel) @@ -1004,7 +982,6 @@ rc_services_in_runlevel_stacked(const char *runlevel) } return list; } -librc_hidden_def(rc_services_in_runlevel_stacked) RC_STRINGLIST * rc_services_in_state(RC_SERVICE state) @@ -1038,7 +1015,6 @@ rc_services_in_state(RC_SERVICE state) rc_stringlist_free(dirs); return list; } -librc_hidden_def(rc_services_in_state) bool rc_service_add(const char *runlevel, const char *service) @@ -1084,7 +1060,6 @@ rc_service_add(const char *runlevel, const char *service) free(init); return retval; } -librc_hidden_def(rc_service_add) bool rc_service_delete(const char *runlevel, const char *service) @@ -1097,7 +1072,6 @@ rc_service_delete(const char *runlevel, const char *service) return true; return false; } -librc_hidden_def(rc_service_delete) RC_STRINGLIST * rc_services_scheduled_by(const char *service) @@ -1116,7 +1090,6 @@ rc_services_scheduled_by(const char *service) rc_stringlist_free(dirs); return list; } -librc_hidden_def(rc_services_scheduled_by) RC_STRINGLIST * rc_services_scheduled(const char *service) @@ -1127,4 +1100,3 @@ rc_services_scheduled(const char *service) basename_c(service)); return ls_dir(dir, LS_INITD); } -librc_hidden_def(rc_services_scheduled) diff --git a/src/librc/librc.h b/src/librc/librc.h index c4c34184..80270c6e 100644 --- a/src/librc/librc.h +++ b/src/librc/librc.h @@ -56,67 +56,4 @@ #include "rc.h" #include "rc-misc.h" -#include "hidden-visibility.h" -#define librc_hidden_proto(x) hidden_proto(x) -#define librc_hidden_def(x) hidden_def(x) - -librc_hidden_proto(rc_conf_value) -librc_hidden_proto(rc_config_list) -librc_hidden_proto(rc_config_load) -librc_hidden_proto(rc_config_value) -librc_hidden_proto(rc_deptree_depend) -librc_hidden_proto(rc_deptree_depends) -librc_hidden_proto(rc_deptree_free) -librc_hidden_proto(rc_deptree_load) -librc_hidden_proto(rc_deptree_load_file) -librc_hidden_proto(rc_deptree_order) -librc_hidden_proto(rc_deptree_update) -librc_hidden_proto(rc_deptree_update_needed) -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) -librc_hidden_proto(rc_runlevel_list) -librc_hidden_proto(rc_runlevel_set) -librc_hidden_proto(rc_runlevel_stack) -librc_hidden_proto(rc_runlevel_stacks) -librc_hidden_proto(rc_runlevel_starting) -librc_hidden_proto(rc_runlevel_stopping) -librc_hidden_proto(rc_runlevel_unstack) -librc_hidden_proto(rc_service_add) -librc_hidden_proto(rc_service_daemons_crashed) -librc_hidden_proto(rc_service_daemon_set) -librc_hidden_proto(rc_service_delete) -librc_hidden_proto(rc_service_description) -librc_hidden_proto(rc_service_exists) -librc_hidden_proto(rc_service_extra_commands) -librc_hidden_proto(rc_service_in_runlevel) -librc_hidden_proto(rc_service_mark) -librc_hidden_proto(rc_service_resolve) -librc_hidden_proto(rc_service_schedule_clear) -librc_hidden_proto(rc_service_schedule_start) -librc_hidden_proto(rc_services_in_runlevel) -librc_hidden_proto(rc_services_in_runlevel_stacked) -librc_hidden_proto(rc_services_in_state) -librc_hidden_proto(rc_services_scheduled) -librc_hidden_proto(rc_services_scheduled_by) -librc_hidden_proto(rc_service_started_daemon) -librc_hidden_proto(rc_service_state) -librc_hidden_proto(rc_service_value_get) -librc_hidden_proto(rc_service_value_set) -librc_hidden_proto(rc_stringlist_add) -librc_hidden_proto(rc_stringlist_addu) -librc_hidden_proto(rc_stringlist_delete) -librc_hidden_proto(rc_stringlist_find) -librc_hidden_proto(rc_stringlist_free) -librc_hidden_proto(rc_stringlist_new) -librc_hidden_proto(rc_stringlist_split) -librc_hidden_proto(rc_stringlist_sort) -librc_hidden_proto(rc_sys) -librc_hidden_proto(rc_yesno) - #endif