]> git.deb.at Git - pkg/mmv.git/commitdiff
Switch to source format "3.0 (quilt)"
authorAxel Beckert <abe@deuxchevaux.org>
Sun, 16 Sep 2012 14:56:55 +0000 (16:56 +0200)
committerAxel Beckert <abe@deuxchevaux.org>
Sun, 16 Sep 2012 15:06:47 +0000 (17:06 +0200)
Import current state of patches as one single patch for now.

Makefile
debian/changelog
debian/patches/patches-as-of-mmv-1.01b-15.diff [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]
debian/source/format [new file with mode: 0644]
mmv.1
mmv.c

index 45a6c59eb9b7d9c648e96835a68d2156915ec307..84d6a731760612a1e897a70d5e1245a4b0584a57 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,10 @@
 # Possible defines in CONF:
 #      IS_MSDOS IS_SYSV IS_V7 IS_BSD HAS_DIRENT HAS_RENAME MV_DIR
 
-CC             =gcc
+CC             =gcc -traditional
 LD             =$(CC)
 CONF           =-DIS_SYSV -DHAS_DIRENT -DHAS_RENAME
-CFLAGS         =-O2 $(CONF)
+CFLAGS         =-O2 -m486 $(CONF)
 LDFLAGS                =-s -N
 
 #IBIN          =$(LOCAL)$(ARCH)/bin
index 01e1b115ccaf86c53a650ea107ea165a2c6b046f..b0355733d2b4aa80aa4561f644f51cd0a730dd85 100644 (file)
@@ -2,6 +2,7 @@ mmv (1.01b-16) UNRELEASED; urgency=low
 
   * Add myself as Uploader.
   * Bump Standards-Version to 3.9.3 (no other changes necessary)
+  * Switch to source format "3.0 (quilt)"
 
  -- Axel Beckert <abe@debian.org>  Sun, 16 Sep 2012 16:31:08 +0200
 
