diff options
-rw-r--r-- | src/apk.c | 8 | ||||
-rw-r--r-- | src/state.c | 10 |
2 files changed, 13 insertions, 5 deletions
@@ -117,9 +117,9 @@ static struct option generic_options[32] = { { "quiet", no_argument, NULL, 'q' }, { "verbose", no_argument, NULL, 'v' }, { "version", no_argument, NULL, 'V' }, + { "force", no_argument, NULL, 'f' }, { "progress", no_argument, NULL, 0x101 }, { "clean-protected", no_argument, NULL, 0x102 }, - { "force", no_argument, NULL, 0x103 }, { "simulate", no_argument, NULL, 0x104 }, }; @@ -181,15 +181,15 @@ int main(int argc, char **argv) break; case 'V': return version(); + case 'f': + apk_flags |= APK_FORCE; + break; case 0x101: apk_flags |= APK_PROGRESS; break; case 0x102: apk_flags |= APK_CLEAN_PROTECTED; break; - case 0x103: - apk_flags |= APK_FORCE; - break; case 0x104: apk_flags |= APK_SIMULATE; break; diff --git a/src/state.c b/src/state.c index c07c806..5b6b81c 100644 --- a/src/state.c +++ b/src/state.c @@ -170,8 +170,16 @@ int apk_state_lock_dependency(struct apk_state *state, return -1; if (ns_empty(state->name[name->id])) { - if (dep->result_mask == APK_DEPMASK_CONFLICT) + if (dep->result_mask == APK_DEPMASK_CONFLICT) { + if ((name->flags & APK_NAME_TOPLEVEL) && + !(apk_flags & APK_FORCE)) { + apk_error("Not deleting top level dependency " + "'%s'. Use -f to override.", + name->name); + return -1; + } return apk_state_lock_name(state, name, NULL); + } /* This name has not been visited yet. * Construct list of candidates. */ |