File: shell.in

package info (click to toggle)
quilt 0.65-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,980 kB
  • sloc: sh: 5,898; perl: 1,256; lisp: 492; makefile: 430
file content (67 lines) | stat: -rw-r--r-- 1,762 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#! @BASH@

#  This script is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 2 as
#  published by the Free Software Foundation.
#
#  See the COPYING and AUTHORS files for more details.

# Read in library functions
if [ "$(type -t patch_file_name)" != function ]
then
        if ! [ -r $QUILT_DIR/scripts/patchfns ]
        then
                echo "Cannot read library $QUILT_DIR/scripts/patchfns" >&2
                exit 1
        fi
        . $QUILT_DIR/scripts/patchfns
fi

if [ "$1" = "-h" ]; then
    printf $"Usage: quilt shell [command]\n"
    printf $"
Launch a shell in a duplicate environment. After exiting the shell, any
modifications made in this environment are applied to the topmost patch.

If a command is specified, it is executed instead of launching the shell.
"
    exit 0
fi

tmpdir=$(mktemp -d /tmp/quilt-XXXXXX)

cp -a . $tmpdir

(
    cd $tmpdir/"$SUBDIR"
    if [ $# -gt 0 ]; then
        exec "$@"
    else
        $SHELL
    fi
)

# Find new directories
( cd $tmpdir; find . -type d ! -path ./"$QUILT_PC"/\* ! -path ./"$QUILT_PATCHES"/\* ) | while read dir; do
    if [ ! -d "$dir" ]; then
        mkdir -p "$dir"
    fi
done

# New and modified files
( cd $tmpdir; find . -type f ! -path ./"$QUILT_PC"/\* ! -path ./"$QUILT_PATCHES"/\* ) | while read file; do
    if [ ! -f "$file" ] || ! diff -q "$file" $tmpdir/"$file" > /dev/null 2>&1; then
        quilt_command add "$file"
        cp -a $tmpdir/"$file" "$file"
    fi
done

# Removed files
( find . -type f ! -path ./"$QUILT_PC"/\* ! -path ./"$QUILT_PATCHES"/\* ) | while read file; do
    if [ ! -f $tmpdir/"$file" ]; then
        quilt_command add "$file"
        rm -f "$file"
    fi
done

rm -rf $tmpdir