quilt-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Quilt-dev] [PATCH] Fix import of relative patches


From: Jean Delvare
Subject: [Quilt-dev] [PATCH] Fix import of relative patches
Date: Mon, 30 Jan 2012 13:47:47 +0100
User-agent: KMail/1.12.4 (Linux/2.6.32.49-0.3-pae; KDE/4.3.5; i686; ; )

Fix import of relative patches.

This closes bug #35244.
---
 quilt/import.in           |    8 ++++----
 quilt/scripts/patchfns.in |   17 ++++++++++++++---
 test/import.test          |    9 +++++++++
 3 files changed, 27 insertions(+), 7 deletions(-)

--- a/test/import.test
+++ b/test/import.test
@@ -246,3 +246,12 @@
        $ cat patches/series
        > patch1.diff
        > patchR.diff
+
+# Also test importing when in a subdirectory
+       $ touch empty.patch
+       $ cd t
+       $ touch empty2.patch
+       $ quilt import ../empty.patch
+       > Importing patch ../empty.patch (stored as ../patches/empty.patch)
+       $ quilt import %{PWD}/empty2.patch
+       > Importing patch %{PWD}/empty2.patch (stored as 
../patches/empty2.patch)
--- a/quilt/import.in
+++ b/quilt/import.in
@@ -152,16 +152,16 @@ then
 fi
 
 before=$(patch_after "$(top_patch)")
-for patch_file in "$@"
+for orig_patch_file in "$@"
 do
        if [ -n "$opt_patch" ]
        then
                patch=$opt_patch
        else
-               patch=${patch_file##*/}
+               patch=${orig_patch_file##*/}
        fi
 
-       patch_file=$(find_patch_file "$patch_file") || exit 1
+       patch_file=$(find_patch_file "$orig_patch_file") || exit 1
        merged_patch_file="$patch_file"
 
        if is_applied $patch
@@ -199,7 +199,7 @@ do
                printf $"Importing patch %s\n" "$(print_patch $patch)"
        else
                printf $"Importing patch %s (stored as %s)\n" \
-                      "$patch_file" \
+                      "$orig_patch_file" \
                       "$(print_patch $patch)"
 
                mkdir -p "${dest%/*}"
--- a/quilt/scripts/patchfns.in
+++ b/quilt/scripts/patchfns.in
@@ -641,10 +641,21 @@ find_patch_file()
 {
        local name="$1"
 
-       if [ -r "$name" ]
+       if [ ${name:0:1} = / ]
        then
-               echo "$name"
-               return
+               # Patch has absolute path
+               if [ -r "$name" ]
+               then
+                       echo "$name"
+                       return
+               fi
+       else
+               # Patch has a relative path
+               if [ -r "$SUBDIR$name" ]
+               then
+                       echo "$SUBDIR$name"
+                       return
+               fi
        fi
 
        local patch

-- 
Jean Delvare
Suse L3



reply via email to

[Prev in Thread] Current Thread [Next in Thread]