#!/bin/sh

# this should be faster than qpkg -nc -l
dumpall() {
    for d in /var/db/pkg/*; do
        for p in $d/*; do
            perl -ne 'print "$1\n" if /^obj (.*) (\S+) (\d+)\s*$/; 
                      print "$1\n" if /^sym (.*) -> .*$/;
                      print "$1\n" if /^dir (.*)$/;' < $p/CONTENTS
        done
    done
}

find / '(' -path /proc \
        -or -path /dev \
        -or -path /boot \
        -or -path /mnt \
        -or -path /tmp \
        -or -path /var/tmp \
        -or -path /root \
        -or -path /home \
        -or -path /lib/dev-state \
        -or -path /lib/modules \
        -or -path /usr/portage \
        -or -path /var/cache/edb \
        -or -path /var/db/pkg \
        ')' -prune -or -print \
| tail +2 | sort >/tmp/allfiles

dumpall \
| sort \
| uniq >/tmp/portagefiles

comm -2 -3 /tmp/allfiles /tmp/portagefiles

rm -f /tmp/allfiles /tmp/portagefiles
