aboutsummaryrefslogtreecommitdiffstats
path: root/community/hfsprogs/fix-stdarg.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/hfsprogs/fix-stdarg.patch')
-rw-r--r--community/hfsprogs/fix-stdarg.patch122
1 files changed, 122 insertions, 0 deletions
diff --git a/community/hfsprogs/fix-stdarg.patch b/community/hfsprogs/fix-stdarg.patch
new file mode 100644
index 00000000000..ecd8fe84a48
--- /dev/null
+++ b/community/hfsprogs/fix-stdarg.patch
@@ -0,0 +1,122 @@
+Patch-Source: https://src.fedoraproject.org/rpms/hfsplus-tools/blob/f27/f/hfsplus-tools-learn-to-stdarg.patch
+
+diff -up diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c.jx diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c
+--- diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c.jx 2012-02-01 12:17:19.000000000 -0500
++++ diskdev_cmds-540.1.linux3/fsck_hfs.tproj/utilities.c 2014-06-18 13:44:45.125620007 -0400
+@@ -296,11 +296,8 @@ static volatile int keep_going = 1;
+ #undef printf
+
+ // prototype
+-void print_to_mem(int type, const char *fmt, const char *str, va_list ap);
+-
+-#define DO_VPRINT 1 // types for print_to_mem
+-#define DO_STR 2
+-
++void vprint_to_mem(const char *fmt, va_list ap);
++void print_to_mem(const char *fmt, ...);
+
+ static void *
+ fsck_printing_thread(void *arg)
+@@ -547,8 +544,8 @@ setup_logging(void)
+ cur_in_mem = in_mem_log;
+
+ t = time(NULL);
+- print_to_mem(DO_STR, "\n%s: ", cdevname ? cdevname : "UNKNOWN-DEV", NULL);
+- print_to_mem(DO_STR, "fsck_hfs run at %s", ctime(&t), NULL);
++ print_to_mem("\n%s: ", cdevname ? cdevname : "UNKNOWN-DEV");
++ print_to_mem("fsck_hfs run at %s", ctime(&t));
+
+ if (live_fsck && log_file) {
+ pthread_cond_init(&mem_buf_cond, NULL);
+@@ -576,26 +573,20 @@ setup_logging(void)
+
+
+ void
+-print_to_mem(int type, const char *fmt, const char *str, va_list ap)
++vprint_to_mem(const char *fmt, va_list ap)
+ {
+ int ret;
+ size_t size_remaining;
+ va_list ap_copy;
+
+- if (type == DO_VPRINT) {
+- va_copy(ap_copy, ap);
+- }
++ va_copy(ap_copy, ap);
+
+ if (live_fsck) {
+ pthread_mutex_lock(&mem_buf_lock);
+ }
+
+ size_remaining = in_mem_size - (ptrdiff_t)(cur_in_mem - in_mem_log);
+- if (type == DO_VPRINT) {
+- ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap);
+- } else {
+- ret = snprintf(cur_in_mem, size_remaining, fmt, str);
+- }
++ ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap);
+ if (ret > size_remaining) {
+ char *new_log;
+ size_t amt;
+@@ -619,11 +610,7 @@ print_to_mem(int type, const char *fmt,
+ cur_in_mem = new_log + (cur_in_mem - in_mem_log);
+ in_mem_log = new_log;
+ size_remaining = in_mem_size - (ptrdiff_t)(cur_in_mem - new_log);
+- if (type == DO_VPRINT) {
+- ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap_copy);
+- } else {
+- ret = snprintf(cur_in_mem, size_remaining, fmt, str);
+- }
++ ret = vsnprintf(cur_in_mem, size_remaining, fmt, ap_copy);
+ if (ret <= size_remaining) {
+ cur_in_mem += ret;
+ }
+@@ -636,11 +623,18 @@ print_to_mem(int type, const char *fmt,
+ pthread_mutex_unlock(&mem_buf_lock);
+ }
+ done:
+- if (type == DO_VPRINT) {
+- va_end(ap_copy);
+- }
++ va_end(ap_copy);
+ }
+
++void
++print_to_mem(const char *fmt, ...)
++{
++ va_list ap;
++
++ va_start(ap, fmt);
++ vprint_to_mem(fmt, ap);
++ va_end(ap);
++}
+
+ static int need_prefix=1;
+
+@@ -662,7 +656,7 @@ static int need_prefix=1;
+ LOG_PREFIX \
+ vfprintf(log_file, fmt, ap); \
+ } else { \
+- print_to_mem(DO_VPRINT, fmt, NULL, ap); \
++ vprint_to_mem(fmt, ap); \
+ }
+
+ #define FLOG(fmt, str) \
+@@ -670,7 +664,7 @@ static int need_prefix=1;
+ LOG_PREFIX; \
+ fprintf(log_file, fmt, str); \
+ } else { \
+- print_to_mem(DO_STR, fmt, str, NULL); \
++ print_to_mem(fmt, str); \
+ }
+
+
+@@ -800,7 +794,7 @@ vplog(const char *fmt, va_list ap)
+ LOG_PREFIX;
+ vfprintf(log_file, fmt, ap);
+ } else {
+- print_to_mem(DO_VPRINT, fmt, NULL, ap);
++ vprint_to_mem(fmt, ap);
+ }
+ }
+