diff --git a/debian/patches/patches-as-of-mmv-1.01b-15.diff b/debian/patches/patches-as-of-mmv-1.01b-15.diff
new file mode 100644 (file)
index 0000000..b99d45b
--- /dev/null
@@ -0,0 +1,713 @@
+Description: Patches as of mmv 1.01b-15
+ This patch contains the patches as of mmv 1.01b-15 when it has been
+ converted to the source format "3.0 (quilt)"
+Author: Multiple Authors. See changelog for details.
+Reviewed-By: Axel Beckert <abe@debian.org>
+Last-Update: 2012-09-16
+
+--- mmv-1.01b.orig/mmv.c
++++ mmv-1.01b/mmv.c
+@@ -62,7 +62,8 @@ static char USAGE[] =
+ %s [-m|x%s|c|o|a|z] [-h] [-d|p] [-g|t] [-v|n] [from to]\n\
+ \n\
+ Use #N in the ``to'' pattern to get the string matched\n\
+-by the N'th ``from'' pattern wildcard.\n";
++by the N'th ``from'' pattern wildcard.\n\
++Use -- as the end of options.\n";
+ #define OTHEROPT (_osmajor < 3 ? "" : "|r")
+@@ -75,7 +76,9 @@ Use #[l|u]N in the ``to'' pattern to get
+ string matched by the N'th ``from'' pattern wildcard.\n\
+ \n\
+ A ``from'' pattern containing wildcards should be quoted when given\n\
+-on the command line.\n";
++on the command line. Also you may need to quote ``to'' pattern.\n\
++\n\
++Use -- as the end of options.\n";
+ #ifdef IS_SYSV
+ #define OTHEROPT ""
+@@ -85,6 +88,7 @@ on the command line.\n";
+ #endif
++#include <unistd.h>
+ #include <stdio.h>
+ #include <ctype.h>
+@@ -120,14 +124,12 @@ 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>
+-extern char *getenv();
+-extern long lseek();
+-extern char *malloc();
+-
+ #ifdef HAS_DIRENT
+ #include <dirent.h>
+ typedef struct dirent DIRENTRY;
+@@ -390,7 +392,7 @@ static int movealias(/* REP *first, REP
+ static int snap(/* REP *first, REP *p */);
+ static void showdone(/* REP *fin */);
+ static void breakout(/*  */);
+-static int breakrep(/* */);
++static void breakrep(int);
+ static void breakstat(/* */);
+ static void quit(/*  */);
+ static int copymove(/* REP *p */);
+@@ -436,9 +438,11 @@ static CHUNK *freechunks = NULL;
+ 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 = stdout;
++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];
+@@ -497,6 +501,8 @@ int main(argc, argv)
+ {
+       char *frompat, *topat;
++      outfile = stdout;
++
+       init();
+       procargs(argc, argv, &frompat, &topat);
+       domatch(frompat, topat);
+@@ -560,7 +566,7 @@ static void procargs(argc, argv, pfrompa
+       char **pfrompat, **ptopat;
+ {
+       char *p, c;
+-      char *cmdname = argv[0];
++      char *cmdname = basename(argv[0]);
+ #ifdef IS_MSDOS
+ #define CMDNAME (patch.ph_name)
+@@ -575,6 +581,11 @@ static void procargs(argc, argv, pfrompa
+       for (argc--, argv++; argc > 0 && **argv == '-'; argc--, argv++)
+               for (p = *argv + 1; *p != '\0'; p++) {
+                       c = mylower(*p);
++                      if (c == '-') {
++                              argc--;
++                              argv++;
++                              goto endargs;
++                      }
+                       if (c == 'v' && !noex)
+                               verbose = 1;
+                       else if (c == 'n' && !verbose)
+@@ -618,7 +629,8 @@ static void procargs(argc, argv, pfrompa
+                       }
+               }
+-      if (op == DFLT)
++endargs:
++      if (op == DFLT) {
+               if (strcmp(cmdname, MOVENAME) == 0)
+                       op = XMOVE;
+               else if (strcmp(cmdname, COPYNAME) == 0)
+@@ -629,6 +641,8 @@ static void procargs(argc, argv, pfrompa
+                       op = HARDLINK;
+               else
+                       op = DFLTOP;
++      }
++      
+       if (
+               op & DIRMOVE &&
+ #ifdef IS_MSDOS
+@@ -775,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;
+@@ -999,20 +1013,16 @@ static int parsepat()
+                               printf(TRAILESC, from, to, ESC);
+                               return(-1);
+                       }
++#ifdef IS_MSDOS
+               default:
+                       if (
+-#ifdef IS_MSDOS
+                               c <= ' ' || c >= 127 ||
+                               strchr(":/\\*?[]=+;,\"|<>", c) != NULL
+-#else
+-                              c & 0x80
+-#endif
+                       ) {
+                               printf("%s -> %s : illegal character '%c' (0x%02X).\n",
+                                       from, to, c, c);
+                               return(-1);
+                       }
+-#ifdef IS_MSDOS
+                       if (isupper(c))
+                               *p = c + ('a' - 'A');
+ #endif
+@@ -1042,7 +1052,7 @@ static int dostage(lastend, pathend, sta
+       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);
+@@ -1172,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);
+ }
+@@ -1312,7 +1323,7 @@ static int checkto(hfrom, f, phto, pnto,
+ {
+       char tpath[MAXPATH + 1];
+       char *pathend;
+-      FILEINFO *fdel;
++      FILEINFO *fdel = NULL;
+       int hlen, tlen;
+       if (op & DIRMOVE) {
+@@ -1405,7 +1416,9 @@ static char *getpath(tpath)
+ static int badname(s)
+       char *s;
+ {
++#ifdef IS_MSDOS
+       char *ext;
++#endif
+       return (
+ #ifdef IS_MSDOS
+@@ -1715,20 +1728,19 @@ static HANDLE *checkdir(p, pathend, whic
+       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 = ".";
+@@ -1899,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(;;)
+@@ -2376,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);
+@@ -2396,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))
+@@ -2459,7 +2475,7 @@ static long appendalias(first, p, pprint
+       REP *first, *p;
+       int *pprintaliased;
+ {
+-      long ret;
++      long ret = 0l;
+ #ifdef IS_MSDOS
+       int fd;
+@@ -2578,10 +2594,10 @@ static void breakout()
+ }
+-static int breakrep()
++static void breakrep(int signum)
+ {
+       gotsig = 1;
+-      return(1);
++      return;
+ }
+@@ -2624,11 +2640,12 @@ static int copymove(p)
+ static int copy(ff, len)
+       FILEINFO *ff;
+-      long len;
++      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
+@@ -2672,7 +2689,7 @@ static int copy(ff, len)
+               return(-1);
+       }
+       if (op & APPEND)
+-              lseek(t, 0L, 2);
++              lseek(t, (off_t)0, SEEK_END);
+ #ifdef IS_MSDOS
+       if (op & ZAPPEND && filelength(t) != 0) {
+               if (lseek(t, -1L, 1) == -1L || read(t, &c, 1) != 1) {
+@@ -2684,10 +2701,10 @@ static int copy(ff, len)
+                       lseek(t, -1L, 1);
+       }
+ #endif
+-      if ((op & APPEND) && len != -1L) {
++      if ((op & APPEND) && len != (off_t)-1) {
+               while (
+                       len != 0 &&
+-                      (k = read(f, buf, len > BUFSIZE ? BUFSIZE : (unsigned)len)) > 0 &&
++                      (k = read(f, buf, (len > BUFSIZE) ? BUFSIZE : (size_t)len)) > 0 &&
+                       write(t, buf, k) == k
+               )
+                       len -= k;
+@@ -2711,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)
+                       )
+--- mmv-1.01b.orig/mmv.1
++++ mmv-1.01b/mmv.1
+@@ -2,7 +2,7 @@
+ .\" To print the MS-DOS version, use option -rO2.
+ .\" Under System V, take out the '.\"  ' from the next line.
+ .\" .nr O 1
+-.TH MMV 1 "November 20, 1989 (v1.0)"
++.TH MMV 1 "November 20, 2001 (v1.0lfs)"
+ .ie !'\nO'2' \{\
+ .SH NAME
+ mmv \- move/copy/append/link multiple files by wildcard patterns
+@@ -21,13 +21,14 @@ mmv \- move/copy/append multiple files b
+ \}
+ .SH SYNOPSIS
+ .B mmv
+-.if '\nO'2' [\fB-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBz\fP]
+-.if '\nO'0' [\fB-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP|\fBs\fP]
+-.if '\nO'1' [\fB-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP]
+-[\fB-h\fP]
+-[\fB-d\fP|\fBp\fP]
+-[\fB-g\fP|\fBt\fP]
+-[\fB-v\fP|\fBn\fP]
++.if '\nO'2' [\fB\-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBz\fP]
++.if '\nO'0' [\fB\-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP|\fBs\fP]
++.if '\nO'1' [\fB\-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP]
++[\fB\-h\fP]
++[\fB\-d\fP|\fBp\fP]
++[\fB\-g\fP|\fBt\fP]
++[\fB\-v\fP|\fBn\fP]
++[\fB\-\-\fP]
+ [\fBfrom to\fP]
+ .if '\nO'2' \{\
+ .br
+@@ -56,6 +57,9 @@ from the entire set of actions specified
+ and gives the user the choice of either
+ proceeding by avoiding the offending parts
+ or aborting.
++.I mmv
++does support large files (LFS) but it does *NOT* support 
++sparse files (i.e. it explodes them).
+ .ce
+ The Task Options
+@@ -71,7 +75,7 @@ If none of these are specified,
+ .ie '\nO'2' \{\
+ a default (patchable by
+ .IR mmvpatch ,
+-and initially -x)
++and initially \-x)
+ determines the task.
+ \}
+ .el \{\
+@@ -81,18 +85,18 @@ was invoked (argv[0]):
+       command name    default task
+-      mmv                     -x
++      mmv                     \-x
+ .br
+-      mcp                     -c
++      mcp                     \-c
+ .br
+-      mad                     -a
++      mad                     \-a
+ .br
+-      mln                     -l
++      mln                     \-l
+ \}
+ .PP
+ The task option choices are:
+ .TP
+--m :
++\-m :
+ move source file to target name.
+ Both must be on the same device.
+ Will not move directories.
+@@ -102,8 +106,8 @@ moves the link without checking if the l
+ directory is different than the old.
+ \}
+ .TP
+--x :
+-same as -m, except cross-device moves are done
++\-x :
++same as \-m, except cross-device moves are done
+ by copying, then deleting source.
+ When copying, sets the
+ .ie !'\nO'2' permission bits
+@@ -111,7 +115,7 @@ When copying, sets the
+ and file modification time
+ of the target file to that of the source file.
+ .TP
+--r :
++\-r :
+ rename source file or directory to target name.
+ The target name must not include a path:
+ the file remains in the same directory in all cases.
+@@ -119,7 +123,7 @@ This option is the only way of renaming
+ .IR mmv .
+ .if '\nO'2' It is only available under DOS version 3.0 or higher.
+ .TP
+--c :
++\-c :
+ copy source file to target name.
+ Sets the file modification time and
+ .ie !'\nO'2' permission bits
+@@ -128,7 +132,7 @@ of the target file to that of the source
+ regardless of whether the target file already exists.
+ Chains and cycles (to be explained below) are not allowed.
+ .TP
+--o :
++\-o :
+ overwrite target name with source file.
+ .ie '\nO'2' \{\
+ If target file exists, its attributes are left unchanged.
+@@ -146,38 +150,38 @@ and the execute permission bits copied f
+ In either case, the file modification time is set to the current time.
+ \}
+ .TP
+--a :
++\-a :
+ append contents of source file to target name.
+ Target file modification time is set to the current time.
+ If target file does not exist,
+ it is created with
+ .ie '\nO'2' attributes
+ .el permission bits
+-set as under -o.
+-Unlike all other options, -a allows multiple source files to have the
+-same target name, e.g. "mmv -a
++set as under \-o.
++Unlike all other options, \-a allows multiple source files to have the
++same target name, e.g. "mmv \-a
+ .ie '\nO'2' *.c
+ .el \\*.c
+ big" will append all ".c" files to "big".
+-Chains and cycles are also allowed, so "mmv -a f f" will double up "f".
++Chains and cycles are also allowed, so "mmv \-a f f" will double up "f".
+ .ie '\nO'2' \{\
+ .TP
+--z :
+-same as -a, but if the target file exists, and its last character is a ^Z,
++\-z :
++same as \-a, but if the target file exists, and its last character is a ^Z,
+ and the source file is not empty,
+ this ^Z is truncated before doing the append.
+ \}
+ .el \{\
+ .TP
+--l :
++\-l :
+ link target name to source file.
+ Both must be on the same device,
+ and the source must not be a directory.
+ Chains and cycles are not allowed.
+ .if '\nO'0' \{\
+ .TP
+--s :
+-same as -l, but use symbolic links instead of hard links.
++\-s :
++same as \-l, but use symbolic links instead of hard links.
+ For the resulting link to aim back at the source,
+ either the source name must begin with a '/',
+ or the target must reside in either the current or the source directory.
+@@ -190,7 +194,7 @@ and the source can be a directory.
+ Only one of these option may be given,
+ and it applies to all matching files.
+ Remaining options need not be given separately,
+-i.e. "mmv -mk" is allowed.
++i.e. "mmv \-mk" is allowed.
+ .ce
+ Multiple Pattern Pairs
+@@ -232,7 +236,7 @@ a b
+ a c
+ .in -3
+-would give the error message "a -> c : no match" because file "a"
++would give the error message "a \-> c : no match" because file "a"
+ (even if it exists)
+ was already matched by the first pattern pair.
+@@ -255,10 +259,10 @@ matching any single character,
+ and matching any one of a set of characters.
+ .PP
+ Between the '[' and ']', a range from character 'a' through character 'z'
+-is specified with "a-z".
++is specified with "a\-z".
+ The set of matching characters can be negated by inserting
+ a '^' after the '['.
+-Thus, "[^b-e2-5_]"
++Thus, "[^b\-e2\-5_]"
+ will match any character but 'b' through 'e', '2' through '5', and '_'.
+ .if '\nO'2' \{\
+ .PP
+@@ -305,13 +309,13 @@ However, the '~' is not treated as a wil
+ in the sense that it is not assigned a wildcard index (see below).
+ \}
+ .PP
+-Since matching a directory under a task option other than -r or -s
++Since matching a directory under a task option other than \-r or \-s
+ would result in an error,
+-tasks other than -r and -s
++tasks other than \-r and \-s
+ match directories only against completely explicit
+ .I from
+ patterns (i.e. not containing wildcards).
+-Under -r and -s, this applies only to "." and "..".
++Under \-r and \-s, this applies only to "." and "..".
+ .PP
+ .ie '\nO'2' \{\
+ Hidden and system files are also only matched
+@@ -324,7 +328,7 @@ Files beginning with '.' are only matche
+ .I from
+ patterns that begin with an explicit '.'.
+ \}
+-However, if -h is specified, they are matched normally.
++However, if \-h is specified, they are matched normally.
+ .if !'\nO'2' \{\
+ .PP
+ Warning: since the shell normally expands wildcards
+@@ -332,8 +336,9 @@ before passing the command-line argument
+ .IR mmv ,
+ it is usually necessary to enclose the command-line
+ .I from
+-pattern
+-in quotes.
++and
++.I to
++patterns in quotes.
+ \}
+ .ce
+@@ -363,7 +368,7 @@ pattern is "abc*.*" and the
+ pattern is "xyz#2.#1",
+ then "abc.txt" is targeted to "xyztxt.".
+ (The first '*' matched "", and the second matched "txt".)
+-Similarly, for the pattern pair ";*.[clp]" -> "#1#3\*(SL#2",
++Similarly, for the pattern pair ";*.[clp]" \-> "#1#3\*(SL#2",
+ "foo1\*(SLfoo2\*(SLprog.c" is targeted to "foo1\*(SLfoo2\*(SLc\*(SLprog".
+ Note that there is no '\*(SL' following the "#1" in the
+ .I to
+@@ -397,7 +402,7 @@ expands the '~' in the exact same manner
+ does not expand it at all).
+ \}
+ .PP
+-For all task options other than -r, if the target name is a directory,
++For all task options other than \-r, if the target name is a directory,
+ the real target name is formed by appending
+ a '\*(SL' followed by the last component
+ of the source file name.
+@@ -434,7 +439,7 @@ a b
+ .br
+ b c
+-specifies the chain "a" -> "b" -> "c".
++specifies the chain "a" \-> "b" \-> "c".
+ A cycle is a chain where the last target name
+ refers back to the first source file,
+ e.g. "mmv a a".
+@@ -461,9 +466,9 @@ Furthermore,
+ .I mmv
+ checks if any of its actions will result
+ in the destruction of existing files.
+-If the -d (delete) option is specified,
++If the \-d (delete) option is specified,
+ all file deletions or overwrites are done silently.
+-Under -p (protect), all deletions or overwrites
++Under \-p (protect), all deletions or overwrites
+ (except those specified with "(*)" on the standard input, see below)
+ are treated as errors.
+ And if neither option is specified,
+@@ -487,16 +492,16 @@ Once all errors are detected,
+ queries the user whether he wishes
+ to continue by avoiding the erroneous actions or to abort altogether.
+ This and all other queries may be avoided by specifying either the
+--g (go) or -t (terminate) option.
++\-g (go) or \-t (terminate) option.
+ The former will resolve all difficulties by avoiding the erroneous actions;
+ the latter will abort
+ .I mmv
+ if any errors are detected.
+ Specifying either of them defaults
+ .I mmv
+-to -p, unless -d is specified
++to \-p, unless \-d is specified
+ (see above).
+-Thus, -g and -t are most useful when running
++Thus, \-g and \-t are most useful when running
+ .I mmv
+ in the background or in
+ a shell script,
+@@ -508,28 +513,28 @@ Reports
+ Once the actions to be performed are determined,
+ .I mmv
+ performs them silently,
+-unless either the -v (verbose) or -n (no-execute) option is specified.
++unless either the \-v (verbose) or \-n (no-execute) option is specified.
+ The former causes
+ .I mmv
+ to report each performed action
+ on the standard output as
+-a -> b : done.
++a \-> b : done.
+ Here, "a" and "b" would be replaced by the source and target names,
+ respectively.
+ If the action deletes the old target,
+ a "(*)" is inserted after the the target name.
+-Also, the "->" symbol is modified when a cycle has to be broken:
++Also, the "\->" symbol is modified when a cycle has to be broken:
+ the '>' is changed to a '^' on the action prior to which the old target
+ is renamed to a temporary,
+-and the '-' is changed to a '=' on the action where the temporary is used.
++and the '\-' is changed to a '=' on the action where the temporary is used.
+ .PP
+-Under -n, none of the actions are performed,
++Under \-n, none of the actions are performed,
+ but messages like the above are printed on the standard output
+ with the ": done." omitted.
+ .PP
+-The output generated by -n can (after editing, if desired)
++The output generated by \-n can (after editing, if desired)
+ be fed back to
+ .I mmv
+ on the standard input
+@@ -545,9 +550,9 @@ To facilitate this,
+ ignores lines on the standard input that look
+ like its own error and "done" messages,
+ as well as all lines beginning with white space,
+-and will accept pattern pairs with or without the intervening "->"
+-(or "-^", "=>", or "=^").
+-Lines with "(*)" after the target pattern have the effect of enabling -d
++and will accept pattern pairs with or without the intervening "\->"
++(or "\-^", "=>", or "=^").
++Lines with "(*)" after the target pattern have the effect of enabling \-d
+ for the files matching this pattern only,
+ so that such deletions are done silently.
+ When feeding
+@@ -596,11 +601,11 @@ on a copy of
+ .I mmv
+ named as follows:
+-      -x, -m, -r              mmv.exe
++      \-x, \-m, \-r           mmv.exe
+ .br
+-      -c, -o                  mcp.exe
++      \-c, \-o                        mcp.exe
+ .br
+-      -a, -z                  mad.exe
++      \-a, \-z                        mad.exe
+ .PP
+ .I Mmvpatch
+ also determines the best way to uniquely identify directories.
+--- mmv-1.01b.orig/Makefile
++++ mmv-1.01b/Makefile
+@@ -1,10 +1,10 @@
+ # Possible defines in CONF:
+ #     IS_MSDOS IS_SYSV IS_V7 IS_BSD HAS_DIRENT HAS_RENAME MV_DIR
+-CC            =gcc -traditional
++CC            =gcc
+ LD            =$(CC)
+ CONF          =-DIS_SYSV -DHAS_DIRENT -DHAS_RENAME
+-CFLAGS                =-O2 -m486 $(CONF)
++CFLAGS                =-O2 $(CONF)
+ LDFLAGS               =-s -N
+ #IBIN         =$(LOCAL)$(ARCH)/bin
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..2342fbf
--- /dev/null
@@ -0,0 +1 @@
+patches-as-of-mmv-1.01b-15.diff
diff --git a/debian/source/format b/debian/source/format
new file mode 100644 (file)
index 0000000..163aaf8
--- /dev/null
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/mmv.1 b/mmv.1
index 9e1e5d38a614833b2a2dddd4c2cc18704334bac8..e23c5aed8d5ce5688087719816055c2787aa3139 100644 (file)
--- a/mmv.1
+++ b/mmv.1
@@ -2,7 +2,7 @@
 .\" To print the MS-DOS version, use option -rO2.
 .\" Under System V, take out the '.\"  ' from the next line.
 .\" .nr O 1
