diff options
author | simon <simon@FreeBSD.org> | 2006-04-16 13:32:28 +0000 |
---|---|---|
committer | simon <simon@FreeBSD.org> | 2006-04-16 13:32:28 +0000 |
commit | 95e94156428fb9db22cee6360ce1e85b6baa0a25 (patch) | |
tree | d5f1c00bc6dd12ee853a1156897896954f9fe133 | |
parent | 45267d52fcdbd95c87afda00eb77dc66c93a4df9 (diff) | |
download | FreeBSD-ports-95e94156428fb9db22cee6360ce1e85b6baa0a25.zip FreeBSD-ports-95e94156428fb9db22cee6360ce1e85b6baa0a25.tar.gz |
Avoid unnecessary invocations of pkg_info by checking whether the
package is installed or not using a precalculated regex.
This speeds up "portaudit -a" with around a factor of 10.
The change is slightly modified from the one from the PR by using
pkg_info -aE instead of ls /var/db/pkg for determining installed
packages.
Submitted by: Kuang-che Wu <kcwu@csie.org>
PR: ports/92942
-rw-r--r-- | ports-mgmt/portaudit/Makefile | 2 | ||||
-rw-r--r-- | ports-mgmt/portaudit/files/portaudit-cmd.sh | 4 | ||||
-rw-r--r-- | security/portaudit/Makefile | 2 | ||||
-rw-r--r-- | security/portaudit/files/portaudit-cmd.sh | 4 |
4 files changed, 10 insertions, 2 deletions
diff --git a/ports-mgmt/portaudit/Makefile b/ports-mgmt/portaudit/Makefile index 914dd0c..8d585f4 100644 --- a/ports-mgmt/portaudit/Makefile +++ b/ports-mgmt/portaudit/Makefile @@ -6,7 +6,7 @@ # PORTNAME= portaudit -PORTVERSION= 0.5.10 +PORTVERSION= 0.5.11 CATEGORIES= security DISTFILES= diff --git a/ports-mgmt/portaudit/files/portaudit-cmd.sh b/ports-mgmt/portaudit/files/portaudit-cmd.sh index b16c7e3..4a30369 100644 --- a/ports-mgmt/portaudit/files/portaudit-cmd.sh +++ b/ports-mgmt/portaudit/files/portaudit-cmd.sh @@ -131,6 +131,7 @@ audit_installed() local osversion=`sysctl -n kern.osreldate` fixedre=`echo -n $portaudit_fixed | tr -c '[:alnum:]- \t\n' 'x' | tr -s ' \t\n' '|'` + installedre=`$pkg_info -aE | sed -e 's/-[^-]*$//g' | paste -s -d '|' -` extract_auditfile | awk -F\| "$PRINTAFFECTED_AWK"' BEGIN { vul=0; fixedre="'"$fixedre"'" } @@ -144,6 +145,9 @@ audit_installed() } next } + $1 ~ /^[^{}*?]*[<=>!]/ { + if ($1 !~ "^('"$installedre"')[<=>!]") next; + } { cmd="'"$pkg_info"' -E \"" $1 "\"" while((cmd | getline pkg) > 0) { diff --git a/security/portaudit/Makefile b/security/portaudit/Makefile index 914dd0c..8d585f4 100644 --- a/security/portaudit/Makefile +++ b/security/portaudit/Makefile @@ -6,7 +6,7 @@ # PORTNAME= portaudit -PORTVERSION= 0.5.10 +PORTVERSION= 0.5.11 CATEGORIES= security DISTFILES= diff --git a/security/portaudit/files/portaudit-cmd.sh b/security/portaudit/files/portaudit-cmd.sh index b16c7e3..4a30369 100644 --- a/security/portaudit/files/portaudit-cmd.sh +++ b/security/portaudit/files/portaudit-cmd.sh @@ -131,6 +131,7 @@ audit_installed() local osversion=`sysctl -n kern.osreldate` fixedre=`echo -n $portaudit_fixed | tr -c '[:alnum:]- \t\n' 'x' | tr -s ' \t\n' '|'` + installedre=`$pkg_info -aE | sed -e 's/-[^-]*$//g' | paste -s -d '|' -` extract_auditfile | awk -F\| "$PRINTAFFECTED_AWK"' BEGIN { vul=0; fixedre="'"$fixedre"'" } @@ -144,6 +145,9 @@ audit_installed() } next } + $1 ~ /^[^{}*?]*[<=>!]/ { + if ($1 !~ "^('"$installedre"')[<=>!]") next; + } { cmd="'"$pkg_info"' -E \"" $1 "\"" while((cmd | getline pkg) > 0) { |