diff -Naur slackyd-0.1.13beta/CHANGELOG slackyd-0.1.14beta/CHANGELOG --- slackyd-0.1.13beta/CHANGELOG 2009-07-18 05:11:33.000000000 +0200 +++ slackyd-0.1.14beta/CHANGELOG 2009-07-23 03:26:22.000000000 +0200 @@ -1,5 +1,9 @@ Slackyd News and Bug Fix: +0.1.14beta: ++ Added "upgrade_replacing_official" keyword to config file to prevent slackware packages replacement with unofficial. +- Fixed dependencies OR check. + 0.1.13beta: + Added cache and customizable mirror port to config file. + Added txz support. diff -Naur slackyd-0.1.13beta/src/packages.c slackyd-0.1.14beta/src/packages.c --- slackyd-0.1.13beta/src/packages.c 2009-07-23 03:30:08.000000000 +0200 +++ slackyd-0.1.14beta/src/packages.c 2009-07-23 03:18:18.000000000 +0200 @@ -947,7 +947,23 @@ ++*index; return *index; } - + +static bool +curr_or_next_dep_inst (dep_t *dep, unsigned ndep, unsigned i) +{ + while (i < ndep && dep[i].missing) + { + if (!dep[i].OR_next) + { + return false; + } + + i++; + } + + return true; +} + void choice_dep (choose_dep_t *data, pkg_t *package, int type) { @@ -977,7 +993,7 @@ while (i < ngroup) { - if (!group[i].missing || dep_already_added (data, group, i)) + if (curr_or_next_dep_inst (group, ngroup, i) || dep_already_added (data, group, i)) { dep_next (group, &i); continue; @@ -986,7 +1002,7 @@ j = i; do { - pkgl_join (&found, search_dep (&group[j])); + pkgl_join (&found, search_dep (&group[j])); } while (group[j++].OR_next);