New package: mmv (#22815)
This commit is contained in:
parent
64d8e4f5ad
commit
db0f181ec1
@ -0,0 +1,22 @@
|
||||
Description: Provide better diagnostic for directories
|
||||
Provides better diagnostic when renaming directories. Based on patch
|
||||
by Ulrich Eckhardt <doomster@knuut.de>.
|
||||
Debian-Bug: 584850
|
||||
Author: Axel Beckert <abe@debian.org>
|
||||
|
||||
Index: mmv/mmv.c
|
||||
===================================================================
|
||||
--- mmv.orig/mmv.c 2012-09-16 20:03:04.269626454 +0200
|
||||
+++ mmv/mmv.c 2012-09-16 20:06:18.220733497 +0200
|
||||
@@ -1215,7 +1215,11 @@
|
||||
getstat(pathbuf, ffrom);
|
||||
if ((ffrom->fi_stflags & FI_ISDIR) ? !dirs : !fils)
|
||||
#endif
|
||||
+ {
|
||||
+ if (verbose)
|
||||
+ printf("ignoring directory %s\n", ffrom->fi_name);
|
||||
return(0);
|
||||
+ }
|
||||
|
||||
if (needslash) {
|
||||
strcpy(pathend + *pk, SLASHSTR);
|
17
var/spack/repos/builtin/packages/mmv/format-security.diff
Normal file
17
var/spack/repos/builtin/packages/mmv/format-security.diff
Normal file
@ -0,0 +1,17 @@
|
||||
Description: Fixes build failure with -Werror=format-security
|
||||
("format not a string literal and no format arguments")
|
||||
Author: Axel Beckert <abe@debian.org>
|
||||
|
||||
Index: mmv/mmv.c
|
||||
===================================================================
|
||||
--- mmv.orig/mmv.c 2012-09-16 18:51:28.000000000 +0200
|
||||
+++ mmv/mmv.c 2012-09-16 18:59:20.600733584 +0200
|
||||
@@ -2828,7 +2828,7 @@
|
||||
static FILE *tty = NULL;
|
||||
int c, r;
|
||||
|
||||
- fprintf(stderr, m);
|
||||
+ fprintf(stderr, "%s", m);
|
||||
if (tty == NULL && (tty = fopen(TTY, "r")) == NULL) {
|
||||
fprintf(stderr, "Can not open %s to get reply.\n", TTY);
|
||||
if (failact == -1)
|
54
var/spack/repos/builtin/packages/mmv/man-page-examples.diff
Normal file
54
var/spack/repos/builtin/packages/mmv/man-page-examples.diff
Normal file
@ -0,0 +1,54 @@
|
||||
Description: Add examples section to man page
|
||||
This patch adds several examples of common mmv usage to the man page
|
||||
Debian-Bug: 380327
|
||||
Author: Axel Beckert <abe@debian.org>
|
||||
Last-Update: 2012-12-29
|
||||
|
||||
Index: mmv/mmv.1
|
||||
===================================================================
|
||||
--- mmv.orig/mmv.1 2012-12-29 02:20:59.510075480 +0100
|
||||
+++ mmv/mmv.1 2012-12-29 02:39:33.591699513 +0100
|
||||
@@ -35,6 +35,43 @@
|
||||
.B mmvpatch
|
||||
[\fBexecutable\fP]
|
||||
\}
|
||||
+.SH "EXAMPLES"
|
||||
+Rename all
|
||||
+.I *.jpeg
|
||||
+files in the current directory to
|
||||
+\fI*.jpg\fR:
|
||||
+
|
||||
+.in +3
|
||||
+mmv '*.jpeg' '#1.jpg'
|
||||
+.in -3
|
||||
+
|
||||
+Replace the first occurrence of
|
||||
+.I abc
|
||||
+with
|
||||
+.I xyz
|
||||
+in all files in the current directory:
|
||||
+
|
||||
+.in +3
|
||||
+mmv '*abc*' '#1xyz#2'
|
||||
+.in -3
|
||||
+
|
||||
+Rename files ending in \fI.html.en\fR, \fI.html.de\fR, etc. to ending
|
||||
+in \fI.en.html\fR, \fI.de.html\fR, etc. in the current directory:
|
||||
+
|
||||
+.in +3
|
||||
+mmv '*.html.??' '#1.#2#3.html'
|
||||
+.in -3
|
||||
+
|
||||
+Rename music files from
|
||||
+.I <track no.> - <interpreter> - <song title>.ogg
|
||||
+to
|
||||
+.I <interpreter> - <track no.> - <song title>.ogg
|
||||
+in the current directory:
|
||||
+
|
||||
+.in +3
|
||||
+mmv '* - * - *.ogg' '#2 - #1 - #3.ogg'
|
||||
+.in -3
|
||||
+
|
||||
.SH "DESCRIPTION"
|
||||
.I Mmv
|
||||
moves (or copies,
|
361
var/spack/repos/builtin/packages/mmv/man-page-fixes.diff
Normal file
361
var/spack/repos/builtin/packages/mmv/man-page-fixes.diff
Normal file
@ -0,0 +1,361 @@
|
||||
Description: Man page fixes as of mmv 1.01b-15
|
||||
This patch contains the man-page fixes 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-12-29
|
||||
|
||||
--- 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.
|
@ -0,0 +1,45 @@
|
||||
Description: Add warnings about #149873 to man page
|
||||
This patch adds warnings about issues with spaces in patterns and
|
||||
files when patterns are read from STDIN to the man page
|
||||
Debian-Bug: 149873
|
||||
Author: Axel Beckert <abe@debian.org>
|
||||
Last-Update: 2012-12-29
|
||||
|
||||
Index: mmv/mmv.1
|
||||
===================================================================
|
||||
--- mmv.orig/mmv.1 2012-12-29 02:44:07.591288928 +0100
|
||||
+++ mmv/mmv.1 2012-12-29 02:56:01.425012596 +0100
|
||||
@@ -234,7 +234,7 @@
|
||||
i.e. "mmv \-mk" is allowed.
|
||||
|
||||
.ce
|
||||
-Multiple Pattern Pairs
|
||||
+Multiple Pattern Pairs / Reading Patterns from STDIN
|
||||
.PP
|
||||
Multiple
|
||||
.I from
|
||||
@@ -277,6 +277,11 @@
|
||||
(even if it exists)
|
||||
was already matched by the first pattern pair.
|
||||
|
||||
+\fBWARNING:\fR This operation mode does \fBnot\fR work if the patterns
|
||||
+itself contain \fBspaces\fR. See
|
||||
+.I http://bugs.debian.org/149873
|
||||
+for details.
|
||||
+
|
||||
.ce
|
||||
The \fIFrom\fP Pattern
|
||||
.PP
|
||||
@@ -592,6 +597,12 @@
|
||||
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.
|
||||
+
|
||||
+\fBWARNING:\fR This means that \fBunexpected things\fR may happen if
|
||||
+\fBfiles\fR matched by the patterns contain \fBspaces\fR. See
|
||||
+.I http://bugs.debian.org/149873
|
||||
+for details.
|
||||
+
|
||||
When feeding
|
||||
.I mmv
|
||||
its own output,
|
44
var/spack/repos/builtin/packages/mmv/package.py
Normal file
44
var/spack/repos/builtin/packages/mmv/package.py
Normal file
@ -0,0 +1,44 @@
|
||||
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import os
|
||||
from spack import *
|
||||
|
||||
|
||||
class Mmv(MakefilePackage):
|
||||
"""Move/Copy/Append/Link multiple files mmv is a program to
|
||||
move/copy/append/link multiple files according to a set of wildcard
|
||||
patterns. This multiple action is performed safely, i.e. without any
|
||||
unexpected deletion of files due to collisions of target names with
|
||||
existing filenames or with other target names. """
|
||||
|
||||
homepage = "https://packages.debian.org/source/buster/mmv"
|
||||
url = "http://deb.debian.org/debian/pool/main/m/mmv/mmv_1.01b.orig.tar.gz"
|
||||
|
||||
version('1.01b', sha256='0399c027ea1e51fd607266c1e33573866d4db89f64a74be8b4a1d2d1ff1fdeef')
|
||||
|
||||
patch('better-diagnostics-for-directories-584850.diff')
|
||||
patch('format-security.diff')
|
||||
patch('man-page-examples.diff')
|
||||
patch('man-page-fixes.diff')
|
||||
patch('man-page-warning-149873.diff')
|
||||
patch('patches-as-of-mmv-1.01b-15.diff')
|
||||
patch('utime.diff')
|
||||
|
||||
def build(self, spec, prefix):
|
||||
cc = Executable(self.compiler.cc)
|
||||
cc('-DIS_SYSV', '-DHAS_DIRENT', '-DHAS_RENAME', '-O2', '-o', 'mmv', 'mmv.c')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
mkdirp(prefix.bin)
|
||||
install('mmv', prefix.bin)
|
||||
os.symlink(join_path(prefix.bin, 'mmv'), 'mad')
|
||||
os.symlink(join_path(prefix.bin, 'mmv'), 'mcp')
|
||||
os.symlink(join_path(prefix.bin, 'mmv'), 'mln')
|
||||
mkdirp(prefix.man1)
|
||||
install('mmv.1', prefix.man1)
|
||||
os.symlink(join_path(prefix.man1, 'mmv.1'), 'mad.1')
|
||||
os.symlink(join_path(prefix.man1, 'mmv.1'), 'mcp.1')
|
||||
os.symlink(join_path(prefix.man1, 'mmv.1'), 'mln.1')
|
@ -0,0 +1,368 @@
|
||||
Description: Patches as of mmv 1.01b-15
|
||||
This patch contains the functional 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-12-29
|
||||
|
||||
--- 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)
|
||||
)
|
||||
Index: mmv/Makefile
|
||||
===================================================================
|
||||
--- mmv.orig/Makefile 2012-09-16 18:24:31.375886230 +0200
|
||||
+++ mmv/Makefile 2012-09-16 18:24:46.260122528 +0200
|
||||
@@ -1,16 +1,16 @@
|
||||
# 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
|
||||
#IMAN =$(LOCAL)$(ANY)/man
|
||||
IBIN=$(DESTDIR)/usr/bin/
|
||||
-IMAN=$(DESTDIR)/usr/man/
|
||||
+IMAN=$(DESTDIR)/usr/share/man/
|
||||
|
||||
mmv: mmv.o
|
||||
|
21
var/spack/repos/builtin/packages/mmv/utime.diff
Normal file
21
var/spack/repos/builtin/packages/mmv/utime.diff
Normal file
@ -0,0 +1,21 @@
|
||||
--- mmv-1.01b.orig/mmv.c
|
||||
+++ mmv-1.01b/mmv.c
|
||||
@@ -123,6 +123,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/file.h>
|
||||
+#include <utime.h>
|
||||
|
||||
extern char *getenv();
|
||||
extern long lseek();
|
||||
@@ -192,10 +193,6 @@
|
||||
#ifdef IS_SYSV
|
||||
|
||||
/* for System V and Version 7*/
|
||||
-struct utimbuf {
|
||||
- time_t actime;
|
||||
- time_t modtime;
|
||||
-};
|
||||
#define utimes(f, t) utime((f), &(t))
|
||||
|
||||
#ifndef HAS_RENAME
|
Loading…
Reference in New Issue
Block a user