Match the recent api change to rc_strlist_join also. We now free the 2nd list for ease of use.

This commit is contained in:
Roy Marples
2007-09-18 14:08:56 +00:00
parent c8b03c96b7
commit 75b5fdff29
7 changed files with 48 additions and 46 deletions

View File

@@ -493,25 +493,22 @@ char **rc_order_services (rc_depinfo_t *deptree, const char *runlevel,
strcmp (runlevel, RC_LEVEL_REBOOT) == 0)
{
list = rc_ls_dir (RC_SVCDIR_STARTING, RC_LS_INITD);
list = rc_strlist_join (list,
rc_ls_dir (RC_SVCDIR_INACTIVE, RC_LS_INITD));
list = rc_strlist_join (list,
rc_ls_dir (RC_SVCDIR_STARTED, RC_LS_INITD));
rc_strlist_join (&list,
rc_ls_dir (RC_SVCDIR_INACTIVE, RC_LS_INITD));
rc_strlist_join (&list,
rc_ls_dir (RC_SVCDIR_STARTED, RC_LS_INITD));
reverse = true;
} else {
list = rc_services_in_runlevel (runlevel);
/* Add coldplugged services */
list = rc_strlist_join (list,
rc_ls_dir (RC_SVCDIR_COLDPLUGGED, RC_LS_INITD));
rc_strlist_join (&list, rc_ls_dir (RC_SVCDIR_COLDPLUGGED, RC_LS_INITD));
/* If we're not the boot runlevel then add that too */
if (strcmp (runlevel, bootlevel) != 0) {
char *path = rc_strcatpaths (RC_RUNLEVELDIR, bootlevel,
(char *) NULL);
list = rc_strlist_join (list,
rc_ls_dir (path, RC_LS_INITD));
rc_strlist_join (&list, rc_ls_dir (path, RC_LS_INITD));
free (path);
}
}

View File

@@ -462,7 +462,7 @@ char **rc_filter_env (void)
if (! whitelist)
ewarn ("system environment whitelist (" SYS_WHITELIST ") missing");
whitelist = rc_strlist_join (whitelist, rc_get_list (USR_WHITELIST));
rc_strlist_join (&whitelist, rc_get_list (USR_WHITELIST));
if (! whitelist)
return (NULL);

View File

@@ -135,26 +135,29 @@ int rc_strlist_delete (char ***list, const char *item)
}
librc_hidden_def(rc_strlist_delete)
char **rc_strlist_join (char **list1, char **list2)
int rc_strlist_join (char ***list1, char **list2)
{
char **lst1 = *list1;
char **newlist;
int i = 0;
int j = 0;
if (! list1 && list2)
return (list2);
if (! list2 && list1)
return (list1);
if (! list1 && ! list2)
return (NULL);
if (! lst1 && list2) {
*list1 = list2;
return (0);
}
if (! list2 && lst1)
return (0);
if (! lst1 && ! list2)
return (0);
while (list1[i])
while (lst1[i])
i++;
while (list2[j])
j++;
newlist = rc_xrealloc (list1, sizeof (char *) * (i + j + 1));
newlist = rc_xrealloc (lst1, sizeof (char *) * (i + j + 1));
j = 0;
while (list2[j]) {
@@ -164,7 +167,11 @@ char **rc_strlist_join (char **list1, char **list2)
}
newlist[i] = NULL;
return (newlist);
/* We free list2 here for ease of use. */
free (list2);
*list1 = newlist;
return (0);
}
librc_hidden_def(rc_strlist_join)

View File

@@ -815,7 +815,7 @@ int main (int argc, char **argv)
/* Ensure our environment is pure
Also, add our configuration to it */
env = rc_filter_env ();
env = rc_strlist_join (env, rc_make_env ());
rc_strlist_join (&env, rc_make_env ());
if (env) {
char *p;
@@ -1089,10 +1089,10 @@ int main (int argc, char **argv)
/* Build a list of all services to stop and then work out the
correct order for stopping them */
stop_services = rc_ls_dir (RC_SVCDIR_STARTING, RC_LS_INITD);
stop_services = rc_strlist_join (stop_services,
rc_ls_dir (RC_SVCDIR_INACTIVE, RC_LS_INITD));
stop_services = rc_strlist_join (stop_services,
rc_ls_dir (RC_SVCDIR_STARTED, RC_LS_INITD));
rc_strlist_join (&stop_services,
rc_ls_dir (RC_SVCDIR_INACTIVE, RC_LS_INITD));
rc_strlist_join (&stop_services,
rc_ls_dir (RC_SVCDIR_STARTED, RC_LS_INITD));
types = NULL;
rc_strlist_add (&types, "ineed");
@@ -1123,25 +1123,22 @@ int main (int argc, char **argv)
}
tmp = rc_strcatpaths (RC_RUNLEVELDIR, newlevel ? newlevel : runlevel,
(char *) NULL);
start_services = rc_strlist_join (start_services,
rc_ls_dir (tmp, RC_LS_INITD));
rc_strlist_join (&start_services, rc_ls_dir (tmp, RC_LS_INITD));
CHAR_FREE (tmp);
} else {
/* Store our list of coldplugged services */
coldplugged_services = rc_strlist_join (coldplugged_services,
rc_ls_dir (RC_SVCDIR_COLDPLUGGED, RC_LS_INITD));
rc_strlist_join (&coldplugged_services,
rc_ls_dir (RC_SVCDIR_COLDPLUGGED, RC_LS_INITD));
if (strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_SINGLE) != 0 &&
strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_SHUTDOWN) != 0 &&
strcmp (newlevel ? newlevel : runlevel, RC_LEVEL_REBOOT) != 0)
{
/* We need to include the boot runlevel services if we're not in it */
char **services = rc_services_in_runlevel (bootlevel);
start_services = rc_strlist_join (start_services, services);
services = rc_services_in_runlevel (newlevel ? newlevel : runlevel);
start_services = rc_strlist_join (start_services, services);
services = NULL;
rc_strlist_join (&start_services,
rc_services_in_runlevel (bootlevel));
rc_strlist_join (&start_services,
rc_services_in_runlevel (newlevel ?
newlevel : runlevel));
STRLIST_FOREACH (coldplugged_services, service, i)
rc_strlist_add (&start_services, service);

View File

@@ -203,7 +203,7 @@ char *rc_strlist_addsort (char ***list, const char *item);
char *rc_strlist_addsortc (char ***list, const char *item);
char *rc_strlist_addsortu (char ***list, const char *item);
int rc_strlist_delete (char ***list, const char *item);
char **rc_strlist_join (char **list1, char **list2);
int rc_strlist_join (char ***list1, char **list2);
void rc_strlist_reverse (char **list);
void rc_strlist_free (char **list);

View File

@@ -1049,7 +1049,7 @@ int runscript (int argc, char **argv)
/* Ensure our environment is pure
Also, add our configuration to it */
env = rc_filter_env ();
env = rc_strlist_join (env, rc_make_env ());
rc_strlist_join (&env, rc_make_env ());
if (env) {
char *p;