--- anacron-2.3/gregor.c.mem 2007-08-08 10:02:58.000000000 +0200 +++ anacron-2.3/gregor.c 2007-08-08 10:10:55.000000000 +0200 @@ -27,7 +27,7 @@ #include <time.h> #include "gregor.h" -const static int +static const int days_in_month[] = { 31, /* Jan */ 28, /* Feb (non-leap) */ --- anacron-2.3/log.c.mem 2007-08-08 10:02:58.000000000 +0200 +++ anacron-2.3/log.c 2007-08-08 10:13:03.000000000 +0200 @@ -83,7 +83,7 @@ } static void -log(int priority, const char *fmt, va_list args) +slog(int priority, const char *fmt, va_list args) /* Log a message, described by "fmt" and "args", with the specified * "priority". */ { @@ -101,7 +101,7 @@ static void log_e(int priority, const char *fmt, va_list args) -/* Same as log(), but also appends an error description corresponding +/* Same as slog(), but also appends an error description corresponding * to "errno". */ { int saved_errno; @@ -127,7 +127,7 @@ va_list args; va_start(args, fmt); - log(EXPLAIN_LEVEL, fmt, args); + slog(EXPLAIN_LEVEL, fmt, args); va_end(args); } @@ -149,7 +149,7 @@ va_list args; va_start(args, fmt); - log(COMPLAIN_LEVEL, fmt, args); + slog(COMPLAIN_LEVEL, fmt, args); va_end(args); complaints += 1; @@ -175,7 +175,7 @@ va_list args; va_start(args, fmt); - log(COMPLAIN_LEVEL, fmt, args); + slog(COMPLAIN_LEVEL, fmt, args); va_end(args); if (getpid() == primary_pid) complain("Aborted"); @@ -207,7 +207,7 @@ va_list args; va_start(args, fmt); - log(DEBUG_LEVEL, fmt, args); + slog(DEBUG_LEVEL, fmt, args); va_end(args); } --- anacron-2.3/global.h.mem 2007-08-08 10:02:58.000000000 +0200 +++ anacron-2.3/global.h 2007-08-08 10:10:21.000000000 +0200 @@ -105,18 +105,25 @@ /* main.c */ int xopen(int fd, const char *file_name, int flags); void xclose(int fd); -pid_t xfork(); +pid_t xfork(void); + +#ifdef __GNUC__ +#define PRINTF_FORMAT(n, m) \ + __attribute__ ((format (printf, n, m))) +#else +#define PRINTF_FORMAT(n, m) +#endif /* log.c */ -void explain(const char *fmt, ...); -void explain_e(const char *fmt, ...); -void complain(const char *fmt, ...); -void complain_e(const char *fmt, ...); -void die(const char *fmt, ...); -void die_e(const char *fmt, ...); -void xdebug(const char *fmt, ...); -void xdebug_e(const char *fmt, ...); -void xcloselog(); +void explain(const char *fmt, ...)PRINTF_FORMAT(1,2); +void explain_e(const char *fmt, ...)PRINTF_FORMAT(1,2); +void complain(const char *fmt, ...)PRINTF_FORMAT(1,2); +void complain_e(const char *fmt, ...)PRINTF_FORMAT(1,2); +void die(const char *fmt, ...)PRINTF_FORMAT(1,2); +void die_e(const char *fmt, ...)PRINTF_FORMAT(1,2); +void xdebug(const char *fmt, ...)PRINTF_FORMAT(1,2); +void xdebug_e(const char *fmt, ...)PRINTF_FORMAT(1,2); +void xcloselog(void); #ifdef DEBUG #define Debug(args) xdebug args @@ -128,7 +135,7 @@ /* readtab.c */ void read_tab(int cwd); -void arrange_jobs(); +void arrange_jobs(void); /* lock.c */ int consider_job(job_rec *jr); --- anacron-2.3/runjob.c.mem 2007-08-08 10:02:58.000000000 +0200 +++ anacron-2.3/runjob.c 2007-08-08 10:17:44.000000000 +0200 @@ -64,8 +64,8 @@ if (fdin == -1) die_e("Can't open temporary file for reading"); if (unlink(name)) die_e("Can't unlink temporary file"); free(name); - fcntl(fdout, F_SETFD, 1); /* set close-on-exec flag */ - fcntl(fdin, F_SETFD, 1); /* set close-on-exec flag */ + fcntl(fdout, F_SETFD, FD_CLOEXEC); /* set close-on-exec flag */ + fcntl(fdin, F_SETFD, FD_CLOEXEC); /* set close-on-exec flag */ jr->input_fd = fdin; jr->output_fd = fdout; @@ -175,8 +175,6 @@ pid = xfork(); if (pid == 0) { - long fdflags; - /* child */ in_background = 1; /* set stdin to the job's output */ --- anacron-2.3/matchrx.c.mem 2000-06-21 01:12:18.000000000 +0200 +++ anacron-2.3/matchrx.c 2007-08-08 10:16:54.000000000 +0200 @@ -26,6 +26,7 @@ #include <regex.h> #include <stdarg.h> #include <stdlib.h> +#include <string.h> #include "matchrx.h" int @@ -49,11 +50,20 @@ sub_offsets = malloc(sizeof(regmatch_t) * (n_sub + 1)); memset(sub_offsets, 0, sizeof(regmatch_t) * (n_sub + 1)); - if (regcomp(&crx, rx, REG_EXTENDED)) return - 1; + if (regcomp(&crx, rx, REG_EXTENDED)) { + free(sub_offsets); + return - 1; + } r = regexec(&crx, string, n_sub + 1, sub_offsets, 0); - if (r != 0 && r != REG_NOMATCH) return - 1; + if (r != 0 && r != REG_NOMATCH) { + free(sub_offsets); + return - 1; + } regfree(&crx); - if (r == REG_NOMATCH) return 0; + if (r == REG_NOMATCH) { + free(sub_offsets); + return 0; + } va_start(va, n_sub); n = 1; @@ -62,7 +72,10 @@ substring = va_arg(va, char**); if (substring != NULL) { - if (sub_offsets[n].rm_so == -1) return - 1; + if (sub_offsets[n].rm_so == -1) { + free(sub_offsets); + return - 1; + } *substring = string + sub_offsets[n].rm_so; *(string + sub_offsets[n].rm_eo) = 0; }