kill off internal relocations for librc.so
This commit is contained in:
parent
fc06063958
commit
a822d2d118
@ -5,34 +5,7 @@
|
|||||||
Released under the GPLv2
|
Released under the GPLv2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include "librc.h"
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#if defined(__DragonFly__) || defined(__FreeBSD__) || \
|
|
||||||
defined(__NetBSD__) || defined (__OpenBSD__)
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/user.h>
|
|
||||||
#include <sys/sysctl.h>
|
|
||||||
#include <kvm.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __linux__
|
|
||||||
#include <libgen.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "einfo.h"
|
|
||||||
#include "rc.h"
|
|
||||||
#include "rc-misc.h"
|
|
||||||
#include "strlist.h"
|
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
static bool pid_is_cmd (pid_t pid, const char *cmd)
|
static bool pid_is_cmd (pid_t pid, const char *cmd)
|
||||||
@ -171,6 +144,7 @@ pid_t *rc_find_pids (const char *exec, const char *cmd,
|
|||||||
|
|
||||||
return (pids);
|
return (pids);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_find_pids)
|
||||||
|
|
||||||
#elif defined(__DragonFly__) || defined(__FreeBSD__) || \
|
#elif defined(__DragonFly__) || defined(__FreeBSD__) || \
|
||||||
defined(__NetBSD__) || defined(__OpenBSD__)
|
defined(__NetBSD__) || defined(__OpenBSD__)
|
||||||
@ -248,6 +222,7 @@ pid_t *rc_find_pids (const char *exec, const char *cmd,
|
|||||||
|
|
||||||
return (pids);
|
return (pids);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_find_pids)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
# error "Platform not supported!"
|
# error "Platform not supported!"
|
||||||
@ -394,6 +369,7 @@ void rc_set_service_daemon (const char *service, const char *exec,
|
|||||||
free (mpidfile);
|
free (mpidfile);
|
||||||
free (dirpath);
|
free (dirpath);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_set_service_daemon)
|
||||||
|
|
||||||
bool rc_service_started_daemon (const char *service, const char *exec,
|
bool rc_service_started_daemon (const char *service, const char *exec,
|
||||||
int indx)
|
int indx)
|
||||||
@ -437,6 +413,7 @@ bool rc_service_started_daemon (const char *service, const char *exec,
|
|||||||
free (mexec);
|
free (mexec);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_service_started_daemon)
|
||||||
|
|
||||||
bool rc_service_daemons_crashed (const char *service)
|
bool rc_service_daemons_crashed (const char *service)
|
||||||
{
|
{
|
||||||
@ -560,3 +537,4 @@ bool rc_service_daemons_crashed (const char *service)
|
|||||||
|
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_service_daemons_crashed)
|
||||||
|
@ -4,20 +4,7 @@
|
|||||||
Copyright 2006-2007 Gentoo Foundation
|
Copyright 2006-2007 Gentoo Foundation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include "librc.h"
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "einfo.h"
|
|
||||||
#include "rc.h"
|
|
||||||
#include "rc-misc.h"
|
|
||||||
#include "strlist.h"
|
|
||||||
|
|
||||||
#define GENDEP RC_LIBDIR "/sh/gendepends.sh"
|
#define GENDEP RC_LIBDIR "/sh/gendepends.sh"
|
||||||
|
|
||||||
@ -70,6 +57,7 @@ void rc_free_deptree (rc_depinfo_t *deptree)
|
|||||||
di = dip;
|
di = dip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_free_deptree)
|
||||||
|
|
||||||
rc_depinfo_t *rc_load_deptree (void)
|
rc_depinfo_t *rc_load_deptree (void)
|
||||||
{
|
{
|
||||||
@ -158,6 +146,7 @@ rc_depinfo_t *rc_load_deptree (void)
|
|||||||
|
|
||||||
return (deptree);
|
return (deptree);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_load_deptree)
|
||||||
|
|
||||||
rc_depinfo_t *rc_get_depinfo (rc_depinfo_t *deptree, const char *service)
|
rc_depinfo_t *rc_get_depinfo (rc_depinfo_t *deptree, const char *service)
|
||||||
{
|
{
|
||||||
@ -172,6 +161,7 @@ rc_depinfo_t *rc_get_depinfo (rc_depinfo_t *deptree, const char *service)
|
|||||||
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_depinfo)
|
||||||
|
|
||||||
rc_deptype_t *rc_get_deptype (rc_depinfo_t *depinfo, const char *type)
|
rc_deptype_t *rc_get_deptype (rc_depinfo_t *depinfo, const char *type)
|
||||||
{
|
{
|
||||||
@ -186,6 +176,7 @@ rc_deptype_t *rc_get_deptype (rc_depinfo_t *depinfo, const char *type)
|
|||||||
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_deptype)
|
||||||
|
|
||||||
static bool valid_service (const char *runlevel, const char *service)
|
static bool valid_service (const char *runlevel, const char *service)
|
||||||
{
|
{
|
||||||
@ -456,6 +447,7 @@ char **rc_get_depends (rc_depinfo_t *deptree,
|
|||||||
rc_strlist_free (visited.list);
|
rc_strlist_free (visited.list);
|
||||||
return (sorted.list);
|
return (sorted.list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_depends)
|
||||||
|
|
||||||
char **rc_order_services (rc_depinfo_t *deptree, const char *runlevel,
|
char **rc_order_services (rc_depinfo_t *deptree, const char *runlevel,
|
||||||
int options)
|
int options)
|
||||||
@ -510,6 +502,7 @@ char **rc_order_services (rc_depinfo_t *deptree, const char *runlevel,
|
|||||||
|
|
||||||
return (services);
|
return (services);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_order_services)
|
||||||
|
|
||||||
static bool is_newer_than (const char *file, const char *target)
|
static bool is_newer_than (const char *file, const char *target)
|
||||||
{
|
{
|
||||||
@ -838,3 +831,4 @@ int rc_update_deptree (bool force)
|
|||||||
eend (retval, "Failed to update the service dependency tree");
|
eend (retval, "Failed to update the service dependency tree");
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_update_deptree)
|
||||||
|
@ -4,24 +4,7 @@
|
|||||||
Copyright 2007 Gentoo Foundation
|
Copyright 2007 Gentoo Foundation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include "librc.h"
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/utsname.h>
|
|
||||||
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <regex.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "einfo.h"
|
|
||||||
#include "rc-misc.h"
|
|
||||||
#include "rc.h"
|
|
||||||
#include "strlist.h"
|
|
||||||
|
|
||||||
#define ERRX eerrorx("out of memory");
|
#define ERRX eerrorx("out of memory");
|
||||||
|
|
||||||
@ -45,6 +28,7 @@ void *rc_xcalloc (size_t n, size_t size)
|
|||||||
|
|
||||||
ERRX
|
ERRX
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_xcalloc)
|
||||||
|
|
||||||
void *rc_xmalloc (size_t size)
|
void *rc_xmalloc (size_t size)
|
||||||
{
|
{
|
||||||
@ -55,6 +39,7 @@ void *rc_xmalloc (size_t size)
|
|||||||
|
|
||||||
ERRX
|
ERRX
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_xmalloc)
|
||||||
|
|
||||||
void *rc_xrealloc (void *ptr, size_t size)
|
void *rc_xrealloc (void *ptr, size_t size)
|
||||||
{
|
{
|
||||||
@ -65,7 +50,7 @@ void *rc_xrealloc (void *ptr, size_t size)
|
|||||||
|
|
||||||
ERRX
|
ERRX
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_xrealloc)
|
||||||
|
|
||||||
char *rc_xstrdup (const char *str)
|
char *rc_xstrdup (const char *str)
|
||||||
{
|
{
|
||||||
@ -81,6 +66,7 @@ char *rc_xstrdup (const char *str)
|
|||||||
|
|
||||||
ERRX
|
ERRX
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_xstrdup)
|
||||||
|
|
||||||
bool rc_is_env (const char *var, const char *val)
|
bool rc_is_env (const char *var, const char *val)
|
||||||
{
|
{
|
||||||
@ -95,6 +81,7 @@ bool rc_is_env (const char *var, const char *val)
|
|||||||
|
|
||||||
return (strcasecmp (v, val) == 0 ? true : false);
|
return (strcasecmp (v, val) == 0 ? true : false);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_is_env)
|
||||||
|
|
||||||
char *rc_strcatpaths (const char *path1, const char *paths, ...)
|
char *rc_strcatpaths (const char *path1, const char *paths, ...)
|
||||||
{
|
{
|
||||||
@ -142,6 +129,7 @@ char *rc_strcatpaths (const char *path1, const char *paths, ...)
|
|||||||
|
|
||||||
return (path);
|
return (path);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strcatpaths)
|
||||||
|
|
||||||
bool rc_exists (const char *pathname)
|
bool rc_exists (const char *pathname)
|
||||||
{
|
{
|
||||||
@ -156,6 +144,7 @@ bool rc_exists (const char *pathname)
|
|||||||
errno = 0;
|
errno = 0;
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_exists)
|
||||||
|
|
||||||
bool rc_is_file (const char *pathname)
|
bool rc_is_file (const char *pathname)
|
||||||
{
|
{
|
||||||
@ -170,13 +159,14 @@ bool rc_is_file (const char *pathname)
|
|||||||
errno = 0;
|
errno = 0;
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_is_file)
|
||||||
|
|
||||||
bool rc_is_dir (const char *pathname)
|
bool rc_is_dir (const char *pathname)
|
||||||
{
|
{
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
|
|
||||||
if (! pathname)
|
if (! pathname)
|
||||||
return (false);
|
return (false);
|
||||||
|
|
||||||
if (stat (pathname, &buf) == 0)
|
if (stat (pathname, &buf) == 0)
|
||||||
return (S_ISDIR (buf.st_mode));
|
return (S_ISDIR (buf.st_mode));
|
||||||
@ -184,13 +174,14 @@ bool rc_is_dir (const char *pathname)
|
|||||||
errno = 0;
|
errno = 0;
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_is_dir)
|
||||||
|
|
||||||
bool rc_is_link (const char *pathname)
|
bool rc_is_link (const char *pathname)
|
||||||
{
|
{
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
|
|
||||||
if (! pathname)
|
if (! pathname)
|
||||||
return (false);
|
return (false);
|
||||||
|
|
||||||
if (lstat (pathname, &buf) == 0)
|
if (lstat (pathname, &buf) == 0)
|
||||||
return (S_ISLNK (buf.st_mode));
|
return (S_ISLNK (buf.st_mode));
|
||||||
@ -198,6 +189,7 @@ bool rc_is_link (const char *pathname)
|
|||||||
errno = 0;
|
errno = 0;
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_is_link)
|
||||||
|
|
||||||
bool rc_is_exec (const char *pathname)
|
bool rc_is_exec (const char *pathname)
|
||||||
{
|
{
|
||||||
@ -212,6 +204,7 @@ bool rc_is_exec (const char *pathname)
|
|||||||
errno = 0;
|
errno = 0;
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_is_exec)
|
||||||
|
|
||||||
char **rc_ls_dir (char **list, const char *dir, int options)
|
char **rc_ls_dir (char **list, const char *dir, int options)
|
||||||
{
|
{
|
||||||
@ -257,6 +250,7 @@ char **rc_ls_dir (char **list, const char *dir, int options)
|
|||||||
|
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_ls_dir)
|
||||||
|
|
||||||
bool rc_rm_dir (const char *pathname, bool top)
|
bool rc_rm_dir (const char *pathname, bool top)
|
||||||
{
|
{
|
||||||
@ -304,6 +298,7 @@ bool rc_rm_dir (const char *pathname, bool top)
|
|||||||
|
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_rm_dir)
|
||||||
|
|
||||||
char **rc_get_config (char **list, const char *file)
|
char **rc_get_config (char **list, const char *file)
|
||||||
{
|
{
|
||||||
@ -365,7 +360,7 @@ char **rc_get_config (char **list, const char *file)
|
|||||||
if (strcmp (linetok, entry) == 0) {
|
if (strcmp (linetok, entry) == 0) {
|
||||||
/* We have a match now - to save time we directly replace it */
|
/* We have a match now - to save time we directly replace it */
|
||||||
free (list[i - 1]);
|
free (list[i - 1]);
|
||||||
list[i - 1] = newline;
|
list[i - 1] = newline;
|
||||||
replaced = true;
|
replaced = true;
|
||||||
free (tmp);
|
free (tmp);
|
||||||
break;
|
break;
|
||||||
@ -383,6 +378,7 @@ char **rc_get_config (char **list, const char *file)
|
|||||||
|
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_config)
|
||||||
|
|
||||||
char *rc_get_config_entry (char **list, const char *entry)
|
char *rc_get_config_entry (char **list, const char *entry)
|
||||||
{
|
{
|
||||||
@ -398,6 +394,7 @@ char *rc_get_config_entry (char **list, const char *entry)
|
|||||||
|
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_config_entry)
|
||||||
|
|
||||||
char **rc_get_list (char **list, const char *file)
|
char **rc_get_list (char **list, const char *file)
|
||||||
{
|
{
|
||||||
@ -432,6 +429,7 @@ char **rc_get_list (char **list, const char *file)
|
|||||||
|
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_list)
|
||||||
|
|
||||||
char **rc_filter_env (void)
|
char **rc_filter_env (void)
|
||||||
{
|
{
|
||||||
@ -528,6 +526,7 @@ char **rc_filter_env (void)
|
|||||||
|
|
||||||
return (env);
|
return (env);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_filter_env)
|
||||||
|
|
||||||
/* Other systems may need this at some point, but for now it's Linux only */
|
/* Other systems may need this at some point, but for now it's Linux only */
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
@ -701,3 +700,4 @@ char **rc_config_env (char **env)
|
|||||||
|
|
||||||
return (env);
|
return (env);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_config_env)
|
||||||
|
@ -7,12 +7,7 @@
|
|||||||
Released under the GPLv2
|
Released under the GPLv2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include "librc.h"
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "rc.h"
|
|
||||||
#include "rc-misc.h"
|
|
||||||
|
|
||||||
char **rc_strlist_add (char **list, const char *item)
|
char **rc_strlist_add (char **list, const char *item)
|
||||||
{
|
{
|
||||||
@ -31,6 +26,7 @@ char **rc_strlist_add (char **list, const char *item)
|
|||||||
|
|
||||||
return (newlist);
|
return (newlist);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strlist_add)
|
||||||
|
|
||||||
static char **_rc_strlist_addsort (char **list, const char *item,
|
static char **_rc_strlist_addsort (char **list, const char *item,
|
||||||
int (*sortfunc) (const char *s1,
|
int (*sortfunc) (const char *s1,
|
||||||
@ -77,16 +73,19 @@ char **rc_strlist_addsort (char **list, const char *item)
|
|||||||
{
|
{
|
||||||
return (_rc_strlist_addsort (list, item, strcoll, false));
|
return (_rc_strlist_addsort (list, item, strcoll, false));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strlist_addsort)
|
||||||
|
|
||||||
char **rc_strlist_addsortc (char **list, const char *item)
|
char **rc_strlist_addsortc (char **list, const char *item)
|
||||||
{
|
{
|
||||||
return (_rc_strlist_addsort (list, item, strcmp, false));
|
return (_rc_strlist_addsort (list, item, strcmp, false));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strlist_addsortc)
|
||||||
|
|
||||||
char **rc_strlist_addsortu (char **list, const char *item)
|
char **rc_strlist_addsortu (char **list, const char *item)
|
||||||
{
|
{
|
||||||
return (_rc_strlist_addsort (list, item, strcmp, true));
|
return (_rc_strlist_addsort (list, item, strcmp, true));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strlist_addsortu)
|
||||||
|
|
||||||
char **rc_strlist_delete (char **list, const char *item)
|
char **rc_strlist_delete (char **list, const char *item)
|
||||||
{
|
{
|
||||||
@ -106,6 +105,7 @@ char **rc_strlist_delete (char **list, const char *item)
|
|||||||
|
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strlist_delete)
|
||||||
|
|
||||||
void rc_strlist_reverse (char **list)
|
void rc_strlist_reverse (char **list)
|
||||||
{
|
{
|
||||||
@ -128,6 +128,7 @@ void rc_strlist_reverse (char **list)
|
|||||||
j--;
|
j--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strlist_reverse)
|
||||||
|
|
||||||
void rc_strlist_free (char **list)
|
void rc_strlist_free (char **list)
|
||||||
{
|
{
|
||||||
@ -143,3 +144,4 @@ void rc_strlist_free (char **list)
|
|||||||
|
|
||||||
free (list);
|
free (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_strlist_free)
|
||||||
|
46
src/librc.c
46
src/librc.c
@ -5,25 +5,7 @@
|
|||||||
Released under the GPLv2
|
Released under the GPLv2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include "librc.h"
|
||||||
#include <sys/select.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <libgen.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "einfo.h"
|
|
||||||
#include "rc.h"
|
|
||||||
#include "rc-misc.h"
|
|
||||||
#include "strlist.h"
|
|
||||||
|
|
||||||
/* usecs to wait while we poll the fifo */
|
/* usecs to wait while we poll the fifo */
|
||||||
#define WAIT_INTERVAL 20000
|
#define WAIT_INTERVAL 20000
|
||||||
@ -50,11 +32,13 @@ bool rc_runlevel_starting (void)
|
|||||||
{
|
{
|
||||||
return (rc_is_dir (RC_SVCDIR "softscripts.old"));
|
return (rc_is_dir (RC_SVCDIR "softscripts.old"));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_runlevel_starting)
|
||||||
|
|
||||||
bool rc_runlevel_stopping (void)
|
bool rc_runlevel_stopping (void)
|
||||||
{
|
{
|
||||||
return (rc_is_dir (RC_SVCDIR "softscripts.new"));
|
return (rc_is_dir (RC_SVCDIR "softscripts.new"));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_runlevel_stopping)
|
||||||
|
|
||||||
char **rc_get_runlevels (void)
|
char **rc_get_runlevels (void)
|
||||||
{
|
{
|
||||||
@ -73,6 +57,7 @@ char **rc_get_runlevels (void)
|
|||||||
|
|
||||||
return (runlevels);
|
return (runlevels);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_runlevels)
|
||||||
|
|
||||||
char *rc_get_runlevel (void)
|
char *rc_get_runlevel (void)
|
||||||
{
|
{
|
||||||
@ -96,6 +81,7 @@ char *rc_get_runlevel (void)
|
|||||||
snprintf (buffer, sizeof (buffer), "sysinit");
|
snprintf (buffer, sizeof (buffer), "sysinit");
|
||||||
return (buffer);
|
return (buffer);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_runlevel)
|
||||||
|
|
||||||
void rc_set_runlevel (const char *runlevel)
|
void rc_set_runlevel (const char *runlevel)
|
||||||
{
|
{
|
||||||
@ -105,6 +91,7 @@ void rc_set_runlevel (const char *runlevel)
|
|||||||
fprintf (fp, "%s", runlevel);
|
fprintf (fp, "%s", runlevel);
|
||||||
fclose (fp);
|
fclose (fp);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_set_runlevel)
|
||||||
|
|
||||||
bool rc_runlevel_exists (const char *runlevel)
|
bool rc_runlevel_exists (const char *runlevel)
|
||||||
{
|
{
|
||||||
@ -119,6 +106,7 @@ bool rc_runlevel_exists (const char *runlevel)
|
|||||||
free (path);
|
free (path);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_runlevel_exists)
|
||||||
|
|
||||||
/* Resolve a service name to it's full path */
|
/* Resolve a service name to it's full path */
|
||||||
char *rc_resolve_service (const char *service)
|
char *rc_resolve_service (const char *service)
|
||||||
@ -154,6 +142,7 @@ char *rc_resolve_service (const char *service)
|
|||||||
snprintf (buffer, sizeof (buffer), RC_INITDIR "%s", service);
|
snprintf (buffer, sizeof (buffer), RC_INITDIR "%s", service);
|
||||||
return (strdup (buffer));
|
return (strdup (buffer));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_resolve_service)
|
||||||
|
|
||||||
bool rc_service_exists (const char *service)
|
bool rc_service_exists (const char *service)
|
||||||
{
|
{
|
||||||
@ -178,6 +167,7 @@ bool rc_service_exists (const char *service)
|
|||||||
free (file);
|
free (file);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_service_exists)
|
||||||
|
|
||||||
bool rc_service_in_runlevel (const char *service, const char *runlevel)
|
bool rc_service_in_runlevel (const char *service, const char *runlevel)
|
||||||
{
|
{
|
||||||
@ -200,6 +190,7 @@ bool rc_service_in_runlevel (const char *service, const char *runlevel)
|
|||||||
|
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_service_in_runlevel)
|
||||||
|
|
||||||
bool rc_mark_service (const char *service, const rc_service_state_t state)
|
bool rc_mark_service (const char *service, const rc_service_state_t state)
|
||||||
{
|
{
|
||||||
@ -344,6 +335,7 @@ bool rc_mark_service (const char *service, const rc_service_state_t state)
|
|||||||
free (init);
|
free (init);
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_mark_service)
|
||||||
|
|
||||||
bool rc_service_state (const char *service, const rc_service_state_t state)
|
bool rc_service_state (const char *service, const rc_service_state_t state)
|
||||||
{
|
{
|
||||||
@ -383,6 +375,7 @@ bool rc_service_state (const char *service, const rc_service_state_t state)
|
|||||||
free (file);
|
free (file);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_service_state)
|
||||||
|
|
||||||
bool rc_get_service_option (const char *service, const char *option,
|
bool rc_get_service_option (const char *service, const char *option,
|
||||||
char *value)
|
char *value)
|
||||||
@ -410,6 +403,7 @@ bool rc_get_service_option (const char *service, const char *option,
|
|||||||
free (file);
|
free (file);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_get_service_option)
|
||||||
|
|
||||||
bool rc_set_service_option (const char *service, const char *option,
|
bool rc_set_service_option (const char *service, const char *option,
|
||||||
const char *value)
|
const char *value)
|
||||||
@ -441,6 +435,7 @@ bool rc_set_service_option (const char *service, const char *option,
|
|||||||
free (file);
|
free (file);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_set_service_option)
|
||||||
|
|
||||||
static pid_t _exec_service (const char *service, const char *arg)
|
static pid_t _exec_service (const char *service, const char *arg)
|
||||||
{
|
{
|
||||||
@ -514,7 +509,7 @@ pid_t rc_stop_service (const char *service)
|
|||||||
|
|
||||||
return (_exec_service (service, "stop"));
|
return (_exec_service (service, "stop"));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_stop_service)
|
||||||
|
|
||||||
pid_t rc_start_service (const char *service)
|
pid_t rc_start_service (const char *service)
|
||||||
{
|
{
|
||||||
@ -523,6 +518,7 @@ pid_t rc_start_service (const char *service)
|
|||||||
|
|
||||||
return (_exec_service (service, "start"));
|
return (_exec_service (service, "start"));
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_start_service)
|
||||||
|
|
||||||
void rc_schedule_start_service (const char *service,
|
void rc_schedule_start_service (const char *service,
|
||||||
const char *service_to_start)
|
const char *service_to_start)
|
||||||
@ -558,6 +554,7 @@ void rc_schedule_start_service (const char *service,
|
|||||||
free (file);
|
free (file);
|
||||||
free (dir);
|
free (dir);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_schedule_start_service)
|
||||||
|
|
||||||
void rc_schedule_clear (const char *service)
|
void rc_schedule_clear (const char *service)
|
||||||
{
|
{
|
||||||
@ -570,6 +567,7 @@ void rc_schedule_clear (const char *service)
|
|||||||
rc_rm_dir (dir, true);
|
rc_rm_dir (dir, true);
|
||||||
free (dir);
|
free (dir);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_schedule_clear)
|
||||||
|
|
||||||
bool rc_wait_service (const char *service)
|
bool rc_wait_service (const char *service)
|
||||||
{
|
{
|
||||||
@ -615,6 +613,7 @@ bool rc_wait_service (const char *service)
|
|||||||
free (fifo);
|
free (fifo);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_wait_service)
|
||||||
|
|
||||||
char **rc_services_in_runlevel (const char *runlevel)
|
char **rc_services_in_runlevel (const char *runlevel)
|
||||||
{
|
{
|
||||||
@ -638,6 +637,7 @@ char **rc_services_in_runlevel (const char *runlevel)
|
|||||||
free (dir);
|
free (dir);
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_services_in_runlevel)
|
||||||
|
|
||||||
char **rc_services_in_state (rc_service_state_t state)
|
char **rc_services_in_state (rc_service_state_t state)
|
||||||
{
|
{
|
||||||
@ -673,6 +673,7 @@ char **rc_services_in_state (rc_service_state_t state)
|
|||||||
free (dir);
|
free (dir);
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_services_in_state)
|
||||||
|
|
||||||
bool rc_service_add (const char *runlevel, const char *service)
|
bool rc_service_add (const char *runlevel, const char *service)
|
||||||
{
|
{
|
||||||
@ -701,6 +702,7 @@ bool rc_service_add (const char *runlevel, const char *service)
|
|||||||
free (file);
|
free (file);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_service_add)
|
||||||
|
|
||||||
bool rc_service_delete (const char *runlevel, const char *service)
|
bool rc_service_delete (const char *runlevel, const char *service)
|
||||||
{
|
{
|
||||||
@ -721,6 +723,7 @@ bool rc_service_delete (const char *runlevel, const char *service)
|
|||||||
free (file);
|
free (file);
|
||||||
return (retval);
|
return (retval);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_service_delete)
|
||||||
|
|
||||||
char **rc_services_scheduled_by (const char *service)
|
char **rc_services_scheduled_by (const char *service)
|
||||||
{
|
{
|
||||||
@ -740,6 +743,7 @@ char **rc_services_scheduled_by (const char *service)
|
|||||||
|
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_services_scheduled_by)
|
||||||
|
|
||||||
char **rc_services_scheduled (const char *service)
|
char **rc_services_scheduled (const char *service)
|
||||||
{
|
{
|
||||||
@ -755,6 +759,7 @@ char **rc_services_scheduled (const char *service)
|
|||||||
free (dir);
|
free (dir);
|
||||||
return (list);
|
return (list);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_services_scheduled)
|
||||||
|
|
||||||
bool rc_allow_plug (char *service)
|
bool rc_allow_plug (char *service)
|
||||||
{
|
{
|
||||||
@ -793,3 +798,4 @@ bool rc_allow_plug (char *service)
|
|||||||
free (list);
|
free (list);
|
||||||
return (allow);
|
return (allow);
|
||||||
}
|
}
|
||||||
|
librc_hidden_def(rc_allow_plug)
|
||||||
|
124
src/librc.h
Normal file
124
src/librc.h
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
/*
|
||||||
|
* librc.h
|
||||||
|
* Internal header file to setup build env for files in librc.so
|
||||||
|
* Copyright 2007 Gentoo Foundation
|
||||||
|
* Released under the GPLv2
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _LIBRC_H_
|
||||||
|
#define _LIBRC_H_
|
||||||
|
|
||||||
|
#include <sys/select.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <regex.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#if defined(__DragonFly__) || defined(__FreeBSD__) || \
|
||||||
|
defined(__NetBSD__) || defined (__OpenBSD__)
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <sys/user.h>
|
||||||
|
#include <sys/sysctl.h>
|
||||||
|
#include <kvm.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "einfo.h"
|
||||||
|
#include "rc.h"
|
||||||
|
#include "rc-misc.h"
|
||||||
|
#include "strlist.h"
|
||||||
|
|
||||||
|
/* internal alias trickery! we dont want internal relocs! */
|
||||||
|
#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 librc_hidden_proto(name) __hidden_proto(name, __RC_##name)
|
||||||
|
# define librc_hidden_def(name) __hidden_ver(__RC_##name, name, name);
|
||||||
|
#else
|
||||||
|
# define librc_hidden_proto(name)
|
||||||
|
# define librc_hidden_def(name)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
librc_hidden_proto(rc_allow_plug)
|
||||||
|
librc_hidden_proto(rc_config_env)
|
||||||
|
librc_hidden_proto(rc_exists)
|
||||||
|
librc_hidden_proto(rc_filter_env)
|
||||||
|
librc_hidden_proto(rc_find_pids)
|
||||||
|
librc_hidden_proto(rc_free_deptree)
|
||||||
|
librc_hidden_proto(rc_get_config)
|
||||||
|
librc_hidden_proto(rc_get_config_entry)
|
||||||
|
librc_hidden_proto(rc_get_depends)
|
||||||
|
librc_hidden_proto(rc_get_depinfo)
|
||||||
|
librc_hidden_proto(rc_get_deptype)
|
||||||
|
librc_hidden_proto(rc_get_list)
|
||||||
|
librc_hidden_proto(rc_get_runlevel)
|
||||||
|
librc_hidden_proto(rc_get_runlevels)
|
||||||
|
librc_hidden_proto(rc_get_service_option)
|
||||||
|
librc_hidden_proto(rc_is_dir)
|
||||||
|
librc_hidden_proto(rc_is_env)
|
||||||
|
librc_hidden_proto(rc_is_exec)
|
||||||
|
librc_hidden_proto(rc_is_file)
|
||||||
|
librc_hidden_proto(rc_is_link)
|
||||||
|
librc_hidden_proto(rc_load_deptree)
|
||||||
|
librc_hidden_proto(rc_ls_dir)
|
||||||
|
librc_hidden_proto(rc_mark_service)
|
||||||
|
librc_hidden_proto(rc_order_services)
|
||||||
|
librc_hidden_proto(rc_resolve_service)
|
||||||
|
librc_hidden_proto(rc_rm_dir)
|
||||||
|
librc_hidden_proto(rc_runlevel_exists)
|
||||||
|
librc_hidden_proto(rc_runlevel_starting)
|
||||||
|
librc_hidden_proto(rc_runlevel_stopping)
|
||||||
|
librc_hidden_proto(rc_schedule_clear)
|
||||||
|
librc_hidden_proto(rc_schedule_start_service)
|
||||||
|
librc_hidden_proto(rc_service_add)
|
||||||
|
librc_hidden_proto(rc_service_daemons_crashed)
|
||||||
|
librc_hidden_proto(rc_service_delete)
|
||||||
|
librc_hidden_proto(rc_service_exists)
|
||||||
|
librc_hidden_proto(rc_service_in_runlevel)
|
||||||
|
librc_hidden_proto(rc_services_in_runlevel)
|
||||||
|
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_set_runlevel)
|
||||||
|
librc_hidden_proto(rc_set_service_daemon)
|
||||||
|
librc_hidden_proto(rc_set_service_option)
|
||||||
|
librc_hidden_proto(rc_start_service)
|
||||||
|
librc_hidden_proto(rc_stop_service)
|
||||||
|
librc_hidden_proto(rc_strcatpaths)
|
||||||
|
librc_hidden_proto(rc_strlist_add)
|
||||||
|
librc_hidden_proto(rc_strlist_addsort)
|
||||||
|
librc_hidden_proto(rc_strlist_addsortc)
|
||||||
|
librc_hidden_proto(rc_strlist_addsortu)
|
||||||
|
librc_hidden_proto(rc_strlist_delete)
|
||||||
|
librc_hidden_proto(rc_strlist_free)
|
||||||
|
librc_hidden_proto(rc_strlist_reverse)
|
||||||
|
librc_hidden_proto(rc_update_deptree)
|
||||||
|
librc_hidden_proto(rc_wait_service)
|
||||||
|
librc_hidden_proto(rc_xcalloc)
|
||||||
|
librc_hidden_proto(rc_xmalloc)
|
||||||
|
librc_hidden_proto(rc_xrealloc)
|
||||||
|
librc_hidden_proto(rc_xstrdup)
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user