From 50c101125c791dae461d60058a59ff74551466dc Mon Sep 17 00:00:00 2001 From: Eygene Ryabinkin Date: Mon, 18 Jul 2011 19:40:38 +0400 Subject: [PATCH] sysutils/fcron: fixup default argument promotion When mode_t is char- or short-like, it will be promoted to the pure int when it is passed as the variable argument [1], so we should pass 'int' to the va_arg. I had also eliminated fflush for the stream opened read-only, since it will always fail and there is no need to flush read-only streams. [1] http://c-faq.com/~scs/cclass/int/sx11c.html Signed-off-by: Eygene Ryabinkin --- sysutils/fcron/Makefile | 1 + sysutils/fcron/files/patch-fileconf.c | 15 +++++++++++++++ sysutils/fcron/files/patch-subs.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 0 deletions(-) create mode 100644 sysutils/fcron/files/patch-fileconf.c create mode 100644 sysutils/fcron/files/patch-subs.c diff --git a/sysutils/fcron/Makefile b/sysutils/fcron/Makefile index ada9745..c23b9b3 100644 --- a/sysutils/fcron/Makefile +++ b/sysutils/fcron/Makefile @@ -8,6 +8,7 @@ PORTNAME= fcron PORTVERSION= 3.0.6 +PORTREVISION= 1 CATEGORIES= sysutils MASTER_SITES= ${MASTER_SITE_SUNSITE} \ http://fcron.free.fr/archives/ \ diff --git a/sysutils/fcron/files/patch-fileconf.c b/sysutils/fcron/files/patch-fileconf.c new file mode 100644 index 0000000..9255b79 --- /dev/null +++ b/sysutils/fcron/files/patch-fileconf.c @@ -0,0 +1,15 @@ +We don't need to fflush the file, since it is opened read-only. + +--- fileconf.c.orig 2011-07-18 19:55:28.726082293 +0400 ++++ fileconf.c 2011-07-18 19:55:37.988079816 +0400 +@@ -264,10 +264,6 @@ + cf->cf_next = file_base; + file_base = cf; + +- /* don't close as underlying fd may still be used by calling function */ +- if (fflush(file) != 0) +- error_e("could not fflush() file_name"); +- + free(default_line.cl_runas); + free(default_line.cl_mailto); + free(default_line.cl_tz); diff --git a/sysutils/fcron/files/patch-subs.c b/sysutils/fcron/files/patch-subs.c new file mode 100644 index 0000000..bee359d --- /dev/null +++ b/sysutils/fcron/files/patch-subs.c @@ -0,0 +1,28 @@ +--- subs.c.orig 2011-07-18 17:28:21.745080904 +0400 ++++ subs.c 2011-07-18 19:39:18.999087202 +0400 +@@ -121,7 +121,11 @@ + + if (flags & O_CREAT) { + va_start(ap, flags); +- mode = va_arg(ap, mode_t); ++ /* Beware: default argument promotion. */ ++ if (sizeof(int) > sizeof(mode_t)) ++ mode = va_arg(ap, int); ++ else ++ mode = va_arg(ap, mode_t); + va_end(ap); + } + +@@ -179,7 +183,11 @@ + + if (flags & O_CREAT) { + va_start(ap, flags); +- mode = va_arg(ap, mode_t); ++ /* Beware: default argument promotion. */ ++ if (sizeof(int) > sizeof(mode_t)) ++ mode = va_arg(ap, int); ++ else ++ mode = va_arg(ap, mode_t); + va_end(ap); + } + -- 1.7.5.4