-.TH MMV 1 "November 20, 2001 (v1.0lfs)"
+.TH MMV 1 "November 20, 1989 (v1.0)"
 .ie !'\nO'2' \{\
 .SH NAME
 mmv \- move/copy/append/link multiple files by wildcard patterns
@@ -21,14 +21,13 @@ mmv \- move/copy/append multiple files by wildcard patterns
 \}
 .SH SYNOPSIS
 .B mmv
-.if '\nO'2' [\fB\-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBz\fP]
-.if '\nO'0' [\fB\-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP|\fBs\fP]
-.if '\nO'1' [\fB\-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP]
-[\fB\-h\fP]
-[\fB\-d\fP|\fBp\fP]
-[\fB\-g\fP|\fBt\fP]
-[\fB\-v\fP|\fBn\fP]
-[\fB\-\-\fP]
+.if '\nO'2' [\fB-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBz\fP]
+.if '\nO'0' [\fB-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP|\fBs\fP]
+.if '\nO'1' [\fB-m\fP|\fBx\fP|\fBr\fP|\fBc\fP|\fBo\fP|\fBa\fP|\fBl\fP]
+[\fB-h\fP]
+[\fB-d\fP|\fBp\fP]
+[\fB-g\fP|\fBt\fP]
+[\fB-v\fP|\fBn\fP]
 [\fBfrom to\fP]
 .if '\nO'2' \{\
 .br
