prtrej: initial import
This commit is contained in:
parent
ec3c8f87ab
commit
fe29385053
@ -1,5 +1,8 @@
|
||||
1.2 -> 1.2.1
|
||||
------------
|
||||
- oldfiles: add the option -l to show outdated build logs
|
||||
- prtrej: clean up /var/lib/pkg/rejected in case a package was uninstalled
|
||||
before merging its conflicting files
|
||||
- prtsweep, prtwash: rewritten in perl
|
||||
- prtcheck: test that all sources are signed
|
||||
- pkgfoster: save the list of adoptees in ~/.config rather than cluttering $HOME;
|
||||
|
96
scripts/prtrej
Executable file
96
scripts/prtrej
Executable file
@ -0,0 +1,96 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# $Id: prtrej,v 1.4 2004/02/06 11:30:00 opel Exp $
|
||||
# (c) 2003,2004 by Martin Opel <mo@obbl-net.de>
|
||||
# (c) 2002 by Markus Ackermann <maol@symlink.ch>
|
||||
#
|
||||
# may be redistributed and modified under the terms of the GPL
|
||||
# only usable with CRUX Linux, version 0.9.2 or higher
|
||||
#
|
||||
# USE AT YOUR OWN RISK
|
||||
#
|
||||
# Interactive tool to ask user what he/she wants to do with a rejected file
|
||||
# in /var/lib/pkg/rejected
|
||||
# Requires opt/dialog to be installed
|
||||
# All identical files are removed without a user's interaction
|
||||
# TODO: respect SYSROOT?
|
||||
|
||||
TMP=/tmp/rejdiff
|
||||
REJ=/var/lib/pkg/rejected
|
||||
|
||||
cleanup() {
|
||||
echo "Removed $count unneeded files"
|
||||
rm -f $TMP
|
||||
}
|
||||
|
||||
interrupted() {
|
||||
echo "Interrupted..."
|
||||
cleanup
|
||||
exit 1
|
||||
}
|
||||
|
||||
trap "interrupted" SIGHUP SIGINT SIGQUIT SIGTERM
|
||||
|
||||
count=0
|
||||
|
||||
if [ ! -d "$REJ" ]; then
|
||||
echo "$REJ not found. Exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mapfile -t REJECTS < <(find $REJ -type f)
|
||||
# Why not loop over the output of find?
|
||||
# bash splits on whitespace, so by putting the newline-separated results
|
||||
# of find into an array, we can use double-quotes to ensure any file with
|
||||
# space in its name is not misinterpreted as multiple files.
|
||||
# Redefining IFS is another option, but prone to unwanted side-effects.
|
||||
|
||||
for reject in "${REJECTS[@]}"; do
|
||||
real="/${reject#*rejected/}"
|
||||
#
|
||||
# Insert a test to ensure that diff is given two valid args.
|
||||
#
|
||||
# Nonexistent $real suggests that $reject is no longer needed.
|
||||
# Forgot to merge it, and then later uninstalled the package, perhaps?
|
||||
# If this circumstance is common and $REJ becomes cluttered too easily,
|
||||
# then someone might ask for another side-effect of prt-get remove.
|
||||
# This cleanup could be incorporated directly into pkgrm, but until that
|
||||
# happens we might as well do the cleanup here.
|
||||
#
|
||||
if [ ! -e "$real" ] || diff "$real" "$reject" >/dev/null; then
|
||||
rm "$reject"
|
||||
count=$(( count + 1 ))
|
||||
else
|
||||
diff -u "$real" "$reject" &> $TMP
|
||||
|
||||
ACTION=$(dialog --no-shadow --stdout \
|
||||
--title "diff $real $reject" \
|
||||
--textbox $TMP -1 -1 \
|
||||
--menu "Make your selection:" 11 50 4 \
|
||||
KEEP "Keep existing file." \
|
||||
INST "Overwrite with file from package." \
|
||||
EXIT "Exit immediately." \
|
||||
" " "Do nothing now.")
|
||||
|
||||
case "$ACTION" in
|
||||
"KEEP")
|
||||
echo "Keeping old file, removing $reject."
|
||||
rm $reject
|
||||
;;
|
||||
"INST")
|
||||
echo "Installing new file, overwriting $real with $reject."
|
||||
mv $reject $real
|
||||
;;
|
||||
"EXIT")
|
||||
echo "Exiting..."
|
||||
cleanup
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Leaving $real and $reject untouched for now."
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
done
|
||||
|
||||
cleanup
|
Loading…
x
Reference in New Issue
Block a user