diff options
-rw-r--r-- | contrib/import.diff | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/contrib/import.diff b/contrib/import.diff new file mode 100644 index 0000000..712e8fc --- /dev/null +++ b/contrib/import.diff @@ -0,0 +1,251 @@ +diff -Nur quilt-2003-02-01/quilt/import.in quilt-2003-02-02/quilt/import.in +--- quilt-2003-02-01/quilt/import.in 2003-01-31 17:25:06.000000000 +0100 ++++ quilt-2003-02-02/quilt/import.in 2003-02-02 01:47:59.000000000 +0100 +@@ -35,6 +35,10 @@ + -n patch + File name relative to patches/ to use. + ++-d {o|a|n} ++ Keep the old (o), all (a), or new (n) description. This option ++ must be specified if both patches include a description. ++ + -f Overwite/update existing patches. + + EOF +@@ -44,7 +48,7 @@ + fi + } + +-options=`getopt -o fn:p:h -- "$@"` ++options=`getopt -o d:fn:p:h -- "$@"` + + if [ $? -ne 0 ] + then +@@ -58,8 +62,7 @@ + case "$1" in + -n) + opt_patch=$(echo "$2" | +- sed -e 's/^'"$(quote_bre $P)"'patches\///' \ +- -e 's/^\.pc\///') ++ sed -e 's/^'"$(quote_bre $P)"'patches\///') + shift 2 ;; + -p) + opt_strip=$2 +@@ -67,6 +70,9 @@ + -f) + opt_force=1 + shift ;; ++ -d) ++ opt_desc=$2 ++ shift 2 ;; + -h) + usage -h ;; + --) +@@ -83,122 +89,119 @@ + usage + fi + +-[ -n "$opt_strip" ] && patch_args="-p$opt_strip" ++[ -n "$opt_strip" -a "$opt_strip" -ne 1 ] && patch_args="-p$opt_strip" ++ ++case "$opt_desc" in ++o) ++ keep_old_desc=1 ++ keep_new_desc=0 ;; ++a) ++ keep_old_desc=1 ++ keep_new_desc=1 ;; ++n) ++ keep_old_desc=0 ++ keep_new_desc=1 ;; ++'') ++ true ;; ++*) ++ echo "Invalid option -d$opt_desc" ++ exit 1 ++esac + +-if [ -n "$opt_patch" ] ++if ! [ -r "$input_file" ] + then +- patch=$(stripit "$opt_patch") +- patch_file="${P}patches/$opt_patch" +-else +- patch="$(stripit "$input_file")" +- if [ -n "$patch" ] +- then +- opt_patch="$patch.patch" +- else +- echo "Please use -n to specify a patch file name." +- exit 1 +- fi +- patch_file="${P}patches/$opt_patch" ++ echo "Cannot read from file $input_file" ++ exit 1 + fi + +-if echo "$patch_file" | grep -q -e $'[ \t]' ++if [ -z "$opt_patch" ] + then +- echo "Patch file name \"$patch_file\" contains whitespace." ++ opt_patch="$(stripit "$input_file")" ++fi ++ ++patch=$(stripit "$opt_patch") ++if [ -z "$patch" ] ++then ++ echo "Please use -n to specify a patch file name." + exit 1 + fi + ++patch_file="${P}patches/$opt_patch" ++case "$patch_file" in ++*' '*) ++ echo "Patch file name \"$patch_file\" contains whitespace." ++ exit 1 ;; ++esac ++ ++# If the specified is topmost, pop? + if is_applied $patch + then + echo "Patch $patch is applied." + exit 1 + fi + +-case "$input_file" in +-'') +- tmpfile=$(@MKTEMP@ /tmp/patch-scripts.XXXXXX) +- if ! cat > $tmpfile +- then +- echo "Cannot read from standard input." +- rm -f $tmpfile +- exit 1 +- fi +- input_file=$tmpfile ;; +-*.gz) +- tmpfile=$(@MKTEMP@ /tmp/patch-scripts.XXXXXX) +- if ! gzip -cd "$input_file" > $tmpfile +- then +- echo "Cannot decompress file $input_file" +- rm -f $tmpfile +- exit 1 +- fi +- input_file=$tmpfile ;; +-*.bz2) +- tmpfile=$(@MKTEMP@ /tmp/patch-scripts.XXXXXX) +- if ! bzip2 -cd "$input_file" > $tmpfile +- then +- echo "Cannot decompress file $input_file" +- rm -f $tmpfile +- exit +- fi +- input_file=$tmpfile ;; +-*) +- if ! [ -r "$input_file" ] +- then +- echo "Cannot read from file $input_file" +- exit 1 +- fi +-esac ++if [ -n "$patch_file" -a -z "$opt_force" ] ++then ++ echo "Patch $patch exists. Replace with -f." ++ exit 1 ++fi + +-if [ -e "$patch_file" ] ++if [ -e "$patch_file" -a "$keep_old_desc" != 0 ] + then +- if [ -z "$opt_force" ] +- then +- echo "Patch $patch exists. Replace with -f." +- exit 1 +- fi ++ old_desc=$(@MKTEMP@ /tmp/patch-scripts.XXXXXX) ++ cat_file "$patch_file" \ ++ | patch_description > $old_doc ++fi ++ ++if [ "$keep_new_desc" != 0 ] ++then ++ new_desc=$(@MKTEMP@ /tmp/patch-scripts.XXXXXX) ++ cat_file "$input_file" \ ++ | patch_description > $new_desc ++fi + +- if grep -q '^%patch$' "$patch_file" && +- ! grep -q '^%patch$' "$input_file" ++if [ -s $old_doc -a -s $new_desc -a -z "$opt_desc" ] && \ ++ ! diff -q $old_doc $new_desc >/dev/null ++then ++ echo "Documentation difference:" ++ diff -u $old_doc $new_desc ++ echo "Please use -d {o|a|n} to specify which documentation to keep." ++ exit 1 ++elif [ -z "$opt_desc" ] ++then ++ [ -s $old_doc ] ; keep_old_files=$? ++ [ -s $new_doc ] ; keep_new_files=$? ++fi ++ ++if [ $keep_old_desc = 1 ] ++then ++ mkdir -p $(dirname "$patch_file") ++ temp_patch=$(@MKTEMP@ "$patch_file.XXXXXX") ++ cat $old_doc >> $temp_patch ++ if [ $keep_new_desc = 1 ] + then +- echo "Updating %patch section of patch $patch" +- if ! @SCRIPTS@/parse-patch -u patch $patch_file < "$input_file" +- then +- echo "Failed to update %patch section of patch $patch" +- exit 1 +- fi ++ echo "---" >> $temp_patch ++ cat_file "$input_file" >> $temp_patch + else +- echo "Replacing patch $patch with new version" +- if ! cat "$input_file" > "$patch_file" +- then +- echo "Failed to replace patch $patch" +- exit 1 +- fi ++ # FIX: cat only the non-description part! ++ cat "$input_file" >> $temp_patch + fi ++ cat_to_file "$patch_file" < $temp_patch ++ rm -f $temp_patch + else +- echo "Importing patch $patch (stored as $patch_file)" +- if ! grep -q '^%patch$' "$input_file" +- then +- echo "%patch" >> "$patch_file" +- fi +- if ! cat "$input_file" >> "$patch_file" +- then +- echo "Failed to import patch $patch" +- exit 1 +- fi ++ # FIX: Make sure the file extensions (.gz|.bz2|) match, and use cp ++ # if possible... ++ cat_file "$input_file" \ ++ | cat_to_file "$patch_file" + fi + + rm -rf .pc/$patch + +-if ! patch_in_series $patch && +- ! insert_in_series $opt_patch "$patch_args" ++remove_from_series $patch ++if ! insert_in_series $opt_patch "$patch_args" + then + echo "Failed to insert $patch in file series." + fi +- +-if [ -n "$tmpfile" ] +-then +- rm -f $tmpfile +-fi + ### Local Variables: + ### mode: shell-script + ### End: |