Those who also update FreeBSD machines from source may know "make
delete-old", which offers to delete obsolete files and directories.

Here's the same as a shell script.

--------8<--------
#!/bin/sh

ARCH=$(uname -m)
BASE=-rOPENBSD_5_3_BASE

list=$(
        cd /usr/src/distrib/sets/lists &&
            cvs -Rq diff -u ${BASE} */mi */md.${ARCH} |
            sed -n 's:^-\./:/:p'
)

files=
libs=
dirs=
while read file; do
        if [ -f "$file" -o -h "$file" ]; then
                case $file in
                *.so.[0-9].[0-9] | \
                *.so.[0-9].[0-9][0-9] | \
                *.so.[0-9][0-9].[0-9] | \
                *.so.[0-9][0-9].[0-9][0-9] )
                        if [ -z "$libs" ]; then libs=$file
                        else libs="$libs
$file"
                        fi
                        ;;
                *)
                        if [ -z "$files" ]; then files=$file
                        else files="$files
$file"
                        fi
                        ;;
                esac
        elif [ -d "$file" ]; then
                if [ -z "$dirs" ]; then dirs=$file
                else dirs="$dirs
$file"
                fi
        fi
done <<EOF
$list
EOF

delete-old-files()
{
        echo ">>> Removing old files"
        if [ -n "$files" ]; then
                exec 3>&0
                while read file; do
                        rm -i "$file" <&3
                done <<-EOF
                $files
                EOF
        fi
}

delete-old-libs()
{
        echo ">>> Removing old libraries"
        if [ -n "$libs" ]; then
                exec 3>&0
                while read file; do
                        rm -i "$file" <&3
                done <<-EOF
                $libs
                EOF
        fi
}

delete-old-dirs()
{
        echo ">>> Removing old directories"
        if [ -n "$dirs" ]; then
                while read file; do
                        rmdir "$file" && echo "$file"
                done <<-EOF
                $dirs
                EOF
        fi
}

delete-old-files
delete-old-libs
delete-old-dirs
-------->8--------

-- 
Christian "naddy" Weisgerber                          [email protected]

Reply via email to