diff options
| author | Colin Percival <cperciva@FreeBSD.org> | 2005-09-17 15:30:16 +0000 |
|---|---|---|
| committer | Colin Percival <cperciva@FreeBSD.org> | 2005-09-17 15:30:16 +0000 |
| commit | 6a15313d240a4db4dd30161a8205d29c980a9fb5 (patch) | |
| tree | 6755ce47cafb023a40f4a6ddcf2387ff1ee5717b /usr.sbin | |
| parent | 90412be1fd5a87d29094a88dca1780d7195eb7c6 (diff) | |
Notes
Diffstat (limited to 'usr.sbin')
| -rw-r--r-- | usr.sbin/portsnap/make_index/make_index.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/usr.sbin/portsnap/make_index/make_index.c b/usr.sbin/portsnap/make_index/make_index.c index fbb8dd9168649..c02bba8b0deb9 100644 --- a/usr.sbin/portsnap/make_index/make_index.c +++ b/usr.sbin/portsnap/make_index/make_index.c @@ -305,15 +305,28 @@ recurse_one(DEP * d, size_t * nd) static void recurse(PORT * p) { - if (p->recursed != 0) + switch (p->recursed) { + case 0: + /* First time we've seen this port */ + p->recursed = 1; + break; + case 1: + /* We're in the middle of recursing this port */ + errx(1, "Circular dependency loop found: %s" + " depends upon itself.\n", p->pkgname); + case 2: + /* This port has already been recursed */ return; - p->recursed = 1; + } p->edep = recurse_one(p->edep, &p->n_edep); p->pdep = recurse_one(p->pdep, &p->n_pdep); p->fdep = recurse_one(p->fdep, &p->n_fdep); p->bdep = recurse_one(p->bdep, &p->n_bdep); p->rdep = recurse_one(p->rdep, &p->n_rdep); + + /* Finished recursing on this port */ + p->recursed = 2; } /* Heapify an element in a package list */ |
