diff options
author | Murray Stokely <murray@FreeBSD.org> | 2002-01-29 21:41:08 +0000 |
---|---|---|
committer | Murray Stokely <murray@FreeBSD.org> | 2002-01-29 21:41:08 +0000 |
commit | 1dde8e011146a20b427e7deb44f7c8343daa360e (patch) | |
tree | 461d80416bbecf5d3d6f467950cdcd7ecb9e9c82 /usr.sbin/sysinstall/index.c | |
parent | 8aa32802b9cdb0a9ccf58a265b4860f33c7e997e (diff) | |
download | src-1dde8e011146a20b427e7deb44f7c8343daa360e.tar.gz src-1dde8e011146a20b427e7deb44f7c8343daa360e.zip |
Notes
Diffstat (limited to 'usr.sbin/sysinstall/index.c')
-rw-r--r-- | usr.sbin/sysinstall/index.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/usr.sbin/sysinstall/index.c b/usr.sbin/sysinstall/index.c index b3ca29e2352e..bc6f3f80ca73 100644 --- a/usr.sbin/sysinstall/index.c +++ b/usr.sbin/sysinstall/index.c @@ -640,6 +640,19 @@ index_extract(Device *dev, PkgNodePtr top, PkgNodePtr who, Boolean depended) IndexEntryPtr id = who->data; WINDOW *w = savescr(); + /* + * Short-circuit the package dependency checks. We're already + * maintaining a data structure of installed packages, so if a + * package is already installed, don't try to check to make sure + * that all of its dependencies are installed. At best this + * wastes a ton of cycles and can cause minor delays between + * package extraction. At worst it can cause an infinite loop with + * a certain faulty INDEX file. + */ + + if (id->installed == 1) + return DITEM_SUCCESS; + if (id && id->deps && strlen(id->deps)) { char t[1024], *cp, *cp2; |