@@ -57,9 +56,6 @@ from the entire set of actions specified
 and gives the user the choice of either
 proceeding by avoiding the offending parts
 or aborting.
-.I mmv
-does support large files (LFS) but it does *NOT* support 
-sparse files (i.e. it explodes them).
 
 .ce
 The Task Options
@@ -75,7 +71,7 @@ If none of these are specified,
 .ie '\nO'2' \{\
 a default (patchable by
 .IR mmvpatch ,
-and initially \-x)
+and initially -x)
 determines the task.
 \}
 .el \{\
@@ -85,18 +81,18 @@ was invoked (argv[0]):
 
        command name    default task
 
-       mmv                     \-x
+       mmv                     -x
 .br
-       mcp                     \-c
+       mcp                     -c
 .br
-       mad                     \-a
+       mad                     -a
 .br
-       mln                     \-l
+       mln                     -l
 \}
 .PP
 The task option choices are:
 .TP
-\-m :
+-m :
 move source file to target name.
 Both must be on the same device.
 Will not move directories.
@@ -106,8 +102,8 @@ moves the link without checking if the link's target from the new
 directory is different than the old.
 \}
 .TP
-\-x :
-same as \-m, except cross-device moves are done
+-x :
+same as -m, except cross-device moves are done
 by copying, then deleting source.
 When copying, sets the
 .ie !'\nO'2' permission bits
