--- adv_cmds-147/md/md.c.orig	2017-12-29 19:30:19.505596072 +0100
+++ adv_cmds-147/md/md.c	2017-12-29 19:34:52.111156834 +0100
@@ -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,7 +140,14 @@
 
 static void scan_mak(FILE *, FILE *, char *);
 static void finish_mak(FILE *, FILE *);
+static int read_dep(register char *);
+static void expunge_mak(register FILE *, register FILE *);
+static void skip_mak(register FILE *, register FILE *);
+static void output_dep(FILE *);
+static void parse_dep();
+static void save_dot_o();
 
+int
 main(argc,argv)
 register char **argv;
 {
@@ -152,7 +162,7 @@
                 if (*token++ != '-' || !*token)
                         break;
                 else { register int flag;
-                        for ( ; flag = *token++ ; ) {
+                        for ( ; (flag = *token++) ; ) {
                                 switch (flag) {
                                 case 'd':
                                         delete++;
@@ -177,7 +187,7 @@
                                         expunge++;
                                         break;
                                 case 'D':
-                                        for ( ; flag = *token++ ; )
+                                        for ( ; (flag = *token++) ; )
                                                 switch (flag) {
                                                 case 'c':
                                                         D_contents++;
@@ -227,7 +237,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)
@@ -246,7 +256,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,6 +279,7 @@
 }
 
 
+int
 read_dep(file)
 register char *file;
 {
@@ -294,7 +305,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",
@@ -304,7 +315,7 @@
                         break;
                 else if ((int) 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 +356,7 @@
         return 0;
 }
 
+static void
 save_dot_o()
 {
 register char *cp = file_array;
@@ -355,6 +367,7 @@
         *svp = 0;
 }
 
+static void
 parse_dep()
 {
 register char *lp = file_array;
@@ -381,7 +394,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 +429,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 +439,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,6 +450,7 @@
         }
 }
 
+static void
 output_dep(out)
 FILE *out;
 {
@@ -514,7 +529,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,6 +558,7 @@
         return mak;
 }
 
+static void
 skip_mak(makin, makout)
 register FILE *makin, *makout;
 {
@@ -566,6 +582,7 @@
                 printf("eof = %d str = \"%s\"", mak_eof, makbuf);
 }
 
+static void
 expunge_mak(makin, makout)
 register FILE *makin, *makout;
 {
