]> git.deb.at Git - pkg/mmv.git/blobdiff - mmv.c
Add myself as Uploader
[pkg/mmv.git] / mmv.c
diff --git a/mmv.c b/mmv.c
index abce4a40b91e82f7642267970502af6b9a8cc7bd..ac1bb76c1ab1e52750a3a5e8d06d9c13e038d349 100644 (file)
--- a/mmv.c
+++ b/mmv.c
@@ -124,6 +124,8 @@ extern unsigned _stklen = 10000;
 #else
 /* for various flavors of UN*X */
 
+#include <libgen.h>
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/file.h>
@@ -438,7 +440,9 @@ static SLICER slicer[2] = {{NULL, NULL, 0}, {NULL, NULL, 0}};
 static int badreps = 0, paterr = 0, direrr, failed = 0, gotsig = 0, repbad;
 static FILE *outfile;
 
+#ifdef IS_MSDOS
 static char IDF[] = "$$mmvdid.";
+#endif
 static char TEMP[] = "$$mmvtmp.";
 static char TOOLONG[] = "(too long)";
 static char EMPTY[] = "(empty)";
@@ -456,12 +460,12 @@ char pathbuf[MAXPATH];
 char fullrep[MAXPATH + 1];
 static char *(start[MAXWILD]);
 static int len[MAXWILD];
-static char hasdot[MAXWILD];
 static REP mistake;
 #define MISTAKE (&mistake)
 
 #ifdef IS_MSDOS
 
+static char hasdot[MAXWILD];
 static int olddevflag, curdisk, maxdisk;
 static struct {
        char ph_banner[30];
@@ -562,7 +566,7 @@ static void procargs(argc, argv, pfrompat, ptopat)
        char **pfrompat, **ptopat;
 {
        char *p, c;
-       char *cmdname = argv[0];
+       char *cmdname = basename(argv[0]);
 
 #ifdef IS_MSDOS
 #define CMDNAME (patch.ph_name)
@@ -626,7 +630,7 @@ static void procargs(argc, argv, pfrompat, ptopat)
                }
 
 endargs:
-       if (op == DFLT)
+       if (op == DFLT) {
                if (strcmp(cmdname, MOVENAME) == 0)
                        op = XMOVE;
                else if (strcmp(cmdname, COPYNAME) == 0)
@@ -637,6 +641,8 @@ endargs:
                        op = HARDLINK;
                else
                        op = DFLTOP;
+       }
+       
        if (
                op & DIRMOVE &&
 #ifdef IS_MSDOS
@@ -783,7 +789,7 @@ static void matchpat()
 static int parsepat()
 {
        char *p, *lastname, c;
-       int totwilds, instage, x, havedot;
+       int totwilds, instage, x;
        static char TRAILESC[] = "%s -> %s : trailing %c is superfluous.\n";
 
        lastname = from;
@@ -1046,7 +1052,7 @@ static int dostage(lastend, pathend, start1, len1, stage, anylev)
        DIRINFO *di;
        HANDLE *h, *hto;
        int prelen, litlen, nfils, i, k, flags, try;
-       FILEINFO **pf, *fdel;
+       FILEINFO **pf, *fdel = NULL;
        char *nto, *firstesc;
        REP *p;
        int wantdirs, ret = 1, laststage = (stage + 1 == nstages);
@@ -1176,11 +1182,12 @@ static int trymatch(ffrom, pat)
        if (*p == '.' || (!matchall && ffrom->fi_attrib & (FA_HIDDEN | FA_SYSTEM)))
                return(strcmp(pat, p) == 0);
 #else
-       if (*p == '.')
+       if (*p == '.') {
                if (p[1] == '\0' || (p[1] == '.' && p[2] == '\0'))
                        return(strcmp(pat, p) == 0);
                else if (!matchall && *pat != '.')
                        return(0);
+       }
 #endif
        return(-1);
 }
@@ -1316,7 +1323,7 @@ static int checkto(hfrom, f, phto, pnto, pfdel)
 {
        char tpath[MAXPATH + 1];
        char *pathend;
-       FILEINFO *fdel;
+       FILEINFO *fdel = NULL;
        int hlen, tlen;
 
        if (op & DIRMOVE) {
@@ -1409,7 +1416,9 @@ static char *getpath(tpath)
 static int badname(s)
        char *s;
 {
+#ifdef IS_MSDOS
        char *ext;
+#endif
 
        return (
 #ifdef IS_MSDOS
@@ -1719,20 +1728,19 @@ static HANDLE *checkdir(p, pathend, which)
        struct stat dstat;
        DIRID d;
        DEVID v;
-       DIRINFO **newdirs, *di;
-       int nfils;
-       FILEINFO **fils;
+       DIRINFO *di = NULL;
        char *myp, *lastslash = NULL;
        int sticky;
        HANDLE *h;
 
-       if (hsearch(p, which, &h))
+       if (hsearch(p, which, &h)) {
                if (h->h_di == NULL) {
                        direrr = h->h_err;
                        return(NULL);
                }
                else
                        return(h);
+       }
 
        if (*p == '\0')
                myp = ".";
@@ -1903,7 +1911,10 @@ static int match(pat, s, start1, len1)
        char *pat, *s, **start1;
        int *len1;
 {
-       char c, *olds;
+       char c;
+#ifdef IS_MSDOS
+       char *olds;
+#endif
 
        *start1 = 0;
        for(;;)
@@ -2380,9 +2391,9 @@ static void goonordie()
 static void doreps()
 {
        char *fstart;
-       int k, printaliased = 0, alias;
+       int k, printaliased = 0, alias = 0;
        REP *first, *p;
-       long aliaslen;
+       long aliaslen = 0l;
 
 #ifdef IS_MSDOS
        ctrlbrk(breakrep);
@@ -2400,11 +2411,12 @@ static void doreps()
                        }
                        strcpy(fullrep, p->r_hto->h_name);
                        strcat(fullrep, p->r_nto);
-                       if (!noex && (p->r_flags & R_ISCYCLE))
+                       if (!noex && (p->r_flags & R_ISCYCLE)) {
                                if (op & APPEND)
                                        aliaslen = appendalias(first, p, &printaliased);
                                else
                                        alias = movealias(first, p, &printaliased);
+                       }
                        strcpy(pathbuf, p->r_hfrom->h_name);
                        fstart = pathbuf + strlen(pathbuf);
                        if ((p->r_flags & R_ISALIASED) && !(op & APPEND))
@@ -2463,7 +2475,7 @@ static long appendalias(first, p, pprintaliased)
        REP *first, *p;
        int *pprintaliased;
 {
-       long ret;
+       long ret = 0l;
 
 #ifdef IS_MSDOS
        int fd;
@@ -2630,9 +2642,10 @@ static int copy(ff, len)
        FILEINFO *ff;
        off_t len;
 {
-       char buf[BUFSIZE], c;
+       char buf[BUFSIZE];
        int f, t, k, mode, perm;
 #ifdef IS_MSDOS
+        char c;
        struct ftime tim;
 #else
 #ifdef IS_SYSV
@@ -2715,7 +2728,9 @@ static int copy(ff, len)
                                tim.modtime = fstat.st_mtime,
 #else
                                tim[0].tv_sec = fstat.st_atime,
+                               tim[0].tv_usec = 0,
                                tim[1].tv_sec = fstat.st_mtime,
+                               tim[1].tv_usec = 0,
 #endif
                                utimes(fullrep, tim)
                        )