@@ -115,7 +111,7 @@ When copying, sets the
 and file modification time
 of the target file to that of the source file.
 .TP
-\-r :
+-r :
 rename source file or directory to target name.
 The target name must not include a path:
 the file remains in the same directory in all cases.
@@ -123,7 +119,7 @@ This option is the only way of renaming directories under
 .IR mmv .
 .if '\nO'2' It is only available under DOS version 3.0 or higher.
 .TP
-\-c :
+-c :
 copy source file to target name.
 Sets the file modification time and
 .ie !'\nO'2' permission bits
@@ -132,7 +128,7 @@ of the target file to that of the source file,
 regardless of whether the target file already exists.
 Chains and cycles (to be explained below) are not allowed.
 .TP
-\-o :
+-o :
 overwrite target name with source file.
 .ie '\nO'2' \{\
 If target file exists, its attributes are left unchanged.
@@ -150,38 +146,38 @@ and the execute permission bits copied from the source file.
 In either case, the file modification time is set to the current time.
 \}
 .TP
-\-a :
+-a :
 append contents of source file to target name.
 Target file modification time is set to the current time.
 If target file does not exist,
 it is created with
 .ie '\nO'2' attributes
 .el permission bits
-set as under \-o.
-Unlike all other options, \-a allows multiple source files to have the
-same target name, e.g. "mmv \-a
+set as under -o.
+Unlike all other options, -a allows multiple source files to have the
+same target name, e.g. "mmv -a
 .ie '\nO'2' *.c
 .el \\*.c
 big" will append all ".c" files to "big".
