diff options
Diffstat (limited to 'sys-apps/darwin-miscutils/files/darwin-miscutils-12-md-modern-c.patch')
-rw-r--r-- | sys-apps/darwin-miscutils/files/darwin-miscutils-12-md-modern-c.patch | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/sys-apps/darwin-miscutils/files/darwin-miscutils-12-md-modern-c.patch b/sys-apps/darwin-miscutils/files/darwin-miscutils-12-md-modern-c.patch new file mode 100644 index 000000000000..2e6dcdb50d4b --- /dev/null +++ b/sys-apps/darwin-miscutils/files/darwin-miscutils-12-md-modern-c.patch @@ -0,0 +1,235 @@ +md: bring up to date for modern C to allow Clang and recent GCC to compile + +Authors: +Michael Weiser, https://bugs.gentoo.org/642666 +Alexey Sokolov, https://bugs.gentoo.org/758167 +Fabian Groffen + +--- adv_cmds-147/md/md.c ++++ adv_cmds-147/md/md.c +@@ -78,6 +78,8 @@ + #include <stdio.h> + #include <stdlib.h> + #include <string.h> ++#include <unistd.h> ++#include <fcntl.h> + + #define LINESIZE 65536 // NeXT_MOD + +@@ -100,6 +102,7 @@ + } dep_files[1000]; + int dep_file_index; + ++static int + qsort_strcmp(a, b) + struct dep *a, *b; + { +@@ -137,9 +140,15 @@ + + static void scan_mak(FILE *, FILE *, char *); + static void finish_mak(FILE *, FILE *); ++static int read_dep(char *); ++static void expunge_mak(FILE *, FILE *); ++static void skip_mak(FILE *, FILE *); ++static void output_dep(FILE *); ++static void parse_dep(); ++static void save_dot_o(); + +-main(argc,argv) +-register char **argv; ++int ++main(int argc, char** argv) + { + int size; + +@@ -152,7 +161,7 @@ + if (*token++ != '-' || !*token) + break; + else { register int flag; +- for ( ; flag = *token++ ; ) { ++ for ( ; (flag = *token++) ; ) { + switch (flag) { + case 'd': + delete++; +@@ -177,7 +186,7 @@ + expunge++; + break; + case 'D': +- for ( ; flag = *token++ ; ) ++ for ( ; (flag = *token++) ; ) + switch (flag) { + case 'c': + D_contents++; +@@ -211,10 +220,10 @@ + } + + if (!expunge && argc < 1) goto usage; +- if ((int) outfile && (int) makefile) /* not both */ ++ if (outfile && makefile) /* not both */ + goto usage; + +- if ((int) outfile) { ++ if (outfile) { + /* + * NeXT_MOD, For SGS stuff, in case still linked to master version + */ +@@ -227,7 +236,7 @@ + exit(1); + } else if (D_open) + printf("%s: opened outfile \"%s\"\n", name, outfile); +- } else if (mak = find_mak(makefile)) { ++ } else if ((mak = find_mak(makefile))) { + makout = temp_mak(); + out = makout; + if (expunge) +@@ -235,7 +244,7 @@ + else + skip_mak(mak, makout); + } else if (mak_eof && /* non existent file == mt file */ +- (int)(makout = temp_mak())) { /* but we need to be able */ ++ (makout = temp_mak()) != NULL) { /* but we need to be able */ + out = makout; /* to write here */ + } else if (makefile) { + fprintf(stderr, "%s: makefile \"%s\" can not be opened or stat'ed\n", +@@ -246,7 +255,7 @@ + for (; argc--; argv++) { + dep_file_index = 0; + +- if (size = read_dep(*argv)) { ++ if ((size = read_dep(*argv))) { + + save_dot_o(); + if (D_depend) printf("%s: dot_o = \"%s\"\n", name, dot_o); +@@ -269,8 +278,8 @@ + } + + +-read_dep(file) +-register char *file; ++int ++read_dep(char *file) + { + register int fd; + register int size; +@@ -294,7 +303,7 @@ + switch(statbuf.st_mode & S_IFMT) { + case S_IFREG: + if (D_time) +- printf("%s: file time = %d\n", name, statbuf.st_mtime); ++ printf("%s: file time = %ld\n", name, statbuf.st_mtime); + + if (statbuf.st_size > IObuffer) { + fprintf(stderr, "%s: file \"%s\" tooo big for IObuffer\n", +@@ -302,9 +311,9 @@ + goto out; + } else if (force) + break; +- else if ((int) mak && statbuf.st_mtime < makstat.st_mtime) { ++ else if (mak && statbuf.st_mtime < makstat.st_mtime) { + if (verbose || D_time) +- fprintf(stderr, "%s: skipping \"%s\" %d < %d \"%s\"\n", ++ fprintf(stderr, "%s: skipping \"%s\" %ld < %ld \"%s\"\n", + name, file, statbuf.st_mtime, makstat.st_mtime, + real_mak_name); + goto out; +@@ -345,6 +354,7 @@ + return 0; + } + ++static void + save_dot_o() + { + register char *cp = file_array; +@@ -355,6 +365,7 @@ + *svp = 0; + } + ++static void + parse_dep() + { + register char *lp = file_array; +@@ -381,7 +392,8 @@ + cp = dep_line; + lp[-1] = 0; + /* skip .o file name */ +- while ((c = *cp++) && c != ':'); if (!c) continue; ++ while ((c = *cp++) && c != ':'); ++ if (!c) continue; + next_filename: + i = 0; + abspath = 0; +@@ -415,7 +427,7 @@ + if (abspath) + *cp++ = '/'; + for (c=0; c<i; c++) {register char *ccp = path_component[c]; +- while (*cp++ = *ccp++); ++ while ((*cp++ = *ccp++)); + *--cp = '/'; + cp++; + } +@@ -425,7 +437,7 @@ + dep_files[c].str = tlp; + dep_files[c].len = cp - tlp; + if (D_depend) +- printf("%s: dep_file[%d] = \"%s\" Len %d\n", ++ printf("%s: dep_file[%d] = \"%s\" Len %ld\n", + name, dep_file_index - 1, tlp, cp - tlp); + tlp = cp + 1; + if (oldc) +@@ -436,8 +448,8 @@ + } + } + +-output_dep(out) +-FILE *out; ++static void ++output_dep(FILE *out) + { + register int j; + register int size = 1000; +@@ -479,12 +491,11 @@ + + /* process makefile */ + FILE * +-find_mak(file) +-char *file; ++find_mak(char *file) + { + FILE *mak; + +- if ((int) file) { ++ if (file) { + if ((mak = fopen(file, "r")) != NULL) { + real_mak_name = file; + } else if (update) { +@@ -514,7 +525,7 @@ + if (D_open) + printf("%s: opened makefile \"%s\"\n", name, real_mak_name); + if (D_time) +- printf("%s: makefile time = %d\n", name, makstat.st_mtime); ++ printf("%s: makefile time = %ld\n", name, makstat.st_mtime); + + return mak; + } +@@ -543,8 +554,8 @@ + return mak; + } + +-skip_mak(makin, makout) +-register FILE *makin, *makout; ++static void ++skip_mak(FILE *makin, FILE *makout) + { + register int len = SALUTATIONLEN; + +@@ -566,8 +577,8 @@ + printf("eof = %d str = \"%s\"", mak_eof, makbuf); + } + +-expunge_mak(makin, makout) +-register FILE *makin, *makout; ++static void ++expunge_mak(FILE *makin, FILE *makout) + { + register int len = SALUTATIONLEN; + register int oldlen = OLDSALUTATIONLEN; |