Hello, thanks for this patch.
I have one question, out of curiosity. Why do you set SED to @SED@ and then call $SET. Wouldn't it be more efficient to directly call @SED@ ? I mean that instead of doing that: > - | sed -nre "s,^300 \`(/proc/.*/fd)/.*' -> \`$patch'$,\\1,p") > + | $SED -nre "s,^300 \`(/proc/.*/fd)/.*' -> \`$patch'$,\\1,p") I would do that: > + | @SED@ -nre "s,^300 \`(/proc/.*/fd)/.*' -> \`$patch'$,\\1,p") Do I miss something here? Thanks again for this patch, that's a pity that our --with-sed option was not functionnal. Bye, Mt. On Tue, Dec 24, 2013 at 08:42:57AM -0600, Kent R. Spillner wrote: > configure.ac calls QUILT_COMPAT_PROG_PATH(SED, sed) > allowing users to provide their own path to sed via > --with-sed=. However, nothing was actually using SED. > This patch updates Makefile.in to substitute @SED@ in > all .in files, and updates everything in bin/ and quilt/ > to actually support this substitution. > > With this change it is possible to configure quilt to > explicitly use GNU sed on systems where GNU sed is > available but not installed by default (e.g. OpenBSD). > > Signed-off-by: Kent R. Spillner <[email protected]> > --- > Makefile.in | 1 + > bin/patch-wrapper.in | 5 +++-- > bin/quilt.in | 4 +++- > quilt/annotate.in | 6 ++++-- > quilt/diff.in | 4 +++- > quilt/grep.in | 4 +++- > quilt/header.in | 4 +++- > quilt/import.in | 4 +++- > quilt/mail.in | 24 +++++++++++++----------- > quilt/refresh.in | 4 +++- > quilt/scripts/inspect.in | 4 +++- > quilt/scripts/patchfns.in | 18 ++++++++++-------- > quilt/setup.in | 8 +++++--- > 13 files changed, 57 insertions(+), 33 deletions(-) > > diff --git a/Makefile.in b/Makefile.in > index 8040653..cd7c2b9 100644 > --- a/Makefile.in > +++ b/Makefile.in > @@ -257,6 +257,7 @@ $(patsubst %.in,%,$(wildcard bin/*.in quilt/*.in > quilt/scripts/*.in)) :: Makefil > -e 's:@PERL''@:$(PERL):g' \ > -e 's:@BASH''@:$(BASH):g' \ > -e 's:@PATCH''@:$(PATCH):g' \ > + -e 's:@SED''@:$(SED):g' \ > -e 's:@STAT_HARDLINK''@:$(STAT_HARDLINK):g' \ > -e 's:@VERSION''@:$(VERSION):g' \ > -e 's:@RELEASE''@:$(RELEASE):g' \ > diff --git a/bin/patch-wrapper.in b/bin/patch-wrapper.in > index 358856a..489fbca 100755 > --- a/bin/patch-wrapper.in > +++ b/bin/patch-wrapper.in > @@ -7,6 +7,7 @@ > # used directly, and no quilt metadata will get created. > > PATCH=@PATCH@ > +SED=@SED@ > original_options=("$@") > > # GNU patch recognizes these environment variables > @@ -69,9 +70,9 @@ find_pipe_patch() { > patch=${patch//\[/\\[} > patch=${patch//\]/\\]} > set -- $(stat -c $'%a %N\n' /proc/*/fd/* 2>/dev/null \ > - | sed -nre "s,^300 \`(/proc/.*/fd)/.*' -> \`$patch'$,\\1,p") > + | $SED -nre "s,^300 \`(/proc/.*/fd)/.*' -> \`$patch'$,\\1,p") > set -- $(stat -c $'%a %N\n' $1/* 2>/dev/null \ > - | sed -nre "s,^500 \`.*' -> \`(.*)',\\1,p") > + | $SED -nre "s,^500 \`.*' -> \`(.*)',\\1,p") > [ $# -eq 1 ] || set -- "$patch" > echo "$1" > } > diff --git a/bin/quilt.in b/bin/quilt.in > index 2271833..51773a3 100644 > --- a/bin/quilt.in > +++ b/bin/quilt.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # unset posix strict conformance variable since patch cannot be run > # non-interactively when it's set. > unset POSIXLY_CORRECT > @@ -44,7 +46,7 @@ usage() > quilt_commands \ > | sort \ > | column | column -t \ > - | sed -e $'s/^/\t/' > + | $SED -e $'s/^/\t/' > echo $" > Global options: > > diff --git a/quilt/annotate.in b/quilt/annotate.in > index 0366f5a..c71e02b 100644 > --- a/quilt/annotate.in > +++ b/quilt/annotate.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # Read in library functions > if [ "$(type -t patch_file_name)" != function ] > then > @@ -40,7 +42,7 @@ empty_file() > { > local file=$1 > [ -s "$file" ] \ > - && sed -e 's:.*::' "$file" > + && $SED -e 's:.*::' "$file" > } > > annotation_for() > @@ -140,7 +142,7 @@ fi > > if [ ${#patches[@]} = 0 ] > then > - sed -e 's:^:'$'\t'':' "${files[${#files[@]}-1]}" > + $SED -e 's:^:'$'\t'':' "${files[${#files[@]}-1]}" > exit 0 > fi > > diff --git a/quilt/diff.in b/quilt/diff.in > index 6b4f9d6..4894fff 100644 > --- a/quilt/diff.in > +++ b/quilt/diff.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # Read in library functions > if [ "$(type -t patch_file_name)" != function ] > then > @@ -82,7 +84,7 @@ included. > colorize() { > if [ -n "$opt_color" ] > then > - sed -e ' > + $SED -e ' > s/^\(Index:\|---\|+++\|\*\*\*\) > .*/'$color_diff_hdr'&'$color_clear'/ > t ; s/^+.*/'$color_diff_add'&'$color_clear'/ > t ; s/^-.*/'$color_diff_rem'&'$color_clear'/ > diff --git a/quilt/grep.in b/quilt/grep.in > index 0c32fcf..81eb774 100644 > --- a/quilt/grep.in > +++ b/quilt/grep.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # Read in library functions > if [ "$(type -t patch_file_name)" != function ] > then > @@ -120,7 +122,7 @@ find "${myargs[@]:-.}" \( \ > -type f -print0 \ > | xargs -0 grep $opt_H "${args[@]}" \ > | if [ ${#myargs[@]} -eq 0 ]; then > - sed -e 's,^./,,' > + $SED -e 's,^./,,' > else > cat > fi > diff --git a/quilt/header.in b/quilt/header.in > index a3bbcbc..88daa11 100644 > --- a/quilt/header.in > +++ b/quilt/header.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # Read in library functions > if [ "$(type -t patch_file_name)" != function ] > then > @@ -52,7 +54,7 @@ maybe_strip_trailing_whitespace() > { > if [ -n "$opt_strip_trailing_whitespace" ] > then > - sed -e 's:[ '$'\t'']*$::' > + $SED -e 's:[ '$'\t'']*$::' > else > cat > fi > diff --git a/quilt/import.in b/quilt/import.in > index cc9deed..5d68678 100644 > --- a/quilt/import.in > +++ b/quilt/import.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # Read in library functions > if [ "$(type -t patch_file_name)" != function ] > then > @@ -65,7 +67,7 @@ merge_patches() > if [ -z "$opt_desc" ] > then > local diff=$(diff -u $old_desc $new_desc \ > - | sed -e '1,2d') > + | $SED -e '1,2d') > if [ -n "$diff" ] > then > printf $"Patch headers differ:\n" >&2 > diff --git a/quilt/mail.in b/quilt/mail.in > index 109782a..12fc2eb 100644 > --- a/quilt/mail.in > +++ b/quilt/mail.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED = @SED@ > + > : ${EDITOR:=vi} > > # Read in library functions > @@ -146,7 +148,7 @@ process_mail() > else > local from_date=$(LC_ALL=POSIX date "+%a %b %e %H:%M:%S %Y") > echo "From $opt_sender_address $from_date" > - sed -e 's/^From />From /' $tmpfile > + $SED -e 's/^From />From /' $tmpfile > echo > fi > rm -f $tmpfile > @@ -305,7 +307,7 @@ Could not determine the envelope sender address. Please > use --sender." >&2 > ;; > esac > fi > -opt_sender_address=$(echo "$opt_sender" | sed -re 's:.*<([^<>]+)>.*:\1:') > +opt_sender_address=$(echo "$opt_sender" | $SED -re 's:.*<([^<>]+)>.*:\1:') > > if [ -z "$opt_charset" ] > then > @@ -360,7 +362,7 @@ then > # Is the first paragraph short enough to be used as the subject? > if [ -z "$subject" ] > then > - local para=$(sed -e $'/^[ \t]*$/q' $tmpdir/header) > + local para=$($SED -e $'/^[ \t]*$/q' $tmpdir/header) > if [ ${#para} -gt 0 -a ${#para} -lt 150 ] > then > subject=$(echo "$para" | join_lines) > @@ -378,7 +380,7 @@ then > fi > > subject=$(echo "$subject" \ > - | sed -e > $'s/^\\(\\(\\[[^]]*\\]\\|fwd:\\|fw:\\|re:\\|aw:\\|tr:\\)[ \t]*\\)*//i') > + | $SED -e > $'s/^\\(\\(\\[[^]]*\\]\\|fwd:\\|fw:\\|re:\\|aw:\\|tr:\\)[ \t]*\\)*//i') > echo "Replace-Subject: $subject" > > # Add recipients defined by some recognized keywords > @@ -391,7 +393,7 @@ then > set -- "$*" > set -- ${*// /\\|} > > - sed -n -e "/\<${LOGNAME:-$(whoami)}@/d" \ > + $SED -n -e "/\<${LOGNAME:-$(whoami)}@/d" \ > -e 's/^\(\(To\|'"$*"'\):[ > '$'\t'']*\)\([^"]*\(,[^"]*\)\+[^" '$'\t'']\)\([ '$'\t'']*<.*>\)/\1"\3"\5/I' \ > -e 's/^To:\(.*@.*\)/Recipient-To:\1/Ip' \ > -e 's/^\('"$*"'\):\(.*@.*\)/Recipient-Cc:\2/Ip' \ > @@ -483,7 +485,7 @@ then > if [ -z "$opt_subject" ] > then > opt_subject="Re: $(formail -x Subject: < "$opt_reply_to" \ > - | sed -e 's/^ *\([rR][eE]: *\)*//')" > + | $SED -e 's/^ *\([rR][eE]: *\)*//')" > fi > fi > > @@ -557,7 +559,7 @@ subject_prefix=${subject_prefix//\'/\'\'} > subject_prefix=${subject_prefix//\//\\\/} > p=${subject_prefix//@num@/$(printf %0*d ${#total} 0)} > p=${p//@total@/$total} > -sed -e $'s/^\\(Subject:[ \t]\\)/\\1'"$p"'/' \ > +$SED -e $'s/^\\(Subject:[ \t]\\)/\\1'"$p"'/' \ > -e '/^Subject-Prefix:/d' \ > $introduction \ > | $QUILT_DIR/scripts/edmail --charset $opt_charset \ > @@ -573,7 +575,7 @@ fi > # increment the timestamp by one second and wait with sending until > # that time has arrived. This allows MUAs to show the messages in the > # correct order. > -last_ts=$(date '+%s' -d "$(sed -ne $'s/^Date:[ \t]*//p' $introduction)") > +last_ts=$(date '+%s' -d "$($SED -ne $'s/^Date:[ \t]*//p' $introduction)") > > num=1 > for patch in "${patches[@]}"; do > @@ -607,7 +609,7 @@ for patch in "${patches[@]}"; do > gsub(/'\''/, "'\'\''", s) > print options[n] " " r "='\''" s "'\'' \\" > } } > ' $body)" > -# echo "$modify" | sed -e 's/^/>> /' >&2 > +# echo "$modify" | $SED -e 's/^/>> /' >&2 > p=${subject_prefix//@num@/$(printf %0*d ${#total} $num)} > p=${p//@total@/$total} > > @@ -641,7 +643,7 @@ for patch in "${patches[@]}"; do > --replace-header Date="\"$new_date\"" \ > To Cc Bcc \ > "$modify" \ > - | sed -e $'s/^\\(Subject:[ \t]\\)/\\1'"$p"'/' \ > + | $SED -e $'s/^\\(Subject:[ \t]\\)/\\1'"$p"'/' \ > -e '/^Subject-Prefix:/d' \ > | $QUILT_DIR/scripts/edmail --remove-empty-headers \ > | process_mail ) 2> $tmpdir/err > @@ -649,7 +651,7 @@ for patch in "${patches[@]}"; do > status=$? > if [ -s $tmpdir/err ] > then > - sed -e "s/^/${patch//\//\\/}: /" < $tmpdir/err >&2 > + $SED -e "s/^/${patch//\//\\/}: /" < $tmpdir/err >&2 > fi > if [ $status -ne 0 ] > then > diff --git a/quilt/refresh.in b/quilt/refresh.in > index 6c6b4d0..29cf57e 100644 > --- a/quilt/refresh.in > +++ b/quilt/refresh.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # Read in library functions > if [ "$(type -t patch_file_name)" != function ] > then > @@ -285,7 +287,7 @@ then > function print_diffstat(arr, i) { > if (system("diffstat '"$QUILT_DIFFSTAT_OPTS \ > -p$num_strip_level \ > - $tmp_patch | sed -e s:^:"'" prefix ":")) > + $tmp_patch | $SED -e s:^:"'" prefix ":")) > exit 1 > } > { prefix="" > diff --git a/quilt/scripts/inspect.in b/quilt/scripts/inspect.in > index e8eff26..0d0b868 100644 > --- a/quilt/scripts/inspect.in > +++ b/quilt/scripts/inspect.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > : ${QUILT_DIR=@QUILT_DIR@} > > if ! [ -r $QUILT_DIR/scripts/patchfns ] > @@ -162,7 +164,7 @@ cat <<-'EOF' > $tmpdir/bin/wrapper > then > ( cd $RPM_BUILD_DIR > find . -type f \ > - | sed -e 's:^.\/::' \ > + | $SED -e 's:^.\/::' \ > | xargs md5sum \ > ) > $tmpdir/more-md5sums > fi > diff --git a/quilt/scripts/patchfns.in b/quilt/scripts/patchfns.in > index e89474f..0a56090 100644 > --- a/quilt/scripts/patchfns.in > +++ b/quilt/scripts/patchfns.in > @@ -7,6 +7,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > export TEXTDOMAIN=quilt > export TEXTDOMAINDIR=@LOCALEDIR@ > > @@ -79,19 +81,19 @@ trap run_exit_handlers EXIT > # Quote a string for use in a basic regular expression. > quote_bre() > { > - echo "$1" | sed -e 's:\([][^$/.*\\]\):\\\1:g' > + echo "$1" | $SED -e 's:\([][^$/.*\\]\):\\\1:g' > } > > # Quote a string for use in an extended regular expression. > quote_re() > { > - echo "$1" | sed -e 's:\([][?{(|)}^$/.+*\\]\):\\\1:g' > + echo "$1" | $SED -e 's:\([][?{(|)}^$/.+*\\]\):\\\1:g' > } > > # Quote a string for use in a globing pattern. > quote_glob() > { > - echo "$1" | sed -e 's:\([][*?\\]\):\\\1:g' > + echo "$1" | $SED -e 's:\([][*?\\]\):\\\1:g' > } > > patch_file_name() > @@ -326,7 +328,7 @@ cat_series() > { > if [ -e $SERIES ] > then > - sed -e '/^#/d' -e 's/^[ '$'\t'']*//' \ > + $SED -e '/^#/d' -e 's/^[ '$'\t'']*//' \ > -e 's/[ '$'\t''].*//' -e '/^$/d' $SERIES > else > return 1 > @@ -514,7 +516,7 @@ find_patch() > > local patch=${1#$SUBDIR_DOWN$QUILT_PATCHES/} > local bre=$(quote_bre "$patch") > - set -- $(sed -e > "/^$bre\(\|\.patch\|\.diff\?\)\(\|\.gz\|\.bz2\|\.xz\|\.lzma\)\([ > "$'\t'"]\|$\)/!d" \ > + set -- $($SED -e > "/^$bre\(\|\.patch\|\.diff\?\)\(\|\.gz\|\.bz2\|\.xz\|\.lzma\)\([ > "$'\t'"]\|$\)/!d" \ > -e 's/[ '$'\t''].*//' $SERIES) > if [ $# -eq 1 ] > then > @@ -657,7 +659,7 @@ files_in_patch() > then > find "$path" -type f \ > -a ! -path "$(quote_glob "$path")/.timestamp" | > - sed -e "s/$(quote_bre "$path")\///" > + $SED -e "s/$(quote_bre "$path")\///" > fi > } > > @@ -918,8 +920,8 @@ next_filename() > { > local patch=$1 base num > base=$(echo "$patch" \ > - | sed -r -e 's:(\.gz|\.bz2|\.xz|\.lzma)$::' -e > 's:(\.diff?|\.patch)$::') > - num=$(echo "$base" | sed -nre 's:.*-([0-9]+)$:\1:'p) > + | $SED -r -e 's:(\.gz|\.bz2|\.xz|\.lzma)$::' -e > 's:(\.diff?|\.patch)$::') > + num=$(echo "$base" | $SED -nre 's:.*-([0-9]+)$:\1:'p) > [ -n "$num" ] || num=1 > echo "${base%-$num}-$((num+1))${patch#$base}" > } > diff --git a/quilt/setup.in b/quilt/setup.in > index 0930a89..fa4ad44 100644 > --- a/quilt/setup.in > +++ b/quilt/setup.in > @@ -6,6 +6,8 @@ > # > # See the COPYING and AUTHORS files for more details. > > +SED=@SED@ > + > # Read in library functions > if [ "$(type -t patch_file_name)" != function ] > then > @@ -75,12 +77,12 @@ create_symlink() { > fi > > set -- "$(echo "$PWD/$target" | \ > - sed -r -e 's://:/:g' \ > + $SED -r -e 's://:/:g' \ > -e ':again' \ > -e 's:/[^/]+/\.\.(/|$):\1:g' \ > -e 'tagain')" \ > "$(echo "$PWD/$link" | \ > - sed -r -e 's://:/:g' \ > + $SED -r -e 's://:/:g' \ > -e ':again' \ > -e 's:/[^/]+/\.\.(/|$):\1:g' \ > -e 'tagain')" > @@ -88,7 +90,7 @@ create_symlink() { > do > set -- "${1#*/}" "${2#*/}" > done > - up=$(echo "${2%/*}" | sed -re 's:[^/]+:..:g') > + up=$(echo "${2%/*}" | $SED -re 's:[^/]+:..:g') > set -- "${up:+$up/}$1" > set -- "${1%/}" > ln -s "${1:-.}" "$link" > -- > 1.8.4.5 > > > _______________________________________________ > Quilt-dev mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/quilt-dev -- Data and source codes are to scientific experimental studies what proofs are to mathematics. They thus need to be reviewed and shared. _______________________________________________ Quilt-dev mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/quilt-dev