-Chains and cycles are also allowed, so "mmv \-a f f" will double up "f".
+Chains and cycles are also allowed, so "mmv -a f f" will double up "f".
 .ie '\nO'2' \{\
 .TP
-\-z :
-same as \-a, but if the target file exists, and its last character is a ^Z,
+-z :
+same as -a, but if the target file exists, and its last character is a ^Z,
 and the source file is not empty,
 this ^Z is truncated before doing the append.
 \}
 .el \{\
 .TP
-\-l :
+-l :
 link target name to source file.
 Both must be on the same device,
 and the source must not be a directory.
 Chains and cycles are not allowed.
 .if '\nO'0' \{\
 .TP
-\-s :
-same as \-l, but use symbolic links instead of hard links.
+-s :
+same as -l, but use symbolic links instead of hard links.
 For the resulting link to aim back at the source,
 either the source name must begin with a '/',
 or the target must reside in either the current or the source directory.
@@ -194,7 +190,7 @@ and the source can be a directory.
 Only one of these option may be given,
 and it applies to all matching files.
 Remaining options need not be given separately,
-i.e. "mmv \-mk" is allowed.
+i.e. "mmv -mk" is allowed.
 
 .ce
 Multiple Pattern Pairs
@@ -236,7 +232,7 @@ a b
 a c
 .in -3
 
-would give the error message "a \-> c : no match" because file "a"
+would give the error message "a -> c : no match" because file "a"
 (even if it exists)
 was already matched by the first pattern pair.
 
@@ -259,10 +255,10 @@ matching any single character,
 and matching any one of a set of characters.
 .PP
 Between the '[' and ']', a range from character 'a' through character 'z'
-is specified with "a\-z".
+is specified with "a-z".
 The set of matching characters can be negated by inserting
 a '^' after the '['.
-Thus, "[^b\-e2\-5_]"
+Thus, "[^b-e2-5_]"
 will match any character but 'b' through 'e', '2' through '5', and '_'.
 .if '\nO'2' \{\
 .PP
@@ -309,13 +305,13 @@ However, the '~' is not treated as a wildcard,
 in the sense that it is not assigned a wildcard index (see below).
 \}
 .PP
-Since matching a directory under a task option other than \-r or \-s
+Since matching a directory under a task option other than -r or -s
 would result in an error,
-tasks other than \-r and \-s
+tasks other than -r and -s
 match directories only against completely explicit
 .I from
 patterns (i.e. not containing wildcards).
-Under \-r and \-s, this applies only to "." and "..".
+Under -r and -s, this applies only to "." and "..".
 .PP
 .ie '\nO'2' \{\
 Hidden and system files are also only matched
@@ -328,7 +324,7 @@ Files beginning with '.' are only matched against
 .I from
 patterns that begin with an explicit '.'.
 \}
-However, if \-h is specified, they are matched normally.
+However, if -h is specified, they are matched normally.
 .if !'\nO'2' \{\
 .PP
 Warning: since the shell normally expands wildcards
@@ -336,9 +332,8 @@ before passing the command-line arguments to
 .IR mmv ,
 it is usually necessary to enclose the command-line
 .I from
-and
-.I to
-patterns in quotes.
+pattern
+in quotes.
 \}
 
 .ce
@@ -368,7 +363,7 @@ pattern is "abc*.*" and the
 pattern is "xyz#2.#1",
 then "abc.txt" is targeted to "xyztxt.".
 (The first '*' matched "", and the second matched "txt".)
-Similarly, for the pattern pair ";*.[clp]" \-> "#1#3\*(SL#2",
+Similarly, for the pattern pair ";*.[clp]" -> "#1#3\*(SL#2",
 "foo1\*(SLfoo2\*(SLprog.c" is targeted to "foo1\*(SLfoo2\*(SLc\*(SLprog".
 Note that there is no '\*(SL' following the "#1" in the
 .I to
@@ -402,7 +397,7 @@ expands the '~' in the exact same manner as
 does not expand it at all).
 \}
 .PP
-For all task options other than \-r, if the target name is a directory,
+For all task options other than -r, if the target name is a directory,
 the real target name is formed by appending
 a '\*(SL' followed by the last component
 of the source file name.
@@ -439,7 +434,7 @@ a b
 .br
 b c
 
-specifies the chain "a" \-> "b" \-> "c".
+specifies the chain "a" -> "b" -> "c".
 A cycle is a chain where the last target name
 refers back to the first source file,
 e.g. "mmv a a".
@@ -466,9 +461,9 @@ Furthermore,
 .I mmv
 checks if any of its actions will result
 in the destruction of existing files.
-If the \-d (delete) option is specified,
+If the -d (delete) option is specified,
 all file deletions or overwrites are done silently.
-Under \-p (protect), all deletions or overwrites
+Under -p (protect), all deletions or overwrites
 (except those specified with "(*)" on the standard input, see below)
 are treated as errors.
 And if neither option is specified,
@@ -492,16 +487,16 @@ Once all errors are detected,
 queries the user whether he wishes
 to continue by avoiding the erroneous actions or to abort altogether.
 This and all other queries may be avoided by specifying either the
-\-g (go) or \-t (terminate) option.
+-g (go) or -t (terminate) option.
 The former will resolve all difficulties by avoiding the erroneous actions;
 the latter will abort
 .I mmv
 if any errors are detected.
 Specifying either of them defaults
 .I mmv
