mid-kid
7 years ago
4 changed files with 104 additions and 451 deletions
@ -1,230 +0,0 @@ |
|||||
showdiff() { |
|
||||
BASENAME=$(basename $i .new) |
|
||||
FILEPATH=$(dirname $i) |
|
||||
FULLNAME="${FILEPATH}/${BASENAME}" |
|
||||
|
|
||||
if [ -e ${FULLNAME} ]; then |
|
||||
diff -u ${FULLNAME} ${FULLNAME}.new | $MORECMD |
|
||||
else |
|
||||
echo "file $FULLNAME doesn't exist" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
showmenu() { |
|
||||
echo -e "$1 - \c" |
|
||||
tput sc |
|
||||
shift |
|
||||
while [ $# -gt 0 ]; do |
|
||||
echo -e "$1" |
|
||||
tput rc |
|
||||
shift |
|
||||
done |
|
||||
} |
|
||||
|
|
||||
mergenew() { |
|
||||
BASENAME=$(basename $i .new) |
|
||||
FILEPATH=$(dirname $i) |
|
||||
FULLNAME="${FILEPATH}/${BASENAME}" |
|
||||
|
|
||||
if [ -e "${FULLNAME}" ]; then |
|
||||
# in media res. we do the merging right away, but we later allow the user to redo it, if not satisfied with the results. |
|
||||
rm -f "${FULLNAME}.smerge" |
|
||||
echo "Enter '?' in the prompt (%) to display help." |
|
||||
cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file |
|
||||
sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new" |
|
||||
|
|
||||
GOEXM=0 |
|
||||
while [ $GOEXM -eq 0 ]; do |
|
||||
showmenu $i "(E)dit the merged file" "(I)nstall the merged file" "View a diff between the merged and the (N)ew file" "View a diff between the (O)ld and the merged file" "(R)edo the merge" "(V)iew the merged file" "(B)ack to previous menu, and delete the merged file" |
|
||||
read ANSWER |
|
||||
case "$ANSWER" in |
|
||||
E|e) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
$EDITCMD "${FULLNAME}.smerge" |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
I|i) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
if [ -e "${FULLNAME}" ]; then |
|
||||
mv "${FULLNAME}" "${FULLNAME}.orig" |
|
||||
fi |
|
||||
mv "${FULLNAME}.smerge" "${FULLNAME}" |
|
||||
rm -f "${FULLNAME}.new" |
|
||||
GOEXM=1 |
|
||||
GOEX=1 |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
N|n) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
diff -u "${FULLNAME}.smerge" "${FULLNAME}.new" | $MORECMD |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
O|o) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
diff -u "${FULLNAME}" "${FULLNAME}.smerge" | $MORECMD |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
R|r) |
|
||||
rm -f "${FULLNAME}.smerge" |
|
||||
echo "Enter '?' in the prompt (%) to display help." |
|
||||
cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file |
|
||||
sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new" |
|
||||
;; |
|
||||
V|v) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
$MORECMD "${FULLNAME}.smerge" |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
B|b) |
|
||||
rm -f "${FULLNAME}.smerge" |
|
||||
GOEXM=1 |
|
||||
;; |
|
||||
esac |
|
||||
done |
|
||||
else |
|
||||
echo "file $FULLNAME doesn't exist" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
overold() { |
|
||||
BASENAME=$(basename $i .new) |
|
||||
FILEPATH=$(dirname $i) |
|
||||
FULLNAME="${FILEPATH}/${BASENAME}" |
|
||||
|
|
||||
if [ -e ${FULLNAME} ]; then |
|
||||
mv ${FULLNAME} ${FULLNAME}.orig |
|
||||
fi |
|
||||
mv ${FULLNAME}.new ${FULLNAME} |
|
||||
} |
|
||||
|
|
||||
removeold() { |
|
||||
rm $i |
|
||||
} |
|
||||
|
|
||||
looknew() { |
|
||||
|
|
||||
# with ONLY_NEW_DOTNEW set, slackpkg will search only for |
|
||||
# .new files installed in actual slackpkg's execution |
|
||||
if [ "$ONLY_NEW_DOTNEW" = "on" ]; then |
|
||||
ONLY_NEW_DOTNEW="-cnewer $TMPDIR/timestamp" |
|
||||
else |
|
||||
ONLY_NEW_DOTNEW="" |
|
||||
fi |
|
||||
|
|
||||
echo -e "\nSearching for NEW configuration files" |
|
||||
FILES="" |
|
||||
|
|
||||
find /var/log/packages -maxdepth 1 -type f ${ONLY_NEW_DOTNEW} | xargs sed -n -e '/^FILE LIST:$/,/^$/p' | fgrep -xv 'FILE LIST:' > $TMPDIR/allfiles |
|
||||
|
|
||||
local IFS=$'\n' |
|
||||
for f in $(grep '\.new$' $TMPDIR/allfiles | sed -e 's/\.new$//'); do |
|
||||
x=$f.new |
|
||||
if [ -f "/$f" -a -f "/$x" ]; then |
|
||||
if ! fgrep -x "$f" $TMPDIR/allfiles 1> /dev/null 2>&1; then |
|
||||
FILES+="/$x |
|
||||
" |
|
||||
fi |
|
||||
fi |
|
||||
done |
|
||||
|
|
||||
if [ "$FILES" != "" ]; then |
|
||||
echo -e "\n\ |
|
||||
Some packages had new configuration files installed. |
|
||||
You have four choices: |
|
||||
|
|
||||
(K)eep the old files and consider .new files later |
|
||||
|
|
||||
(O)verwrite all old files with the new ones. The |
|
||||
old files will be stored with the suffix .orig |
|
||||
|
|
||||
(R)emove all .new files |
|
||||
|
|
||||
(P)rompt K, O, R selection for every single file |
|
||||
|
|
||||
What do you want (K/O/R/P)?" |
|
||||
answer |
|
||||
case $ANSWER in |
|
||||
K|k) |
|
||||
break |
|
||||
;; |
|
||||
O|o) |
|
||||
for i in $FILES; do |
|
||||
overold $i |
|
||||
done |
|
||||
break |
|
||||
;; |
|
||||
R|r) |
|
||||
for i in $FILES; do |
|
||||
removeold $i |
|
||||
done |
|
||||
break |
|
||||
;; |
|
||||
P|p) |
|
||||
echo "Select what you want file-by-file" |
|
||||
for i in $FILES; do |
|
||||
GOEX=0 |
|
||||
while [ $GOEX -eq 0 ]; do |
|
||||
echo |
|
||||
showmenu $i "(K)eep" "(O)verwrite" "(R)emove" "(D)iff" "(M)erge" |
|
||||
read ANSWER |
|
||||
case $ANSWER in |
|
||||
O|o) |
|
||||
overold $i |
|
||||
GOEX=1 |
|
||||
;; |
|
||||
R|r) |
|
||||
removeold $i |
|
||||
GOEX=1 |
|
||||
;; |
|
||||
D|d) |
|
||||
showdiff $1 |
|
||||
;; |
|
||||
M|m) |
|
||||
mergenew $1 |
|
||||
;; |
|
||||
K|k|*) |
|
||||
GOEX=1 |
|
||||
;; |
|
||||
esac |
|
||||
done |
|
||||
done |
|
||||
break |
|
||||
;; |
|
||||
*) |
|
||||
echo "OK! Your choice is nothing! slackpkg will Keep the old files for you to deal with later" |
|
||||
;; |
|
||||
esac |
|
||||
else |
|
||||
echo -e "\t\tNo .new files found." |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
lookkernel() { |
|
||||
NEWKERNELMD5=$(md5sum /boot/vmlinuz 2>/dev/null) |
|
||||
if [ "$KERNELMD5" != "$NEWKERNELMD5" ]; then |
|
||||
if [ -x /sbin/lilo ]; then |
|
||||
echo -e "\n |
|
||||
Your kernel image was updated. We highly recommend you run: lilo |
|
||||
Do you want slackpkg to run lilo now? (Y/n)" |
|
||||
answer |
|
||||
if [ "$ANSWER" != "n" ] && [ "$ANSWER" != "N" ]; then |
|
||||
/sbin/lilo |
|
||||
fi |
|
||||
else |
|
||||
echo -e "\n |
|
||||
Your kernel image was updated and lilo is not found on your system. |
|
||||
You may need to adjust your boot manager(like GRUB) to boot appropriate |
|
||||
kernel." |
|
||||
fi |
|
||||
fi |
|
||||
} |
|
@ -1,221 +0,0 @@ |
|||||
showdiff() { |
|
||||
BASENAME=$(basename $i .new) |
|
||||
FILEPATH=$(dirname $i) |
|
||||
FULLNAME="${FILEPATH}/${BASENAME}" |
|
||||
|
|
||||
if [ -e ${FULLNAME} ]; then |
|
||||
diff -u ${FULLNAME} ${FULLNAME}.new | $MORECMD |
|
||||
else |
|
||||
echo "file $FULLNAME doesn't exist" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
showmenu() { |
|
||||
echo -e "$1 - \c" |
|
||||
tput sc |
|
||||
shift |
|
||||
while [ $# -gt 0 ]; do |
|
||||
echo -e "$1" |
|
||||
tput rc |
|
||||
shift |
|
||||
done |
|
||||
} |
|
||||
|
|
||||
mergenew() { |
|
||||
BASENAME=$(basename $i .new) |
|
||||
FILEPATH=$(dirname $i) |
|
||||
FULLNAME="${FILEPATH}/${BASENAME}" |
|
||||
|
|
||||
if [ -e "${FULLNAME}" ]; then |
|
||||
# in media res. we do the merging right away, but we later allow the user to redo it, if not satisfied with the results. |
|
||||
rm -f "${FULLNAME}.smerge" |
|
||||
echo "Enter '?' in the prompt (%) to display help." |
|
||||
cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file |
|
||||
sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new" |
|
||||
|
|
||||
GOEXM=0 |
|
||||
while [ $GOEXM -eq 0 ]; do |
|
||||
showmenu $i "(E)dit the merged file" "(I)nstall the merged file" "View a diff between the merged and the (N)ew file" "View a diff between the (O)ld and the merged file" "(R)edo the merge" "(V)iew the merged file" "(B)ack to previous menu, and delete the merged file" |
|
||||
read ANSWER |
|
||||
case "$ANSWER" in |
|
||||
E|e) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
$EDITCMD "${FULLNAME}.smerge" |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
I|i) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
if [ -e "${FULLNAME}" ]; then |
|
||||
mv "${FULLNAME}" "${FULLNAME}.orig" |
|
||||
fi |
|
||||
mv "${FULLNAME}.smerge" "${FULLNAME}" |
|
||||
rm -f "${FULLNAME}.new" |
|
||||
GOEXM=1 |
|
||||
GOEX=1 |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
N|n) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
diff -u "${FULLNAME}.smerge" "${FULLNAME}.new" | $MORECMD |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
O|o) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
diff -u "${FULLNAME}" "${FULLNAME}.smerge" | $MORECMD |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
R|r) |
|
||||
rm -f "${FULLNAME}.smerge" |
|
||||
echo "Enter '?' in the prompt (%) to display help." |
|
||||
cp -p "${FULLNAME}.new" "${FULLNAME}.smerge" # <- this is so that the installed merged file will have the same permissions as the .new file |
|
||||
sdiff -s -o "${FULLNAME}.smerge" "${FULLNAME}" "${FULLNAME}.new" |
|
||||
;; |
|
||||
V|v) |
|
||||
if [ -f "${FULLNAME}.smerge" ]; then |
|
||||
$MORECMD "${FULLNAME}.smerge" |
|
||||
else |
|
||||
echo -e "Nothing was merged yet..." |
|
||||
fi |
|
||||
;; |
|
||||
B|b) |
|
||||
rm -f "${FULLNAME}.smerge" |
|
||||
GOEXM=1 |
|
||||
;; |
|
||||
esac |
|
||||
done |
|
||||
else |
|
||||
echo "file $FULLNAME doesn't exist" |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
overold() { |
|
||||
BASENAME=$(basename $i .new) |
|
||||
FILEPATH=$(dirname $i) |
|
||||
FULLNAME="${FILEPATH}/${BASENAME}" |
|
||||
|
|
||||
if [ -e ${FULLNAME} ]; then |
|
||||
mv ${FULLNAME} ${FULLNAME}.orig |
|
||||
fi |
|
||||
mv ${FULLNAME}.new ${FULLNAME} |
|
||||
} |
|
||||
|
|
||||
removeold() { |
|
||||
rm $i |
|
||||
} |
|
||||
|
|
||||
looknew() { |
|
||||
|
|
||||
# with ONLY_NEW_DOTNEW set, slackpkg will search only for |
|
||||
# .new files installed in actual slackpkg's execution |
|
||||
if [ "$ONLY_NEW_DOTNEW" = "on" ]; then |
|
||||
ONLY_NEW_DOTNEW="-cnewer $TMPDIR/timestamp" |
|
||||
else |
|
||||
ONLY_NEW_DOTNEW="" |
|
||||
fi |
|
||||
|
|
||||
echo -e "\nSearching for NEW configuration files" |
|
||||
FILES=$(find /etc -name "*.new" ${ONLY_NEW_DOTNEW} \ |
|
||||
-not -name "rc.inet1.conf.new" \ |
|
||||
-not -name "group.new" \ |
|
||||
-not -name "passwd.new" \ |
|
||||
-not -name "shadow.new" \ |
|
||||
-not -name "gshadow.new" 2>/dev/null) |
|
||||
if [ "$FILES" != "" ]; then |
|
||||
echo -e "\n\ |
|
||||
Some packages had new configuration files installed. |
|
||||
You have four choices: |
|
||||
|
|
||||
(K)eep the old files and consider .new files later |
|
||||
|
|
||||
(O)verwrite all old files with the new ones. The |
|
||||
old files will be stored with the suffix .orig |
|
||||
|
|
||||
(R)emove all .new files |
|
||||
|
|
||||
(P)rompt K, O, R selection for every single file |
|
||||
|
|
||||
What do you want (K/O/R/P)?" |
|
||||
answer |
|
||||
case $ANSWER in |
|
||||
K|k) |
|
||||
break |
|
||||
;; |
|
||||
O|o) |
|
||||
for i in $FILES; do |
|
||||
overold $i |
|
||||
done |
|
||||
break |
|
||||
;; |
|
||||
R|r) |
|
||||
for i in $FILES; do |
|
||||
removeold $i |
|
||||
done |
|
||||
break |
|
||||
;; |
|
||||
P|p) |
|
||||
echo "Select what you want file-by-file" |
|
||||
for i in $FILES; do |
|
||||
GOEX=0 |
|
||||
while [ $GOEX -eq 0 ]; do |
|
||||
echo |
|
||||
showmenu $i "(K)eep" "(O)verwrite" "(R)emove" "(D)iff" "(M)erge" |
|
||||
read ANSWER |
|
||||
case $ANSWER in |
|
||||
O|o) |
|
||||
overold $i |
|
||||
GOEX=1 |
|
||||
;; |
|
||||
R|r) |
|
||||
removeold $i |
|
||||
GOEX=1 |
|
||||
;; |
|
||||
D|d) |
|
||||
showdiff $1 |
|
||||
;; |
|
||||
M|m) |
|
||||
mergenew $1 |
|
||||
;; |
|
||||
K|k|*) |
|
||||
GOEX=1 |
|
||||
;; |
|
||||
esac |
|
||||
done |
|
||||
done |
|
||||
break |
|
||||
;; |
|
||||
*) |
|
||||
echo "OK! Your choice is nothing! slackpkg will Keep the old files for you to deal with later" |
|
||||
;; |
|
||||
esac |
|
||||
else |
|
||||
echo -e "\t\tNo .new files found." |
|
||||
fi |
|
||||
} |
|
||||
|
|
||||
lookkernel() { |
|
||||
NEWKERNELMD5=$(md5sum /boot/vmlinuz 2>/dev/null) |
|
||||
if [ "$KERNELMD5" != "$NEWKERNELMD5" ]; then |
|
||||
if [ -x /sbin/lilo ]; then |
|
||||
echo -e "\n |
|
||||
Your kernel image was updated. We highly recommend you run: lilo |
|
||||
Do you want slackpkg to run lilo now? (Y/n)" |
|
||||
answer |
|
||||
if [ "$ANSWER" != "n" ] && [ "$ANSWER" != "N" ]; then |
|
||||
/sbin/lilo |
|
||||
fi |
|
||||
else |
|
||||
echo -e "\n |
|
||||
Your kernel image was updated and lilo is not found on your system. |
|
||||
You may need to adjust your boot manager(like GRUB) to boot appropriate |
|
||||
kernel." |
|
||||
fi |
|
||||
fi |
|
||||
} |
|
@ -0,0 +1,97 @@ |
|||||
|
looknew() { |
||||
|
|
||||
|
# with ONLY_NEW_DOTNEW set, slackpkg will search only for |
||||
|
# .new files installed in actual slackpkg's execution |
||||
|
if [ "$ONLY_NEW_DOTNEW" = "on" ]; then |
||||
|
ONLY_NEW_DOTNEW="-cnewer $TMPDIR/timestamp" |
||||
|
else |
||||
|
ONLY_NEW_DOTNEW="" |
||||
|
fi |
||||
|
|
||||
|
echo -e "\nSearching for NEW configuration files" |
||||
|
FILES="" |
||||
|
|
||||
|
find /var/log/packages -maxdepth 1 -type f ${ONLY_NEW_DOTNEW} | xargs sed -n -e '/^FILE LIST:$/,/^$/p' | fgrep -xv 'FILE LIST:' > $TMPDIR/allfiles |
||||
|
|
||||
|
local IFS=$'\n' |
||||
|
for f in $(grep '\.new$' $TMPDIR/allfiles | sed -e 's/\.new$//'); do |
||||
|
x=$f.new |
||||
|
if [ -f "/$f" -a -f "/$x" ]; then |
||||
|
if ! fgrep -x "$f" $TMPDIR/allfiles 1> /dev/null 2>&1; then |
||||
|
FILES+="/$x |
||||
|
" |
||||
|
fi |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
if [ "$FILES" != "" ]; then |
||||
|
echo -e "\n\ |
||||
|
Some packages had new configuration files installed. |
||||
|
You have four choices: |
||||
|
|
||||
|
(K)eep the old files and consider .new files later |
||||
|
|
||||
|
(O)verwrite all old files with the new ones. The |
||||
|
old files will be stored with the suffix .orig |
||||
|
|
||||
|
(R)emove all .new files |
||||
|
|
||||
|
(P)rompt K, O, R selection for every single file |
||||
|
|
||||
|
What do you want (K/O/R/P)?" |
||||
|
answer |
||||
|
case $ANSWER in |
||||
|
K|k) |
||||
|
break |
||||
|
;; |
||||
|
O|o) |
||||
|
for i in $FILES; do |
||||
|
overold $i |
||||
|
done |
||||
|
break |
||||
|
;; |
||||
|
R|r) |
||||
|
for i in $FILES; do |
||||
|
removeold $i |
||||
|
done |
||||
|
break |
||||
|
;; |
||||
|
P|p) |
||||
|
echo "Select what you want file-by-file" |
||||
|
for i in $FILES; do |
||||
|
GOEX=0 |
||||
|
while [ $GOEX -eq 0 ]; do |
||||
|
echo |
||||
|
showmenu $i "(K)eep" "(O)verwrite" "(R)emove" "(D)iff" "(M)erge" |
||||
|
read ANSWER |
||||
|
case $ANSWER in |
||||
|
O|o) |
||||
|
overold $i |
||||
|
GOEX=1 |
||||
|
;; |
||||
|
R|r) |
||||
|
removeold $i |
||||
|
GOEX=1 |
||||
|
;; |
||||
|
D|d) |
||||
|
showdiff $1 |
||||
|
;; |
||||
|
M|m) |
||||
|
mergenew $1 |
||||
|
;; |
||||
|
K|k|*) |
||||
|
GOEX=1 |
||||
|
;; |
||||
|
esac |
||||
|
done |
||||
|
done |
||||
|
break |
||||
|
;; |
||||
|
*) |
||||
|
echo "OK! Your choice is nothing! slackpkg will Keep the old files for you to deal with later" |
||||
|
;; |
||||
|
esac |
||||
|
else |
||||
|
echo -e "\t\tNo .new files found." |
||||
|
fi |
||||
|
} |
Loading…
Reference in new issue