Control: tags -1 patch Jesse,
Would something like this work? Mark commit e16d596a0b53256f89193063ee980c13c81f9368 Author: Mark Hindley <[email protected]> Date: Mon Aug 25 14:51:17 2025 +0100 Use stdbool.h, fixes FTBFS with gcc-15. Closes: #1096840 diff --git a/insserv.c b/insserv.c index 80a3066..ab39157 100644 --- a/insserv.c +++ b/insserv.c @@ -182,12 +182,12 @@ static char buf[LINE_MAX]; /* When to be verbose, and what level of verbosity */ static int verbose = 0; -static boolean silent_mode = false; -static boolean dryrun = false; +static bool silent_mode = false; +static bool dryrun = false; /* When paths set do not add root if any */ -static boolean set_override = false; -static boolean set_insconf = false; +static bool set_override = false; +static bool set_insconf = false; /* Legacy and current location for dependency files */ /* #define DEPENDENCY_PATH "/lib/insserv/" */ @@ -202,8 +202,8 @@ char **file_filters = NULL; /* Wether systemd is active or not */ #if WANT_SYSTEMD -static boolean systemd = false; -static boolean is_overridden_by_systemd(const char *); +static bool systemd = false; +static bool is_overridden_by_systemd(const char *); #endif /* WANT_SYSTEMD */ /* Search results points here */ @@ -405,14 +405,14 @@ static void rememberreq(service_t * restrict serv, uint bit, const char * restri char * tmp = strdupa(required); list_t * ptr, * list; ushort old = bit; - boolean can_expand_name = false; + bool can_expand_name = false; if (!tmp) error("%s", strerror(errno)); while ((token = strsep(&tmp, delimeter)) && *token) { service_t * req, * here, * need; - boolean found = false; + bool found = false; bit = old; @@ -528,10 +528,10 @@ static void reversereq(service_t *restrict serv, uint bit, const char *restrict /* * Check required services for name */ -static boolean chkrequired(service_t *restrict serv, const boolean recursive) attribute((nonnull(1))); -static boolean chkrequired(service_t *restrict serv, const boolean recursive) +static bool chkrequired(service_t *restrict serv, const bool recursive) attribute((nonnull(1))); +static bool chkrequired(service_t *restrict serv, const bool recursive) { - boolean ret = true; + bool ret = true; list_t * pos; /* Technically, it is not possible for this function to be called if serv is @@ -593,11 +593,11 @@ static boolean chkrequired(service_t *restrict serv, const boolean recursive) /* * Check dependencies for name as a service */ -static boolean chkdependencies(service_t *restrict serv) attribute((nonnull(1))); -static boolean chkdependencies(service_t *restrict serv) +static bool chkdependencies(service_t *restrict serv) attribute((nonnull(1))); +static bool chkdependencies(service_t *restrict serv) { const char * const name = serv->name; - boolean ret = true; + bool ret = true; list_t * ptr; list_for_each(ptr, s_start) { @@ -972,7 +972,7 @@ static inline void makedep(void) const service_t * lserv[100] = {0}; unsigned long lcnt = 0; #endif /* not MINIMAL_DEPEND */ - boolean mark; + bool mark; list_t * pos; #if defined(MINIMAL_RULES) && (MINIMAL_RULES != 0) @@ -994,7 +994,7 @@ static inline void makedep(void) req_t * req = getreq(pos); service_t * dep = req->serv; #if defined(MINIMAL_DEPEND) && (MINIMAL_DEPEND != 0) - boolean shadow = false; + bool shadow = false; unsigned long n; #endif /* not MINIMAL_DEPEND */ const char * name; @@ -1114,7 +1114,7 @@ static inline void makedep(void) const service_t * lserv[100] = {0}; unsigned long lcnt = 0; #endif /* not MINIMAL_DEPEND */ - boolean mark; + bool mark; list_t * pos; #if defined(MINIMAL_RULES) && (MINIMAL_RULES != 0) @@ -1139,7 +1139,7 @@ static inline void makedep(void) req_t * rev = getreq(pos); service_t * dep = rev->serv; #if defined(MINIMAL_DEPEND) && (MINIMAL_DEPEND != 0) - boolean shadow = false; + bool shadow = false; unsigned long n; #endif /* not MINIMAL_DEPEND */ const char * name; @@ -1267,11 +1267,11 @@ out: * Check for script in list. */ static int curr_argc = -1; -static inline boolean chkfor(const char *restrict const script, +static inline bool chkfor(const char *restrict const script, char **restrict const list, const int cnt) attribute((nonnull(1,2))); -static inline boolean chkfor(const char *restrict const script, char **restrict const list, const int cnt) +static inline bool chkfor(const char *restrict const script, char **restrict const list, const int cnt) { - boolean isinc = false; + bool isinc = false; register int c = cnt; curr_argc = -1; @@ -1343,10 +1343,10 @@ static inline void regcompiler(regex_t *restrict preg, const char *restrict rege /* * Wrapper for regexec(3) */ -static inline boolean regexecutor(regex_t *restrict preg, +static inline bool regexecutor(regex_t *restrict preg, const char *restrict string, size_t nmatch, regmatch_t pmatch[], int eflags) attribute((nonnull(1,2))); -static inline boolean regexecutor(regex_t *preg, const char *string, +static inline bool regexecutor(regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags) { register int ret = regexec(preg, string, nmatch, pmatch, eflags); @@ -1511,9 +1511,9 @@ static char *is_upstart_job(const char *path) static int o_flags = O_RDONLY; static uchar scan_lsb_headers(const int dfd, const char *restrict const path, - const boolean cache, const boolean ignore) attribute((nonnull(2))); + const bool cache, const bool ignore) attribute((nonnull(2))); static uchar scan_lsb_headers(const int dfd, const char *restrict const path, - const boolean cache, const boolean ignore) + const bool cache, const bool ignore) { regmatch_t subloc[SUBNUM_SHD+1], *val = &subloc[SUBNUM-1], *shl = &subloc[SUBNUM_SHD-1]; char *upstart_job = (char*)0; @@ -1794,10 +1794,10 @@ static char * scriptname(int dfd, const char *restrict const path, char **restri static uchar load_overrides(const char *restrict const dir, const char *restrict const name, - const boolean cache, const boolean ignore) attribute((nonnull(1,2))); + const bool cache, const bool ignore) attribute((nonnull(1,2))); static uchar load_overrides(const char *restrict const dir, const char *restrict const name, - const boolean cache, const boolean ignore) + const bool cache, const bool ignore) { uchar ret = 0; char fullpath[PATH_MAX+1]; @@ -1818,11 +1818,11 @@ static uchar load_overrides(const char *restrict const dir, static uchar scan_script_defaults(int dfd, const char *const restrict path, const char *const restrict override_path, char **restrict first, - const boolean cache, const boolean ignore) attribute((nonnull(2,3))); + const bool cache, const bool ignore) attribute((nonnull(2,3))); static uchar scan_script_defaults(int dfd, const char *restrict const path, const char *restrict const override_path, char **restrict first, - const boolean cache, const boolean ignore) + const bool cache, const bool ignore) { char * name = scriptname(dfd, path, first); uchar ret = 0; @@ -1987,9 +1987,9 @@ char * lvl2str(const ushort lvl) */ static void scan_script_locations(const char *const restrict path, const char *const restrict override_path, - const boolean ignore) attribute((nonnull(1,2))); + const bool ignore) attribute((nonnull(1,2))); static void scan_script_locations(const char *const path, const char *const override_path, - const boolean ignore) + const bool ignore) { int runlevel; @@ -2268,7 +2268,7 @@ err: static int cfgfile_filter(const struct dirent *restrict d) attribute((nonnull(1))); static int cfgfile_filter(const struct dirent *restrict d) { - boolean ret = false; + bool ret = false; const char * name = d->d_name; const char * end; @@ -2298,7 +2298,7 @@ static int cfgfile_filter(const struct dirent *restrict d) /* check loaded filters */ else if (file_filters) { - boolean found = false; + bool found = false; int index = 0; while ( (file_filters[index]) && (! found) ) { @@ -2630,10 +2630,10 @@ static inline char * scan_for(DIR *const rcdir, * a sub process "/bin/sh" forked off for executing a temporary file for %preun, * %postun, %pre, or %post scriptlet. */ -static inline boolean underrpm(void) +static inline bool underrpm(void) { - boolean ret = false; - boolean mnt = true; + bool ret = false; + bool mnt = true; const pid_t pp = getppid(); char buf[PATH_MAX], *argv[3], *ptr; # if defined(USE_RPMLIB) && (USE_RPMLIB > 0) @@ -2724,9 +2724,9 @@ out: /* * Systemd integration */ -static boolean is_overridden_by_systemd(const char *service) { +static bool is_overridden_by_systemd(const char *service) { char *p; - boolean ret = false; + bool ret = false; if (asprintf(&p, SYSTEMD_SERVICE_PATH "/%s.service", service) < 0) error("asprintf(): %s\n", strerror(errno)); @@ -2737,7 +2737,7 @@ static boolean is_overridden_by_systemd(const char *service) { return ret; } -static void forward_to_systemd (const char *initscript, const char *verb, boolean alternative_root) { +static void forward_to_systemd (const char *initscript, const char *verb, bool alternative_root) { const char *name; if (initscript == NULL) @@ -2783,9 +2783,9 @@ static void forward_to_systemd (const char *initscript, const char *verb, boolea stop or stop levels. Returns true if overlap is found and false is none is found. */ -boolean Start_Stop_Overlap(char *start_levels, char *stop_levels) +bool Start_Stop_Overlap(char *start_levels, char *stop_levels) { - boolean found_overlap = false; + bool found_overlap = false; int string_index = 0; char *found; @@ -2865,16 +2865,16 @@ int main (int argc, char *argv[]) char * insconf = INSCONF; const char *const ipath = path; int runlevel, c, dfd; - boolean del = false; - boolean defaults = false; - boolean ignore = false; - boolean loadarg = false; - boolean recursive = false; - boolean showall = false; - boolean waserr = false; - /* boolean legacy_path = false; */ - boolean free_dependency_path = false; - boolean overlap; + bool del = false; + bool defaults = false; + bool ignore = false; + bool loadarg = false; + bool recursive = false; + bool showall = false; + bool waserr = false; + /* bool legacy_path = false; */ + bool free_dependency_path = false; + bool overlap; myname = basename(*argv); @@ -3231,8 +3231,8 @@ int main (int argc, char *argv[]) service_t * service = (service_t*)0; char * token; char * begin = (char*)0; /* hold start pointer of strings handled by strsep() */ - boolean hard = false; - boolean isarg = false; + bool hard = false; + bool isarg = false; uchar lsb = 0; #if defined(DEBUG) && (DEBUG > 0) int nobug = 0; @@ -3588,7 +3588,7 @@ int main (int argc, char *argv[]) } if (service) { - boolean known = (service->attr.flags & SERV_KNOWN); + bool known = (service->attr.flags & SERV_KNOWN); service->attr.flags |= SERV_KNOWN; if (!known) { @@ -3640,7 +3640,7 @@ int main (int argc, char *argv[]) * check if all services are around for this script. */ if (isarg && !ignore) { - boolean ok = true; + bool ok = true; if (del) ok = chkdependencies(service); else @@ -3806,7 +3806,7 @@ int main (int argc, char *argv[]) char * ptr = argr[curr_argc]; struct _mark { const char * wrd; - const boolean sk; + const bool sk; char * order; char ** str; } mark[] = { @@ -4146,8 +4146,8 @@ int main (int argc, char *argv[]) script = (char*)0; while ((serv = listscripts(&script, 'X', lvl))) { - boolean this = chkfor(script, argv, argc); - boolean found, slink; + bool this = chkfor(script, argv, argc); + bool found, slink; char * clink; if (*script == '$') /* Do not link in virtual dependencies */ @@ -4331,8 +4331,8 @@ int main (int argc, char *argv[]) script = (char*)0; while ((serv = listscripts(&script, 'X', seek))) { - boolean this = chkfor(script, argv, argc); - boolean found; + bool this = chkfor(script, argv, argc); + bool found; char * clink; char mode; diff --git a/listing.c b/listing.c index 98fa278..f82a9e9 100644 --- a/listing.c +++ b/listing.c @@ -237,10 +237,10 @@ out: /* * Remember loops to warn only once */ -static inline boolean remembernode (handle_t *restrict const peg) attribute((always_inline,nonnull(1))); -static inline boolean remembernode (handle_t *restrict const peg) +static inline bool remembernode (handle_t *restrict const peg) attribute((always_inline,nonnull(1))); +static inline bool remembernode (handle_t *restrict const peg) { - register boolean ret = true; + register bool ret = true; if (peg->flags & DIR_LOOP) goto out; @@ -330,7 +330,7 @@ static void __follow (dir_t *restrict dir, dir_t *restrict skip, const int level for (tmp = dir; tmp; tmp = getnextlink(l_list)) { const typeof(attof(tmp)->flags) sflags = attof(tmp)->flags; - register boolean recursion = true; + register bool recursion = true; handle_t * ptmp = (mode == 'K') ? &tmp->stopp : &tmp->start; uchar * order = &ptmp->deep; list_t * dent; @@ -567,7 +567,7 @@ void lsort(const char type) if (dir->stopp.deep == order) { service_t *const orig = getorig(rev->serv); list_t * chk; - boolean found = false; + bool found = false; list_for_each_prev(chk, &sort) { /* check if service was already resorted */ req_t * this = getreq(chk); @@ -622,7 +622,7 @@ void lsort(const char type) if (dir->start.deep == order) { service_t * orig = getorig(req->serv); list_t * chk; - boolean found = false; + bool found = false; list_for_each_prev(chk, &sort) { /* check if service was already resorted */ req_t * this = getreq(chk); @@ -734,7 +734,7 @@ void nickservice(service_t *restrict orig, service_t *restrict nick) list_for_each_safe(dent, safe, &nick->sort.req) { req_t * this = getreq(dent); - boolean ok = true; + bool ok = true; list_t * req; list_for_each(req, &orig->sort.req) { if (!strcmp(this->serv->name,getreq(req)->serv->name)) { @@ -751,7 +751,7 @@ void nickservice(service_t *restrict orig, service_t *restrict nick) list_for_each_safe(dent, safe, &nick->sort.rev) { req_t * this = getreq(dent); - boolean ok = true; + bool ok = true; list_t * rev; list_for_each(rev, &orig->sort.rev) { if (!strcmp(this->serv->name,getreq(rev)->serv->name)) { @@ -851,7 +851,7 @@ void clear_all(void) list_for_each_safe(dent, safe, &orv->sort.req) { req_t * this = getreq(dent); - boolean ok = true; + bool ok = true; list_t * req; list_for_each(req, &srv->sort.req) { if (!strcmp(this->serv->name,getreq(req)->serv->name)) { @@ -873,7 +873,7 @@ void clear_all(void) list_for_each_safe(dent, safe, &orv->sort.rev) { req_t * this = getreq(dent); - boolean ok = true; + bool ok = true; list_t * rev; list_for_each(rev, &srv->sort.rev) { if (!strcmp(this->serv->name,getreq(rev)->serv->name)) { @@ -926,7 +926,7 @@ void follow_all(void) } } -boolean is_loop_detected(void) +bool is_loop_detected(void) { list_t *tmp; list_for_each(tmp, d_start) { @@ -1020,10 +1020,10 @@ void show_all() /* * Used within loops to get scripts not included in this runlevel */ -boolean notincluded(const char *restrict const script, const char mode, const int runlevel) +bool notincluded(const char *restrict const script, const char mode, const int runlevel) { list_t *tmp; - boolean ret = false; + bool ret = false; const ushort lvl = map_runlevel_to_lvl (runlevel); list_for_each_prev(tmp, d_start) { @@ -1128,7 +1128,7 @@ void runlevels(service_t *restrict serv, const char mode, const char *restrict l * Reorder all services starting with a service * being in same runlevels. */ -void setorder(const char *restrict script, const char mode, const int order, const boolean recursive) +void setorder(const char *restrict script, const char mode, const int order, const bool recursive) { dir_t * dir = findscript(script); handle_t * peg; @@ -1194,11 +1194,11 @@ int getorder(const char *restrict script, const char mode) * One script and several provided facilities leads * to the same order for those facilities. */ -boolean makeprov(service_t *restrict serv, const char *restrict script) +bool makeprov(service_t *restrict serv, const char *restrict script) { dir_t *restrict alias = findscript(script); dir_t *restrict dir = (dir_t *restrict)serv->dir; - boolean ret = true; + bool ret = true; if (!dir->script) { list_t * ptr; diff --git a/listing.h b/listing.h index b7d8b84..373a46e 100644 --- a/listing.h +++ b/listing.h @@ -20,11 +20,11 @@ * */ +#include <stdbool.h> #include <stddef.h> #include <sys/types.h> #include "config.h" -typedef enum _boolean {false, true} boolean; typedef unsigned char uchar; #ifndef __USE_MISC typedef unsigned short ushort; @@ -191,8 +191,8 @@ static inline void join(list_t *restrict list, list_t *restrict head) } } -static inline boolean list_empty(const list_t *restrict const head) attribute((always_inline,nonnull(1))); -static inline boolean list_empty(const list_t *restrict const head) +static inline bool list_empty(const list_t *restrict const head) attribute((always_inline,nonnull(1))); +static inline bool list_empty(const list_t *restrict const head) { return head->next == head; } @@ -308,14 +308,14 @@ extern void follow_all(void); extern void show_all(void); extern void requires(service_t *restrict this, service_t *restrict dep, const char mode) attribute((nonnull(1,2))); extern void runlevels(service_t *restrict serv, const char mode, const char *restrict lvl) attribute((nonnull(1,3))); -extern boolean makeprov(service_t *restrict serv, const char *restrict script) attribute((nonnull(1,2))); -extern void setorder(const char *restrict script, const char mode, const int order, const boolean recursive) attribute((nonnull(1))); +extern bool makeprov(service_t *restrict serv, const char *restrict script) attribute((nonnull(1,2))); +extern void setorder(const char *restrict script, const char mode, const int order, const bool recursive) attribute((nonnull(1))); extern int getorder(const char *restrict script, const char mode) attribute((nonnull(1))); -extern boolean notincluded(const char *restrict const script, const char mode, const int runlevel) attribute((nonnull(1))); +extern bool notincluded(const char *restrict const script, const char mode, const int runlevel) attribute((nonnull(1))); extern const char * getscript(const char *restrict prov) attribute((nonnull(1))); extern const char * getprovides(const char *restrict script) attribute((nonnull(1))); extern service_t * listscripts(const char **restrict script, const char mode, const ushort lvl); -extern boolean is_loop_detected(void); +extern bool is_loop_detected(void); extern service_t * addservice(const char *restrict const serv) attribute((malloc,nonnull(1))); extern service_t * findservice(const char *restrict const name); extern service_t * getorig(service_t *restrict serv) attribute((const,nonnull(1)));

