From 95773d8fb6672d7cf35c30772761402cd88259bd Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 3 Oct 2010 22:15:39 +0000 Subject: [package] opkg: implement "list-changed-conffiles" command, based on patch by Yann Lopez git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23210 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/013-add-list-changed-conffiles.patch | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 package/opkg/patches/013-add-list-changed-conffiles.patch (limited to 'package/opkg/patches') diff --git a/package/opkg/patches/013-add-list-changed-conffiles.patch b/package/opkg/patches/013-add-list-changed-conffiles.patch new file mode 100644 index 000000000..1824ceaa7 --- /dev/null +++ b/package/opkg/patches/013-add-list-changed-conffiles.patch @@ -0,0 +1,70 @@ +--- a/libopkg/opkg_cmd.c ++++ b/libopkg/opkg_cmd.c +@@ -617,6 +617,39 @@ opkg_list_installed_cmd(int argc, char * + } + + static int ++opkg_list_changed_conffiles_cmd(int argc, char **argv) ++{ ++ int i ; ++ pkg_vec_t *available; ++ pkg_t *pkg; ++ char *pkg_name = NULL; ++ conffile_list_elt_t *iter; ++ conffile_t *cf; ++ ++ if (argc > 0) { ++ pkg_name = argv[0]; ++ } ++ available = pkg_vec_alloc(); ++ pkg_hash_fetch_all_installed(available); ++ pkg_vec_sort(available, pkg_compare_names); ++ for (i=0; i < available->len; i++) { ++ pkg = available->pkgs[i]; ++ /* if we have package name or pattern and pkg does not match, then skip it */ ++ if (pkg_name && fnmatch(pkg_name, pkg->name, 0)) ++ continue; ++ if (nv_pair_list_empty(&pkg->conffiles)) ++ continue; ++ for (iter = nv_pair_list_first(&pkg->conffiles); iter; iter = nv_pair_list_next(&pkg->conffiles, iter)) { ++ cf = (conffile_t *)iter->data; ++ if (cf->name && cf->value && conffile_has_been_modified(cf)) ++ printf("%s\n", cf->name); ++ } ++ } ++ pkg_vec_free(available); ++ return 0; ++} ++ ++static int + opkg_list_upgradable_cmd(int argc, char **argv) + { + struct active_list *head = prepare_upgrade_list(); +@@ -1188,6 +1221,8 @@ static opkg_cmd_t cmds[] = { + {"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}, +--- a/src/opkg-cl.c ++++ b/src/opkg-cl.c +@@ -228,6 +228,7 @@ usage() + printf("\tlist List available packages\n"); + printf("\tlist-installed List installed packages\n"); + printf("\tlist-upgradable List installed and upgradable packages\n"); ++ printf("\tlist-changed-conffiles List user modified configuration files\n"); + printf("\tfiles List files belonging to \n"); + printf("\tsearch List package providing \n"); + printf("\tinfo [pkg|regexp] Display all info for \n"); +@@ -331,6 +332,8 @@ main(int argc, char *argv[]) + !strcmp(cmd_name,"compare-versions") || + !strcmp(cmd_name,"list_installed") || + !strcmp(cmd_name,"list-installed") || ++ !strcmp(cmd_name,"list_changed_conffiles") || ++ !strcmp(cmd_name,"list-changed-conffiles") || + !strcmp(cmd_name,"status") ) + noreadfeedsfile = 1; + -- cgit v1.2.3