-to \-p, unless \-d is specified
+to -p, unless -d is specified
 (see above).
-Thus, \-g and \-t are most useful when running
+Thus, -g and -t are most useful when running
 .I mmv
 in the background or in
 a shell script,
@@ -513,28 +508,28 @@ Reports
 Once the actions to be performed are determined,
 .I mmv
 performs them silently,
-unless either the \-v (verbose) or \-n (no-execute) option is specified.
+unless either the -v (verbose) or -n (no-execute) option is specified.
 The former causes
 .I mmv
 to report each performed action
 on the standard output as
 
-a \-> b : done.
+a -> b : done.
 
 Here, "a" and "b" would be replaced by the source and target names,
 respectively.
 If the action deletes the old target,
 a "(*)" is inserted after the the target name.
-Also, the "\->" symbol is modified when a cycle has to be broken:
+Also, the "->" symbol is modified when a cycle has to be broken:
 the '>' is changed to a '^' on the action prior to which the old target
 is renamed to a temporary,
-and the '\-' is changed to a '=' on the action where the temporary is used.
+and the '-' is changed to a '=' on the action where the temporary is used.
 .PP
-Under \-n, none of the actions are performed,
+Under -n, none of the actions are performed,
 but messages like the above are printed on the standard output
 with the ": done." omitted.
 .PP
-The output generated by \-n can (after editing, if desired)
+The output generated by -n can (after editing, if desired)
 be fed back to
 .I mmv
 on the standard input
@@ -550,9 +545,9 @@ To facilitate this,
 ignores lines on the standard input that look
 like its own error and "done" messages,
 as well as all lines beginning with white space,
-and will accept pattern pairs with or without the intervening "\->"
-(or "\-^", "=>", or "=^").
-Lines with "(*)" after the target pattern have the effect of enabling \-d
+and will accept pattern pairs with or without the intervening "->"
+(or "-^", "=>", or "=^").
+Lines with "(*)" after the target pattern have the effect of enabling -d
 for the files matching this pattern only,
 so that such deletions are done silently.
 When feeding
@@ -601,11 +596,11 @@ on a copy of
 .I mmv
 named as follows:
 
-       \-x, \-m, \-r           mmv.exe
+       -x, -m, -r              mmv.exe
 .br
-       \-c, \-o                        mcp.exe
+       -c, -o                  mcp.exe
 .br
-       \-a, \-z                        mad.exe
+       -a, -z                  mad.exe
 .PP
 .I Mmvpatch
 also determines the best way to uniquely identify directories.
diff --git a/mmv.c b/mmv.c
index ac1bb76c1ab1e52750a3a5e8d06d9c13e038d349..2e72a731e426c3378d5887c355abda40d337e3e7 100644 (file)
--- a/mmv.c
+++ b/mmv.c
@@ -62,8 +62,7 @@ static char USAGE[] =
 %s [-m|x%s|c|o|a|z] [-h] [-d|p] [-g|t] [-v|n] [from to]\n\
 \n\
 Use #N in the ``to'' pattern to get the string matched\n\
-by the N'th ``from'' pattern wildcard.\n\
-Use -- as the end of options.\n";
+by the N'th ``from'' pattern wildcard.\n";
 
 #define OTHEROPT (_osmajor < 3 ? "" : "|r")
 
@@ -76,9 +75,7 @@ Use #[l|u]N in the ``to'' pattern to get the [lowercase|uppercase of the]\n\
 string matched by the N'th ``from'' pattern wildcard.\n\
 \n\
 A ``from'' pattern containing wildcards should be quoted when given\n\
-on the command line. Also you may need to quote ``to'' pattern.\n\
-\n\
-Use -- as the end of options.\n";
+on the command line.\n";
 
 #ifdef IS_SYSV
 #define OTHEROPT ""
@@ -88,7 +85,6 @@ Use -- as the end of options.\n";
 
 #endif
 
-#include <unistd.h>
 #include <stdio.h>
 #include <ctype.h>
 
@@ -124,12 +120,14 @@ 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>
 
+extern char *getenv();
+extern long lseek();
+extern char *malloc();
+
 #ifdef HAS_DIRENT
 #include <dirent.h>
 typedef struct dirent DIRENTRY;
@@ -392,7 +390,7 @@ static int movealias(/* REP *first, REP *p, int *pprintaliased */);
 static int snap(/* REP *first, REP *p */);
 static void showdone(/* REP *fin */);
 static void breakout(/*  */);
-static void breakrep(int);
+static int breakrep(/* */);
 static void breakstat(/* */);
 static void quit(/*  */);
 static int copymove(/* REP *p */);
@@ -438,11 +436,9 @@ static CHUNK *freechunks = NULL;
 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;
+static FILE *outfile = stdout;
 
-#ifdef IS_MSDOS
 static char IDF[] = "$$mmvdid.";
-#endif
 static char TEMP[] = "$$mmvtmp.";
 static char TOOLONG[] = "(too long)";
 static char EMPTY[] = "(empty)";
