- (find / -xdev -print -type d -print;cat $t/rpm-qal)|sort|uniq -u
- sed 's#^[^/]*##' <$t/rpm-Va
- touch $t/patch.list
- for orig in `find / -xdev -name "*-orig"`;do
- base="`echo $orig|sed 's/-orig$//'`"
- if [ ! -f "$base" ];then continue;fi
- (set +e;diff -u "$orig" "$base" >"$base".patch)
- echo "$orig"
- echo "$base"
- echo "$base".patch|tee -a $t/patch.list
- done
- )|grep -v '^\(/boot/\|/dev/\|/etc/rc[.]d/rc[0-9][.]d/\|/lib/modules/[^/]*/modules[.]\|/root/\|/tmp/\|/usr/lib/perl5/\|/usr/src/redhat/\|/var/cache/\|/var/lib/rpm/\|/var/log/\|/var/run/\|/var/spool/\|/var/lock/\|/usr/share/ntop/\|/usr/lib/locale/locale-archive\|/var/lib/slocate/slocate.db\|/usr/share/man/\|/etc/aliases.db\|/var/tmp/\|/etc/prelink.cache\|/etc/sgml/\|/home/\|/usr/include/tags\|/usr/lib/IPTables-IPv4/\|/usr/lib/python2.3/\|/usr/lib/rpmdb\|/usr/share/texmf/\|/usr/share/yum-cli\|/var/db/nscd/\)' \
- |grep -v '^(contains no files)$' \
- |(echo $t/rpm-qa;cat) \
- |sort -u|sed 's#^/##'|(cd /;set +e;xargs tar cf -)
-cat $t/patch.list|xargs rm -f
+ (find / -xdev -print -type d -print;cat $t/tmp/rpm-qal)|sort|uniq -u
+ cat $t/tmp/rpm-Va
+ while read -r file;do
+ # cpio(1) needs "./bin/bash" pattern.
+ rpm="$(for dir in /var/cache/yum /usr/src/redhat/RPMS /root/arch;do
+ find $dir -name "`rpm -qf "$file"`.*.rpm"
+ done|grep -v '[.]src[.]rpm$')"
+ echo "$rpm"|grep -qv ' '
+ rpm2cpio "$rpm"|cpio -id --no-absolute-filenames ."$file"
+ mv ."$file" ."$file"-orig
+ (set +e;diff -u ."$file"-orig "$file" >."$file".patch)
+ echo ."$file"-orig
+ echo ."$file".patch
+ done <$t/tmp/rpm-Va
+ ) \
+ |grep --perl-regexp -v -e "^($pattern)" \
+ |(echo $t/tmp/rpm-qa;cat) \
+ |sort -u ###|sed 's#^/##'|(cd /;set +e;xargs tar cf -)
+echo SUCCESS