+static int opkg_print_architecture_cmd(int argc, char **argv)
+{
+ nv_pair_list_elt_t *l;
+
+ list_for_each_entry(l, &conf->arch_list.head, node) {
+ nv_pair_t *nv = (nv_pair_t *) l->data;
+ printf("arch %s %s\n", nv->name, nv->value);
+ }
+ return 0;
+}
+
+/* XXX: CLEANUP: The usage strings should be incorporated into this
+ array for easier maintenance */
+static opkg_cmd_t cmds[] = {
+ {"update", 0, (opkg_cmd_fun_t) opkg_update_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"upgrade", 1, (opkg_cmd_fun_t) opkg_upgrade_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"list", 0, (opkg_cmd_fun_t) opkg_list_cmd, PFM_SOURCE},
+ {"list_installed", 0, (opkg_cmd_fun_t) opkg_list_installed_cmd,
+ PFM_SOURCE},
+ {"list-installed", 0, (opkg_cmd_fun_t) opkg_list_installed_cmd,
+ PFM_SOURCE},
+ {"list_upgradable", 0, (opkg_cmd_fun_t) opkg_list_upgradable_cmd,
+ PFM_SOURCE},
+ {"list-upgradable", 0, (opkg_cmd_fun_t) opkg_list_upgradable_cmd,
+ PFM_SOURCE},
+ {"list_changed_conffiles", 0,
+ (opkg_cmd_fun_t) opkg_list_changed_conffiles_cmd, PFM_SOURCE},
+ {"list-changed-conffiles", 0,
+ (opkg_cmd_fun_t) opkg_list_changed_conffiles_cmd, PFM_SOURCE},
+ {"info", 0, (opkg_cmd_fun_t) opkg_info_cmd, 0},
+ {"flag", 1, (opkg_cmd_fun_t) opkg_flag_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"status", 0, (opkg_cmd_fun_t) opkg_status_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"install", 1, (opkg_cmd_fun_t) opkg_install_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"remove", 1, (opkg_cmd_fun_t) opkg_remove_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"configure", 0, (opkg_cmd_fun_t) opkg_configure_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"files", 1, (opkg_cmd_fun_t) opkg_files_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"search", 1, (opkg_cmd_fun_t) opkg_search_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"find", 1, (opkg_cmd_fun_t) opkg_find_cmd, PFM_SOURCE},
+ {"download", 1, (opkg_cmd_fun_t) opkg_download_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"compare_versions", 1, (opkg_cmd_fun_t) opkg_compare_versions_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"compare-versions", 1, (opkg_cmd_fun_t) opkg_compare_versions_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"print-architecture", 0, (opkg_cmd_fun_t) opkg_print_architecture_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"print_architecture", 0, (opkg_cmd_fun_t) opkg_print_architecture_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"print-installation-architecture", 0,
+ (opkg_cmd_fun_t) opkg_print_architecture_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"print_installation_architecture", 0,
+ (opkg_cmd_fun_t) opkg_print_architecture_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"depends", 1, (opkg_cmd_fun_t) opkg_depends_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"whatdepends", 1, (opkg_cmd_fun_t) opkg_whatdepends_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"whatdependsrec", 1, (opkg_cmd_fun_t) opkg_whatdepends_recursively_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"whatrecommends", 1, (opkg_cmd_fun_t) opkg_whatrecommends_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"whatsuggests", 1, (opkg_cmd_fun_t) opkg_whatsuggests_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"whatprovides", 1, (opkg_cmd_fun_t) opkg_whatprovides_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"whatreplaces", 1, (opkg_cmd_fun_t) opkg_whatreplaces_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+ {"whatconflicts", 1, (opkg_cmd_fun_t) opkg_whatconflicts_cmd,
+ PFM_DESCRIPTION | PFM_SOURCE},
+};
+
+opkg_cmd_t *opkg_cmd_find(const char *name)