convert calloc to xzalloc
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 3 Jan 2007 02:56:00 +0000 (02:56 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 3 Jan 2007 02:56:00 +0000 (02:56 -0000)
fix sleep-on-die option

include/libbb.h
init/init.c
libbb/error_msg_and_die.c
libbb/fflush_stdout_and_exit.c
libbb/herror_msg_and_die.c
libbb/perror_msg_and_die.c
miscutils/crond.c
networking/httpd.c
util-linux/fdisk_sgi.c

index 13303073d0f0117df577a9ef20184011eedf0cd4..7ee66dce6df5ca3c7d7234eecab8376419b79692 100644 (file)
@@ -397,6 +397,7 @@ extern const char *msg_eol;
 extern int logmode;
 extern int die_sleep;
 extern int xfunc_error_retval;
+extern void sleep_and_die(void) ATTRIBUTE_NORETURN;
 extern void bb_show_usage(void) ATTRIBUTE_NORETURN ATTRIBUTE_EXTERNALLY_VISIBLE;
 extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
 extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
index 2e8ca3ca83d35d02b44f6c0acf386bfb2d7275a2..6fc68afb18ea576a694c0eee1d713cea2ca4424a 100644 (file)
@@ -19,7 +19,7 @@
 
 #include "init_shared.h"
 
-#ifdef CONFIG_SYSLOGD
+#if ENABLE_SYSLOGD
 # include <sys/syslog.h>
 #endif
 
@@ -60,7 +60,7 @@ struct serial_struct {
 #define _PATH_STDPATH  "/usr/bin:/bin:/usr/sbin:/sbin"
 #endif
 
-#if defined CONFIG_FEATURE_INIT_COREDUMPS
+#if ENABLE_FEATURE_INIT_COREDUMPS
 /*
  * When a file named CORE_ENABLE_FLAG_FILE exists, setrlimit is called
  * before processes are spawned to set core file size as unlimited.
@@ -121,7 +121,7 @@ struct init_action {
 static struct init_action *init_action_list = NULL;
 static char console[CONSOLE_BUFF_SIZE] = CONSOLE_DEV;
 
-#ifndef CONFIG_SYSLOGD
+#if !ENABLE_SYSLOGD
 static char *log_console = VC_5;
 #endif
 #if !ENABLE_DEBUG_INIT
@@ -132,7 +132,7 @@ enum {
        LOG = 0x1,
        CONSOLE = 0x2,
 
-#if defined CONFIG_FEATURE_EXTRA_QUIET
+#if ENABLE_FEATURE_EXTRA_QUIET
        MAYBE_CONSOLE = 0x0,
 #else
        MAYBE_CONSOLE = CONSOLE,
@@ -162,11 +162,13 @@ static int waitfor(const struct init_action *a, pid_t pid);
 static void shutdown_signal(int sig);
 #endif
 
+#if !ENABLE_DEBUG_INIT
 static void loop_forever(void)
 {
        while (1)
                sleep(1);
 }
+#endif
 
 /* Print a message to the specified device.
  * Device may be bitwise-or'd from LOG | CONSOLE */
@@ -182,7 +184,7 @@ static void message(int device, const char *fmt, ...)
        va_list arguments;
        int l;
        RESERVE_CONFIG_BUFFER(msg, 1024);
-#ifndef CONFIG_SYSLOGD
+#if !ENABLE_SYSLOGD
        static int log_fd = -1;
 #endif
 
@@ -191,7 +193,7 @@ static void message(int device, const char *fmt, ...)
        l = vsnprintf(msg + 1, 1024 - 2, fmt, arguments) + 1;
                va_end(arguments);
 
-#ifdef CONFIG_SYSLOGD
+#if ENABLE_SYSLOGD
        /* Log the message to syslogd */
        if (device & LOG) {
                /* don`t out "\r\n" */
@@ -313,7 +315,7 @@ static void console_init(void)
        }
        if (fd < 0) {
                /* Perhaps we should panic here? */
-#ifndef CONFIG_SYSLOGD
+#if !ENABLE_SYSLOGD
                log_console =
 #endif
                safe_strncpy(console, bb_dev_null, sizeof(console));
@@ -325,7 +327,7 @@ static void console_init(void)
                         * if TERM is set to linux (the default) */
                        if (s == NULL || strcmp(s, "linux") == 0)
                                putenv("TERM=vt102");
-#ifndef CONFIG_SYSLOGD
+#if !ENABLE_SYSLOGD
                        log_console = console;
 #endif
                } else {
@@ -510,7 +512,7 @@ static pid_t run(const struct init_action *a)
                                cmd[0][0] = '-';
                                strcpy(cmd[0] + 1, s);
                        }
-#ifdef CONFIG_FEATURE_INIT_SCTTY
+#if ENABLE_FEATURE_INIT_SCTTY
                        /* Establish this process as session leader and
                         * (attempt) to make the tty (if any) a controlling tty.
                         */
@@ -543,7 +545,7 @@ static pid_t run(const struct init_action *a)
                message(LOG, "Starting pid %d, console %s: '%s'",
                                  getpid(), a->terminal, cmdpath);
 
-#if defined CONFIG_FEATURE_INIT_COREDUMPS
+#if ENABLE_FEATURE_INIT_COREDUMPS
                {
                        struct stat sb;
                        if (stat(CORE_ENABLE_FLAG_FILE, &sb) == 0) {
@@ -622,11 +624,12 @@ static void init_reboot(unsigned long magic)
        /* We have to fork here, since the kernel calls do_exit(0) in
         * linux/kernel/sys.c, which can cause the machine to panic when
         * the init process is killed.... */
-       if ((pid = fork()) == 0) {
+       pid = vfork();
+       if (pid == 0) { /* child */
                reboot(magic);
                _exit(0);
        }
-       waitpid (pid, NULL, 0);
+       waitpid(pid, NULL, 0);
 }
 
 static void shutdown_system(void)
@@ -746,7 +749,6 @@ static void shutdown_signal(int sig)
        sleep(2);
 
        init_reboot(rb);
-
        loop_forever();
 }
 
@@ -785,11 +787,7 @@ static void new_init_action(int action, const char *command, const char *cons)
        if (strcmp(cons, bb_dev_null) == 0 && (action & ASKFIRST))
                return;
 
-       new_action = calloc((size_t) (1), sizeof(struct init_action));
-       if (!new_action) {
-               message(LOG | CONSOLE, "Memory allocation failure");
-               loop_forever();
-       }
+       new_action = xzalloc(sizeof(struct init_action));
 
        /* Append to the end of the list */
        for (a = last = init_action_list; a; a = a->next) {
@@ -841,7 +839,7 @@ static void delete_init_action(struct init_action *action)
  */
 static void parse_inittab(void)
 {
-#ifdef CONFIG_FEATURE_USE_INITTAB
+#if ENABLE_FEATURE_USE_INITTAB
        FILE *file;
        char buf[INIT_BUFFS_SIZE], lineAsRead[INIT_BUFFS_SIZE];
        char tmpConsole[CONSOLE_BUFF_SIZE];
@@ -870,7 +868,7 @@ static void parse_inittab(void)
                new_init_action(SYSINIT, INIT_SCRIPT, "");
 
                return;
-#ifdef CONFIG_FEATURE_USE_INITTAB
+#if ENABLE_FEATURE_USE_INITTAB
        }
 
        while (fgets(buf, INIT_BUFFS_SIZE, file) != NULL) {
@@ -941,10 +939,10 @@ static void parse_inittab(void)
        }
        fclose(file);
        return;
-#endif                                                 /* CONFIG_FEATURE_USE_INITTAB */
+#endif /* FEATURE_USE_INITTAB */
 }
 
-#ifdef CONFIG_FEATURE_USE_INITTAB
+#if ENABLE_FEATURE_USE_INITTAB
 static void reload_signal(int sig ATTRIBUTE_UNUSED)
 {
        struct init_action *a, *tmp;
@@ -969,13 +967,15 @@ static void reload_signal(int sig ATTRIBUTE_UNUSED)
        run_actions(RESPAWN);
        return;
 }
-#endif                                                 /* CONFIG_FEATURE_USE_INITTAB */
+#endif  /* FEATURE_USE_INITTAB */
 
 int init_main(int argc, char **argv)
 {
        struct init_action *a;
        pid_t wpid;
 
+       die_sleep = 30 * 24*60*60; /* if xmalloc will ever die... */
+
        if (argc > 1 && !strcmp(argv[1], "-q")) {
                return kill(1,SIGHUP);
        }
@@ -1062,7 +1062,7 @@ int init_main(int argc, char **argv)
                parse_inittab();
        }
 
-#ifdef CONFIG_SELINUX
+#if ENABLE_SELINUX
        if (getenv("SELINUX_INIT") == NULL) {
                int enforce = 0;
 
@@ -1092,12 +1092,12 @@ int init_main(int argc, char **argv)
        /* Next run anything to be run only once */
        run_actions(ONCE);
 
-#ifdef CONFIG_FEATURE_USE_INITTAB
+#if ENABLE_FEATURE_USE_INITTAB
        /* Redefine SIGHUP to reread /etc/inittab */
        signal(SIGHUP, reload_signal);
 #else
        signal(SIGHUP, SIG_IGN);
-#endif /* CONFIG_FEATURE_USE_INITTAB */
+#endif /* FEATURE_USE_INITTAB */
 
 
        /* Now run the looping stuff for the rest of forever */
index 10d953513079726675ba41500a5f1492ead2e88e..7c5a4ebe93eeee5679782e6933417bb6029ec20c 100644 (file)
 
 int die_sleep;
 
+void sleep_and_die(void)
+{
+       if (die_sleep)
+               sleep(die_sleep);
+       exit(xfunc_error_retval);
+}
+
 void bb_error_msg_and_die(const char *s, ...)
 {
        va_list p;
@@ -22,7 +29,5 @@ void bb_error_msg_and_die(const char *s, ...)
        va_start(p, s);
        bb_verror_msg(s, p, NULL);
        va_end(p);
-       if (die_sleep)
-               sleep(die_sleep);
-       exit(xfunc_error_retval);
+       sleep_and_die();
 }
index 456ce95130432479e871bdcdf202dd27a93edac9..6f44770c66bb2215977e9809adb420a37f8d2834 100644 (file)
 
 void fflush_stdout_and_exit(int retval)
 {
-       if (fflush(stdout)) {
-               retval = xfunc_error_retval;
-       }
-       if (die_sleep)
-               sleep(die_sleep);
+       if (fflush(stdout))
+               sleep_and_die();
        exit(retval);
 }
index f62ddd2ead30fff6dfdcfca6e84bab69153cec6a..a7a22caf747abd6c0ae9ef076f317aab7dcf7a69 100644 (file)
@@ -19,7 +19,5 @@ void bb_herror_msg_and_die(const char *s, ...)
        va_start(p, s);
        bb_vherror_msg(s, p);
        va_end(p);
-       if (die_sleep)
-               sleep(die_sleep);
-       exit(xfunc_error_retval);
+       sleep_and_die();
 }
index 2303ba211298cc2ace4ca7f244db253a25b0b4c2..7521e715744ce26c0299b93d7b4e7640b434e258 100644 (file)
@@ -20,7 +20,5 @@ void bb_perror_msg_and_die(const char *s, ...)
        va_start(p, s);
        bb_vperror_msg(s, p);
        va_end(p);
-       if (die_sleep)
-               sleep(die_sleep);
-       exit(xfunc_error_retval);
+       sleep_and_die();
 }
index fa7964e4e6a606155050285c8902534aee2eafcc..aace3ee18b55f99156012162ee872aeaaca26f10 100644 (file)
@@ -542,7 +542,7 @@ static void SynchronizeFile(const char *fileName)
                        struct stat sbuf;
 
                        if (fstat(fileno(fi), &sbuf) == 0 && sbuf.st_uid == DaemonUid) {
-                               CronFile *file = calloc(1, sizeof(CronFile));
+                               CronFile *file = xzalloc(sizeof(CronFile));
                                CronLine **pline;
 
                                file->cf_User = strdup(fileName);
@@ -586,7 +586,7 @@ static void SynchronizeFile(const char *fileName)
 
                                        FixDayDow(&line);
 
-                                       *pline = calloc(1, sizeof(CronLine));
+                                       *pline = xzalloc(sizeof(CronLine));
                                        **pline = line;
 
                                        /* copy command */
index e50955ddc12af992eb7a3fd4a3dcd85b0de0dbe0..ff5c146726a1a8e2d9a9b774a452f25085d62680 100644 (file)
@@ -499,7 +499,7 @@ static void parse_conf(const char *path, int flag)
                         continue;
                if (*p0 == 'A' || *p0 == 'D') {
                        /* storing current config IP line */
-                       pip = calloc(1, sizeof(Htaccess_IP));
+                       pip = xzalloc(sizeof(Htaccess_IP));
                        if (pip) {
                                if (scan_ip_mask(c, &(pip->ip), &(pip->mask))) {
                                        /* syntax IP{/mask} error detected, protect all */
@@ -570,7 +570,7 @@ static void parse_conf(const char *path, int flag)
  || ENABLE_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES \
  || ENABLE_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
                /* storing current config line */
-               cur = calloc(1, sizeof(Htaccess) + strlen(p0));
+               cur = xzalloc(sizeof(Htaccess) + strlen(p0));
                if (cur) {
                        cf = strcpy(cur->before_colon, p0);
                        c = strchr(cf, ':');
index d8acd6bc736e9354c383ac6d0f55b65b3bfa804f..c83ef24209283f275c1845f2a206422daba78df7 100644 (file)
@@ -869,7 +869,7 @@ sgi_set_xcyl(void)
 static sgiinfo *
 fill_sgiinfo(void)
 {
-       sgiinfo *info = calloc(1, sizeof(sgiinfo));
+       sgiinfo *info = xzalloc(sizeof(sgiinfo));
 
        info->magic = SGI_SSWAP32(SGI_INFO_MAGIC);
        info->b1 = SGI_SSWAP32(-1);