@@ -460,12 +456,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];
@@ -501,8 +497,6 @@ int main(argc, argv)
 {
        char *frompat, *topat;
 
-       outfile = stdout;
-
        init();
        procargs(argc, argv, &frompat, &topat);
        domatch(frompat, topat);
@@ -566,7 +560,7 @@ static void procargs(argc, argv, pfrompat, ptopat)
        char **pfrompat, **ptopat;
 {
        char *p, c;
-       char *cmdname = basename(argv[0]);
+       char *cmdname = argv[0];
 
 #ifdef IS_MSDOS
 #define CMDNAME (patch.ph_name)
@@ -581,11 +575,6 @@ static void procargs(argc, argv, pfrompat, ptopat)
        for (argc--, argv++; argc > 0 && **argv == '-'; argc--, argv++)
                for (p = *argv + 1; *p != '\0'; p++) {
                        c = mylower(*p);
-                       if (c == '-') {
-                               argc--;
-                               argv++;
-                               goto endargs;
-                       }
                        if (c == 'v' && !noex)
                                verbose = 1;
                        else if (c == 'n' && !verbose)
@@ -629,8 +618,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)
@@ -641,8 +629,6 @@ endargs:
                        op = HARDLINK;
                else
                        op = DFLTOP;
-       }
-       
        if (
                op & DIRMOVE &&
 #ifdef IS_MSDOS
@@ -789,7 +775,7 @@ static void matchpat()
 static int parsepat()
 {
        char *p, *lastname, c;
-       int totwilds, instage, x;
+       int totwilds, instage, x, havedot;
        static char TRAILESC[] = "%s -> %s : trailing %c is superfluous.\n";
 
        lastname = from;
@@ -1013,16 +999,20 @@ static int parsepat()
                                printf(TRAILESC, from, to, ESC);
                                return(-1);
                        }
-#ifdef IS_MSDOS
                default:
                        if (
+#ifdef IS_MSDOS
                                c <= ' ' || c >= 127 ||
                                strchr(":/\\*?[]=+;,\"|<>", c) != NULL
+#else
+                               c & 0x80
+#endif
                        ) {
                                printf("%s -> %s : illegal character '%c' (0x%02X).\n",
                                        from, to, c, c);
                                return(-1);
                        }
+#ifdef IS_MSDOS
                        if (isupper(c))
                                *p = c + ('a' - 'A');
 #endif
@@ -1052,7 +1042,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 = NULL;
+       FILEINFO **pf, *fdel;
        char *nto, *firstesc;
        REP *p;
        int wantdirs, ret = 1, laststage = (stage + 1 == nstages);
@@ -1182,12 +1172,11 @@ 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);
 }
@@ -1323,7 +1312,7 @@ static int checkto(hfrom, f, phto, pnto, pfdel)
 {
        char tpath[MAXPATH + 1];
        char *pathend;
-       FILEINFO *fdel = NULL;
+       FILEINFO *fdel;
        int hlen, tlen;
 
        if (op & DIRMOVE) {
@@ -1416,9 +1405,7 @@ static char *getpath(tpath)
 static int badname(s)
        char *s;
 {
-#ifdef IS_MSDOS
        char *ext;
-#endif
 
        return (
 #ifdef IS_MSDOS
@@ -1728,19 +1715,20 @@ static HANDLE *checkdir(p, pathend, which)
        struct stat dstat;
        DIRID d;
        DEVID v;
-       DIRINFO *di = NULL;
+       DIRINFO **newdirs, *di;
+       int nfils;
+       FILEINFO **fils;
        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 = ".";
@@ -1911,10 +1899,7 @@ static int match(pat, s, start1, len1)
        char *pat, *s, **start1;
        int *len1;
 {
-       char c;
-#ifdef IS_MSDOS
-       char *olds;
-#endif
+       char c, *olds;
 
        *start1 = 0;
        for(;;)
@@ -2391,9 +2376,9 @@ static void goonordie()
 static void doreps()
 {
        char *fstart;
-       int k, printaliased = 0, alias = 0;
+       int k, printaliased = 0, alias;
        REP *first, *p;
-       long aliaslen = 0l;
+       long aliaslen;
 
 #ifdef IS_MSDOS
        ctrlbrk(breakrep);
@@ -2411,12 +2396,11 @@ 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))
@@ -2475,7 +2459,7 @@ static long appendalias(first, p, pprintaliased)
        REP *first, *p;
        int *pprintaliased;
 {
-       long ret = 0l;
+       long ret;
 
 #ifdef IS_MSDOS
        int fd;
@@ -2594,10 +2578,10 @@ static void breakout()
 }
 
 
-static void breakrep(int signum)
+static int breakrep()
 {
        gotsig = 1;
-       return;
+       return(1);
 }
 
 
@@ -2640,12 +2624,11 @@ static int copymove(p)
 
 static int copy(ff, len)
        FILEINFO *ff;
-       off_t len;
+       long len;
 {
-       char buf[BUFSIZE];
+       char buf[BUFSIZE], c;
        int f, t, k, mode, perm;
 #ifdef IS_MSDOS
-        char c;
        struct ftime tim;
 #else
 #ifdef IS_SYSV
@@ -2689,7 +2672,7 @@ static int copy(ff, len)
                return(-1);
        }
        if (op & APPEND)
-               lseek(t, (off_t)0, SEEK_END);
+               lseek(t, 0L, 2);
 #ifdef IS_MSDOS
        if (op & ZAPPEND && filelength(t) != 0) {
                if (lseek(t, -1L, 1) == -1L || read(t, &c, 1) != 1) {
@@ -2701,10 +2684,10 @@ static int copy(ff, len)
                        lseek(t, -1L, 1);
        }
 #endif
-       if ((op & APPEND) && len != (off_t)-1) {
+       if ((op & APPEND) && len != -1L) {
                while (
                        len != 0 &&
-                       (k = read(f, buf, (len > BUFSIZE) ? BUFSIZE : (size_t)len)) > 0 &&
+                       (k = read(f, buf, len > BUFSIZE ? BUFSIZE : (unsigned)len)) > 0 &&
                        write(t, buf, k) == k
                )
                        len -= k;
@@ -2728,9 +2711,7 @@ 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)
                        )