diff --git a/rocket-config.SlackBuild b/rocket-config.SlackBuild index 980a55e..46c6c39 100755 --- a/rocket-config.SlackBuild +++ b/rocket-config.SlackBuild @@ -22,6 +22,13 @@ cat $CWD/readme.txt > $PKG/usr/doc/$PKGNAM-$VERSION/readme.txt # Install all config files find $CWD/root -type f ! -name '*.orig' -printf '%P\n' | while read config; do + case "$config" in + usr/libexec/slackpkg/functions.d/*) + echo Installing /$config + install -Dm644 $CWD/root/$config $PKG/$config + continue + esac + echo Installing /$config install -Dm644 $CWD/root/$config $PKG/$config.new diff --git a/root/usr/libexec/slackpkg/functions.d/post-functions.sh b/root/usr/libexec/slackpkg/functions.d/post-functions.sh deleted file mode 100644 index ca1a721..0000000 --- a/root/usr/libexec/slackpkg/functions.d/post-functions.sh +++ /dev/null @@ -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 -} diff --git a/root/usr/libexec/slackpkg/functions.d/post-functions.sh.orig b/root/usr/libexec/slackpkg/functions.d/post-functions.sh.orig deleted file mode 100644 index 2eb023b..0000000 --- a/root/usr/libexec/slackpkg/functions.d/post-functions.sh.orig +++ /dev/null @@ -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 -} diff --git a/root/usr/libexec/slackpkg/functions.d/~looknew.sh b/root/usr/libexec/slackpkg/functions.d/~looknew.sh new file mode 100644 index 0000000..52fb313 --- /dev/null +++ b/root/usr/libexec/slackpkg/functions.d/~looknew.sh @@ -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 +}