X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fsolv%2Fsolv.c;h=3deb1a02b94abe137eda3f211fc0d197fd6e7f02;hb=2491213c77850ed26991b572809a5ca4a61fa89b;hp=42ab751bf9f3be7a554bdc39c4fb980806c60ce9;hpb=0e46e80434781d1acbc4f5716827bf8688450a30;p=platform%2Fupstream%2Flibsolv.git diff --git a/examples/solv/solv.c b/examples/solv/solv.c index 42ab751..3deb1a0 100644 --- a/examples/solv/solv.c +++ b/examples/solv/solv.c @@ -130,7 +130,7 @@ showdiskusagechanges(Transaction *trans) duc[3].path = "/etc"; transaction_calc_duchanges(trans, duc, 4); for (i = 0; i < 4; i++) - printf("duchanges %s: %d K %d inodes\n", duc[i].path, duc[i].kbytes, duc[i].files); + printf("duchanges %s: %lld K %lld inodes\n", duc[i].path, duc[i].kbytes, duc[i].files); } #endif @@ -169,7 +169,6 @@ find_repo(const char *name, Pool *pool, struct repoinfo *repoinfos, int nrepoinf return 0; } - #define MODE_LIST 0 #define MODE_INSTALL 1 #define MODE_ERASE 2 @@ -227,6 +226,7 @@ main(int argc, char **argv) char *rootdir = 0; char *keyname = 0; int keyname_depstr = 0; + int keyname_alldeps = 0; /* dnf repoquesy --alldeps */ int debuglevel = 0; int answer, acnt = 0; char *testcase = 0; @@ -316,9 +316,15 @@ main(int argc, char **argv) argc--; argv++; } + else if (argc > 1 && !strcmp(argv[1], "--alldeps")) + { + keyname_alldeps = 1; /* dnf repoquesy --alldeps */ + argc--; + argv++; + } else if (argc > 1 && !strcmp(argv[1], "--depstr")) { - keyname_depstr = 1; + keyname_depstr = 1; /* do literal matching instead of dep intersection */ argc--; argv++; } @@ -539,7 +545,7 @@ main(int argc, char **argv) flags |= SELECTION_FILELIST | (mode == MODE_ERASE ? SELECTION_INSTALLED_ONLY : 0); if (keyname && keyname_depstr) flags |= SELECTION_MATCH_DEPSTR; - if (!keyname) + if (!keyname || keyname_alldeps) rflags = selection_make(pool, &job2, argv[i], flags); else rflags = selection_make_matchdeps(pool, &job2, argv[i], flags, pool_str2id(pool, keyname, 1), 0); @@ -552,7 +558,7 @@ main(int argc, char **argv) if (!job2.count) { flags |= SELECTION_NOCASE; - if (!keyname) + if (!keyname || keyname_alldeps) rflags = selection_make(pool, &job2, argv[i], flags); else rflags = selection_make_matchdeps(pool, &job2, argv[i], flags, pool_str2id(pool, keyname, 1), 0); @@ -574,6 +580,14 @@ main(int argc, char **argv) printf("[using file list match for '%s']\n", argv[i]); if (rflags & SELECTION_PROVIDES) printf("[using capability match for '%s']\n", argv[i]); + if (keyname && keyname_alldeps) + { + Queue q; + queue_init(&q); + selection_solvables(pool, &job2, &q); + selection_make_matchsolvablelist(pool, &job2, &q, 0, pool_str2id(pool, keyname, 1), 0); + queue_free(&q); + } queue_insertn(&job, job.count, job2.count, job2.elements); queue_free(&job2); } @@ -773,7 +787,7 @@ rerunsolver: #if defined(SUSE) showdiskusagechanges(trans); #endif - printf("install size change: %d K\n", transaction_calc_installsizechange(trans)); + printf("install size change: %lld K\n", transaction_calc_installsizechange(trans)); printf("\n"); acnt = solver_alternatives_count(solv);