bool loaded;
} SysvStub;
-static void free_sysvstub(SysvStub *s) {
+static SysvStub* free_sysvstub(SysvStub *s) {
if (!s)
- return;
+ return NULL;
free(s->name);
free(s->path);
strv_free(s->after);
strv_free(s->wants);
strv_free(s->wanted_by);
- free(s);
+ return mfree(s);
}
-
DEFINE_TRIVIAL_CLEANUP_FUNC(SysvStub*, free_sysvstub);
static void free_sysvstub_hashmapp(Hashmap **h) {
path_escaped);
if (s->description) {
- _cleanup_free_ char *t;
+ _cleanup_free_ char *t = NULL;
t = specifier_escape(s->description);
if (!t)
yes_no(!s->pid_file));
if (s->pid_file) {
- _cleanup_free_ char *t;
+ _cleanup_free_ char *t = NULL;
t = specifier_escape(s->pid_file);
if (!t)
}
/* Strip ".sh" suffix from file name for comparison */
- filename_no_sh = strdupa(filename);
+ filename_no_sh = strdupa_safe(filename);
e = endswith(filename_no_sh, ".sh");
if (e) {
*e = '\0';
}
static int load_sysv(SysvStub *s) {
- _cleanup_fclose_ FILE *f;
+ _cleanup_fclose_ FILE *f = NULL;
unsigned line = 0;
int r;
enum {
* continuation */
size_t k;
- char *j;
+ const char *j;
k = strlen(t);
if (k > 0 && t[k-1] == '\\')
state = NORMAL;
j = strstrip(t);
- if (!isempty(j)) {
- char *d = NULL;
-
- if (chkconfig_description)
- d = strjoin(chkconfig_description, " ", j);
- else
- d = strdup(j);
- if (!d)
- return log_oom();
-
- free(chkconfig_description);
- chkconfig_description = d;
- }
+ if (!isempty(j) && !strextend_with_separator(&chkconfig_description, " ", j))
+ return log_oom();
} else if (IN_SET(state, LSB, LSB_DESCRIPTION)) {
const char *j;
j = strstrip(t);
- if (!isempty(j)) {
- char *d = NULL;
-
- if (long_description)
- d = strjoin(long_description, " ", t);
- else
- d = strdup(j);
- if (!d)
- return log_oom();
-
- free(long_description);
- long_description = d;
- }
-
+ if (!isempty(j) && !strextend_with_separator(&long_description, " ", j))
+ return log_oom();
} else
state = LSB;
}
STRV_FOREACH(path, sysvinit_path) {
_cleanup_closedir_ DIR *d = NULL;
- struct dirent *de;
d = opendir(*path);
if (!d) {
for (unsigned i = 0; i < ELEMENTSOF(rcnd_table); i ++) {
_cleanup_closedir_ DIR *d = NULL;
_cleanup_free_ char *path = NULL;
- struct dirent *de;
path = path_join(*p, rcnd_table[i].path);
if (!path) {