Author: mis Date: Sun Jul 1 21:04:31 2007 GMT Module: poldek Tag: HEAD ---- Log message: - redesigned logging and ask (callbacks) subsyses - quite complete python module - pyldek - cleanups
---- Files affected: poldek/poldek: README (1.10 -> 1.11) , ask.c (1.8 -> 1.9) , install-dist.c (1.9 -> 1.10) , lib_init.c (1.81 -> 1.82) , libpoldek.sym (1.29 -> 1.30) , log.c (1.30 -> 1.31) , log.h (1.25 -> 1.26) , misc.c (1.57 -> 1.58) , misc.h (1.36 -> 1.37) , pkgmisc.c (1.8 -> 1.9) , pkgmisc.h (1.15 -> 1.16) , pkgset-load.c (1.56 -> 1.57) , pkgset.c (1.94 -> 1.95) , poldek.h (1.35 -> 1.36) , poldek_intern.h (1.10 -> 1.11) , poldek_ts.c (1.65 -> 1.66) , poldek_ts.h (1.39 -> 1.40) , uninstall.c (1.43 -> 1.44) poldek/poldek/cli: install.c (1.44 -> 1.45) , libpoclidek.sym (1.6 -> 1.7) , ls.c (1.24 -> 1.25) , poclidek.h (1.6 -> 1.7) , rcmd.c (1.1 -> 1.2) , uninstall.c (1.31 -> 1.32) poldek/poldek/install: conflicts.c (1.5 -> 1.6) , icaps.c (1.4 -> 1.5) , ictx.c (1.2 -> 1.3) , ictx.h (1.5 -> 1.6) , install.c (1.9 -> 1.10) , mark.c (1.3 -> 1.4) , misc.c (1.11 -> 1.12) , process.c (1.1 -> 1.2) , requirements.c (1.10 -> 1.11) poldek/poldek/pkgdir: pkgdir_dirindex.c (1.14 -> 1.15) , source.c (1.43 -> 1.44) poldek/poldek/pkgdir/pdir: save.c (1.19 -> 1.20) poldek/poldek/pkgdir/pndir: save.c (1.32 -> 1.33) poldek/poldek/pm/pset: pset.c (1.23 -> 1.24) poldek/poldek/pm/rpm: install.c (1.6 -> 1.7) , rpm.c (1.18 -> 1.19) , rpminstall.c (1.21 -> 1.22) poldek/poldek/python: pyldek.py (NONE -> 1.1) (NEW), poldek.py (1.11 -> 1.12) , poldekmod.i (1.13 -> 1.14) , test.py (1.17 -> NONE) (REMOVED) ---- Diffs: ================================================================ Index: poldek/poldek/README diff -u poldek/poldek/README:1.10 poldek/poldek/README:1.11 --- poldek/poldek/README:1.10 Tue Nov 1 20:22:43 2005 +++ poldek/poldek/README Sun Jul 1 23:04:26 2007 @@ -2,14 +2,14 @@ See man and info pages for user documentation. -Project homepage: <http://team.pld.org.pl/~mis/poldek/>. +Project homepage: <http://poldek.pld-linux.org/>. -Please send comments, bug reports, etc to me <[EMAIL PROTECTED]> or to +Please send comments, bug reports, etc to me <mis att pld-linux.org> or to program mailing list <[EMAIL PROTECTED]>. To subscribe send empty mail to <[EMAIL PROTECTED]> -Copyright (C) 2000 - 2002 Pawel A. Gajda <mis @ pld.org.pl> +Copyright (C) 2000 - 2007 Pawel A. Gajda <mis @ pld-linux.org> The poldek is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2 as published by the Free Software Foundation (see file COPYING for details). ================================================================ Index: poldek/poldek/ask.c diff -u poldek/poldek/ask.c:1.8 poldek/poldek/ask.c:1.9 --- poldek/poldek/ask.c:1.8 Sun Jun 17 22:24:47 2007 +++ poldek/poldek/ask.c Sun Jul 1 23:04:26 2007 @@ -1,5 +1,5 @@ /* - Copyright (C) 2000 - 2002 Pawel A. Gajda <[EMAIL PROTECTED]> + Copyright (C) 2000 - 2007 Pawel A. Gajda <[EMAIL PROTECTED]> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as @@ -30,56 +30,74 @@ #include "i18n.h" #include "log.h" #include "poldek_term.h" +#include "poldek_ts.h" +#include "poldek_intern.h" #include "pkg.h" - -int poldek_term_ask_yn(int default_a, const char *fmt, ...) +static int term_confirm(void *foo, const struct poldek_ts *ts, int hint, + const char *question) { - va_list args; + const char *yn = "[Y/n]"; int a; + foo = foo; + ts = ts; if (!isatty(STDIN_FILENO)) - return default_a; /* yes */ + return hint; + + if (hint == 0) /* no */ + yn = "[N/y]"; - va_start(args, fmt); - vlog(LOGINFO, 0, fmt, args); - va_end(args); + poldek_log(LOGINFO, "%s %s", question, yn); a = poldek_term_ask(STDIN_FILENO, "YyNn\n", NULL); a = toupper(a); switch(a) { case 'Y': a = 1; break; case 'N': a = 0; break; - case '\n': a = default_a; break; + case '\n': a = hint; break; default: n_assert(0); } + msg(-1, "_\n"); return a; } - -int poldek_term_ask_pkg(const char *capname, struct pkg **pkgs, struct pkg *deflt) +static int term_ts_confirm(void *foo, const struct poldek_ts *ts) { - int i, a, default_i = 0; - char *validchrs, *p; - - - if (deflt) { - i = 0; - while(pkgs[i] != NULL && i < 24) { - if (deflt && deflt == pkgs[i]) { - default_i = i; - break; - } - i++; - } + int answer = 1; + foo = foo; + + /* poldek__ts_display_summary(ts); */ /* already displayed */ + + if (ts->type == POLDEK_TS_UNINSTALL) { + if (ts->getop(ts, POLDEK_OP_CONFIRM_UNINST)) + answer = term_confirm(foo, ts, 0, _("Proceed?")); + + } else { + if (ts->getop(ts, POLDEK_OP_CONFIRM_INST)) + answer = term_confirm(foo, ts, 1, _("Proceed?")); + } + + return answer; +} +static int term_choose_pkg(void *foo, const struct poldek_ts *ts, + const char *capname, tn_array *pkgs, int hint) +{ + char *validchrs, *p; + int i, a; + + foo = foo; ts = ts; + + if (hint > 24) /* over ascii */ + hint = 0; if (!isatty(STDIN_FILENO)) - return default_i; + return hint; msgn(-1, _("There are more than one package which provide \"%s\":"), capname); validchrs = alloca(64); @@ -87,21 +105,23 @@ *p++ = '\n'; i = 0; - while(pkgs[i] != NULL && i < 24) { - msgn(-1, "%c) %s", 'a' + i, pkg_id(pkgs[i])); + for (i=0; i < n_array_size(pkgs); i++) { + msgn(-1, "%c) %s", 'a' + i, pkg_id(n_array_nth(pkgs, i))); *p++ = 'a' + i; - i++; + + if (i > 24) + break; } *p++ = 'Q'; - msg(-1, _("Which one do you want to install ('Q' to abort)? [%c]"), - 'a' + default_i); + msg(-1, _("Which one do you want to install ('Q' to abort)? [%c]"), 'a' + hint); + a = poldek_term_ask(STDIN_FILENO, validchrs, NULL); msg(-1, "_\n"); if (a == '\n') - return default_i; - + return hint; + if (a == 'Q') return -1; @@ -110,5 +130,54 @@ if (a >= 0 && a < i) return a; - return default_i; + return hint; +} + +int poldek__confirm(const struct poldek_ts *ts, int hint, const char *message) +{ + if (ts->ctx->confirm_fn == NULL) + return hint; + + return ts->ctx->confirm_fn(ts->ctx->data_confirm_fn, ts, hint, message); +} + +int poldek__ts_confirm(const struct poldek_ts *ts) +{ + if (ts->ctx->ts_confirm_fn == NULL) + return 1; + + return ts->ctx->ts_confirm_fn(ts->ctx->data_ts_confirm_fn, ts); +} + +int poldek__choose_equiv(const struct poldek_ts *ts, + const char *capname, tn_array *pkgs, struct pkg *hint) +{ + int i, inthint = 0; + + if (hint) { + for (i=0; i < n_array_size(pkgs); i++) { + if (hint && hint == n_array_nth(pkgs, i)) { + inthint = i; + break; + } + } + } + + if (ts->ctx->choose_equiv_fn == NULL) + return inthint; + + return ts->ctx->choose_equiv_fn(ts->ctx->data_choose_equiv_fn, + ts, capname, pkgs, inthint); +} + +void poldek__setup_default_ask_callbacks(struct poldek_ctx *ctx) +{ + ctx->data_confirm_fn = NULL; + ctx->confirm_fn = term_confirm; + + ctx->data_ts_confirm_fn = NULL; + ctx->ts_confirm_fn = term_ts_confirm; + + ctx->data_choose_equiv_fn = NULL; + ctx->choose_equiv_fn = term_choose_pkg; } ================================================================ Index: poldek/poldek/install-dist.c diff -u poldek/poldek/install-dist.c:1.9 poldek/poldek/install-dist.c:1.10 --- poldek/poldek/install-dist.c:1.9 Wed Aug 23 00:46:32 2006 +++ poldek/poldek/install-dist.c Sun Jul 1 23:04:26 2007 @@ -1,5 +1,5 @@ /* - Copyright (C) 2000 - 2005 Pawel A. Gajda <[EMAIL PROTECTED]> + Copyright (C) 2000 - 2007 Pawel A. Gajda <[EMAIL PROTECTED]> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2 as @@ -51,6 +51,30 @@ }; +/* --fetch, --dump, packages in install order */ +static int ts_fetch_or_dump_packages(struct poldek_ts *ts) +{ + tn_array *pkgs; + int rc = 0; + + pkgs = poldek__ts_install_ordered_packages(ts); + + if (ts->getop_v(ts, POLDEK_OP_JUSTPRINT, POLDEK_OP_JUSTPRINT_N, 0)) { + rc = packages_dump(pkgs, ts->dumpfile, + ts->getop(ts, POLDEK_OP_JUSTPRINT_N) == 0); + + } else if (ts->getop(ts, POLDEK_OP_JUSTFETCH)) { + const char *destdir = ts->fetchdir; + if (destdir == NULL) + destdir = ts->cachedir; + + rc = packages_fetch(ts->pmctx, pkgs, destdir, ts->fetchdir ? 1 : 0); + } + + n_array_free(pkgs); + return rc; +} + static void is_marked_mapfn(struct pkg *pkg, struct inf *inf) { if (pkg_is_marked(inf->pms, pkg)) { @@ -60,6 +84,14 @@ } } +static int mkdbdir(struct poldek_ts *ts) +{ + char dbpath[PATH_MAX], *dbpathp; + dbpathp = pm_dbpath(ts->pmctx, dbpath, sizeof(dbpath)); + n_assert(dbpathp); + return util__mkdir_p(ts->rootdir, dbpath); +} + void display_iinf_start(struct inf *inf) { if (inf->bytes_toget) { @@ -89,8 +121,7 @@ } - -int do_poldek_ts_install_dist(struct poldek_ts *ts) +static int do_install_dist(struct poldek_ts *ts) { int i, nerr; struct inf inf; @@ -119,7 +150,7 @@ n_array_map_arg(ts->ctx->ps->pkgs, (tn_fn_map2)is_marked_mapfn, &inf); display_iinf_start(&inf); - pkgs = ts__packages_in_install_order(ts); + pkgs = poldek__ts_install_ordered_packages(ts); for (i=0; i < n_array_size(pkgs); i++) { struct pkg *pkg = n_array_nth(pkgs, i); @@ -169,4 +200,94 @@ n_array_cfree(&pkgs); return nerr == 0; +} + +static void install_dist_summary(struct poldek_ts *ts) +{ + int n = 0, ndep = 0; + tn_array *pkgs, *depkgs; + + pkgs = pkgmark_get_packages(ts->pms, PKGMARK_MARK); + n = n_array_size(pkgs); + + depkgs = pkgmark_get_packages(ts->pms, PKGMARK_DEP); + if (depkgs) + ndep = n_array_size(depkgs); + + poldek__ts_update_summary(ts, "I", pkgs, PKGMARK_MARK, ts->pms); + n_array_free(pkgs); + + if (depkgs) { + poldek__ts_update_summary(ts, "D", depkgs, PKGMARK_MARK, ts->pms); + n_array_free(depkgs); + } + + poldek__ts_display_summary(ts); +} + +int do_poldek_ts_install_dist(struct poldek_ts *ts) +{ + int rc, nerr = 0, ignorer; + tn_array *pkgs = NULL; + + rc = 1; + + ignorer = ts->getop(ts, POLDEK_OP_NODEPS); + if (!packages_verify_dependecies(pkgs, ts->ctx->ps) && !ignorer) + nerr++; + + n_array_free(pkgs); + pkgs = NULL; + + ignorer = ts->getop(ts, POLDEK_OP_FORCE); + if (!pkgmark_verify_package_conflicts(ts->pms) && !ignorer) + nerr++; + + if (nerr) { + logn(LOGERR, _("Buggy package set")); + rc = 0; + goto l_end; + } + + install_dist_summary(ts); + + if (ts->getop(ts, POLDEK_OP_TEST)) + goto l_end; + + if (ts->getop_v(ts, POLDEK_OP_JUSTPRINT, POLDEK_OP_JUSTPRINT_N, + POLDEK_OP_JUSTFETCH, 0)) { + + rc = ts_fetch_or_dump_packages(ts); + goto l_end; + } + + if (ts->getop(ts, POLDEK_OP_MKDBDIR)) { + if (!mkdbdir(ts)) { + rc = 0; + goto l_end; + } + } + + if (ts->getop(ts, POLDEK_OP_RPMTEST)) + ts->db = poldek_ts_dbopen(ts, O_RDONLY); + else + ts->db = poldek_ts_dbopen(ts, O_RDWR | O_CREAT | O_EXCL); + + if (ts->db == NULL) { + rc = 0; + goto l_end; + } + + rc = do_install_dist(ts); + + if (!ts->getop(ts, POLDEK_OP_RPMTEST)) + pkgdb_tx_commit(ts->db); + pkgdb_free(ts->db); + ts->db = NULL; + + l_end: + + if (pkgs) + n_array_free(pkgs); + return rc; } ================================================================ Index: poldek/poldek/lib_init.c diff -u poldek/poldek/lib_init.c:1.81 poldek/poldek/lib_init.c:1.82 --- poldek/poldek/lib_init.c:1.81 Wed Jun 27 02:44:47 2007 +++ poldek/poldek/lib_init.c Sun Jul 1 23:04:26 2007 @@ -59,8 +59,6 @@ "Copyright (C) 2000-2007 Pawel A. Gajda <[EMAIL PROTECTED]>\n" "This program may be freely redistributed under the terms of the GNU GPL v2"; -static const char *poldek_logprefix = "poldek"; - static int say_goodbye(const char *msg); int (*poldek_say_goodbye)(const char *msg) = say_goodbye; @@ -1183,14 +1181,41 @@ case POLDEK_CONF_LOGFILE: vv = va_arg(ap, void*); - if (vv) - poldek_log_init(vv, stdout, poldek_logprefix); + if (vv) { + FILE *stream = fopen(vv, "a"); + if (stream) + poldek_log_set_default_appender("_FILE", stream, (tn_fn_free)fclose); + } + break; case POLDEK_CONF_LOGTTY: - vv = va_arg(ap, void*); - if (vv) - poldek_log_init(NULL, vv, poldek_logprefix); + poldek_log_set_default_appender("_TTY", NULL, NULL); + break; + + case POLDEK_CONF_CONFIRM_CB: + if ((vv = va_arg(ap, void*))) + ctx->confirm_fn = vv; + + if ((vv = va_arg(ap, void*))) + ctx->data_confirm_fn = vv; + + break; + + case POLDEK_CONF_TSCONFIRM_CB: + if ((vv = va_arg(ap, void*))) + ctx->ts_confirm_fn = vv; + + if ((vv = va_arg(ap, void*))) + ctx->data_ts_confirm_fn = vv; + break; + + case POLDEK_CONF_CHOOSEEQUIV_CB: + if ((vv = va_arg(ap, void*))) + ctx->choose_equiv_fn = vv; + + if ((vv = va_arg(ap, void*))) + ctx->data_choose_equiv_fn = vv; break; case POLDEK_CONF_GOODBYE_CB: @@ -1230,7 +1255,7 @@ //fmt = logfmt; } - vlog(logpri, 0, fmt, ap); + poldek_vlog(logpri, 0, fmt, ap); } void poldeklib_destroy(void) @@ -1240,7 +1265,8 @@ n_array_free(default_op_map); default_op_map = NULL; - + + poldek_log_reset_appenders(); } int poldeklib_init(void) @@ -1252,7 +1278,6 @@ pmmodule_init(); poldek_set_verbose(0); - poldek_log_init(NULL, stdout, poldek_logprefix); verify_setuid(); default_op_map = build_default_op_map(); @@ -1299,8 +1324,7 @@ } -static -int poldek_init(struct poldek_ctx *ctx, unsigned flags) +static int poldek_init(struct poldek_ctx *ctx, unsigned flags) { struct poldek_ts *ts; int i; @@ -1308,6 +1332,9 @@ flags = flags; memset(ctx, 0, sizeof(*ctx)); + poldek_log_set_default_appender("_TTY", NULL, NULL); + poldek__setup_default_ask_callbacks(ctx); + ctx->sources = n_array_new(4, (tn_fn_free)source_free, (tn_fn_cmp)source_cmp); @@ -1402,7 +1429,7 @@ { char *path; - path = setup_cachedir(ctx->ts->cachedir); + path = util__setup_cachedir(ctx->ts->cachedir); if (poldek_VERBOSE > 0 && getenv("POLDEK_TESTING")) { if (ctx->ts->cachedir && path && n_str_eq(ctx->ts->cachedir, path)) ================================================================ Index: poldek/poldek/libpoldek.sym diff -u poldek/poldek/libpoldek.sym:1.29 poldek/poldek/libpoldek.sym:1.30 --- poldek/poldek/libpoldek.sym:1.29 Sat Jun 30 14:01:43 2007 +++ poldek/poldek/libpoldek.sym Sun Jul 1 23:04:26 2007 @@ -211,23 +211,15 @@ poldek_get_pkgdirs poldek_get_pmctx poldek_get_sources -poldek_iinf_destroy -poldek_iinf_init poldek_is_interactive_on poldek_link poldek_load_config poldek_load_destination_pkgdir poldek_load_sources poldek_log -poldek_log_closelog -poldek_log_enabled_filelog -poldek_log_err -poldek_log_file_stream +poldek_log_add_appender +poldek_log_set_appender poldek_log_i -poldek_log_init -poldek_log_msg -poldek_log_msg_i -poldek_log_stream poldek_log_tty poldek_meminf poldek_new @@ -255,6 +247,7 @@ poldek_ts_free poldek_ts_get_arg_count poldek_ts_get_args_asmasks +poldek_ts_get_summary poldek_ts_getop poldek_ts_is_interactive_on poldek_ts_issetf @@ -262,10 +255,10 @@ poldek_ts_new poldek_ts_op_touched poldek_ts_run +poldek_ts_get_type poldek_ts_set_type poldek_ts_setf poldek_ts_setop -poldek_ts_type poldek_ts_vconfigure poldek_util_expand_vars poldek_util_expand_env_vars ================================================================ Index: poldek/poldek/log.c diff -u poldek/poldek/log.c:1.30 poldek/poldek/log.c:1.31 --- poldek/poldek/log.c:1.30 Tue Nov 1 20:17:45 2005 +++ poldek/poldek/log.c Sun Jul 1 23:04:26 2007 @@ -1,5 +1,5 @@ /* - Copyright (C) 2000 - 2002 Pawel A. Gajda <[EMAIL PROTECTED]> + Copyright (C) 2000 - 2007 Pawel A. Gajda <[EMAIL PROTECTED]> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2 as @@ -32,15 +32,78 @@ int poldek_VERBOSE = 0; -static int say_goodbye(const char *msg); -int (*poldek_log_say_goodbye)(const char *msg) = say_goodbye; +static int default_say_goodbye(const char *msg); +int (*poldek_log_say_goodbye)(const char *msg) = default_say_goodbye; -static char l_prefix[64]; -static FILE *l_stream = NULL, *l_filestream = NULL; +static void do_log(unsigned flags, int pri, const char *fmt, va_list args); +static void vlog_file(void *stream, int pri, const char *fmt, va_list args); +static void vlog_tty(void *foo, int pri, const char *fmt, va_list args); -static void vlog_tty(int pri, const char *fmt, va_list args); -static int say_goodbye(const char *msg) +struct poldek_log_appender { + int flags; /* LOGTTY for TTY-output */ + void *_data; + void (*dolog)(void *, int pri, const char *fmt, va_list args); + void (*free)(void *); + char name[0]; <<Diff was trimmed, longer than 597 lines>> ---- CVS-web: http://cvs.pld-linux.org/poldek/poldek/README?r1=1.10&r2=1.11&f=u http://cvs.pld-linux.org/poldek/poldek/ask.c?r1=1.8&r2=1.9&f=u http://cvs.pld-linux.org/poldek/poldek/install-dist.c?r1=1.9&r2=1.10&f=u http://cvs.pld-linux.org/poldek/poldek/lib_init.c?r1=1.81&r2=1.82&f=u http://cvs.pld-linux.org/poldek/poldek/libpoldek.sym?r1=1.29&r2=1.30&f=u http://cvs.pld-linux.org/poldek/poldek/log.c?r1=1.30&r2=1.31&f=u http://cvs.pld-linux.org/poldek/poldek/log.h?r1=1.25&r2=1.26&f=u http://cvs.pld-linux.org/poldek/poldek/misc.c?r1=1.57&r2=1.58&f=u http://cvs.pld-linux.org/poldek/poldek/misc.h?r1=1.36&r2=1.37&f=u http://cvs.pld-linux.org/poldek/poldek/pkgmisc.c?r1=1.8&r2=1.9&f=u http://cvs.pld-linux.org/poldek/poldek/pkgmisc.h?r1=1.15&r2=1.16&f=u http://cvs.pld-linux.org/poldek/poldek/pkgset-load.c?r1=1.56&r2=1.57&f=u http://cvs.pld-linux.org/poldek/poldek/pkgset.c?r1=1.94&r2=1.95&f=u http://cvs.pld-linux.org/poldek/poldek/poldek.h?r1=1.35&r2=1.36&f=u http://cvs.pld-linux.org/poldek/poldek/poldek_intern.h?r1=1.10&r2=1.11&f=u http://cvs.pld-linux.org/poldek/poldek/poldek_ts.c?r1=1.65&r2=1.66&f=u http://cvs.pld-linux.org/poldek/poldek/poldek_ts.h?r1=1.39&r2=1.40&f=u http://cvs.pld-linux.org/poldek/poldek/uninstall.c?r1=1.43&r2=1.44&f=u http://cvs.pld-linux.org/poldek/poldek/cli/install.c?r1=1.44&r2=1.45&f=u http://cvs.pld-linux.org/poldek/poldek/cli/libpoclidek.sym?r1=1.6&r2=1.7&f=u http://cvs.pld-linux.org/poldek/poldek/cli/ls.c?r1=1.24&r2=1.25&f=u http://cvs.pld-linux.org/poldek/poldek/cli/poclidek.h?r1=1.6&r2=1.7&f=u http://cvs.pld-linux.org/poldek/poldek/cli/rcmd.c?r1=1.1&r2=1.2&f=u http://cvs.pld-linux.org/poldek/poldek/cli/uninstall.c?r1=1.31&r2=1.32&f=u http://cvs.pld-linux.org/poldek/poldek/install/conflicts.c?r1=1.5&r2=1.6&f=u http://cvs.pld-linux.org/poldek/poldek/install/icaps.c?r1=1.4&r2=1.5&f=u http://cvs.pld-linux.org/poldek/poldek/install/ictx.c?r1=1.2&r2=1.3&f=u http://cvs.pld-linux.org/poldek/poldek/install/ictx.h?r1=1.5&r2=1.6&f=u http://cvs.pld-linux.org/poldek/poldek/install/install.c?r1=1.9&r2=1.10&f=u http://cvs.pld-linux.org/poldek/poldek/install/mark.c?r1=1.3&r2=1.4&f=u http://cvs.pld-linux.org/poldek/poldek/install/misc.c?r1=1.11&r2=1.12&f=u http://cvs.pld-linux.org/poldek/poldek/install/process.c?r1=1.1&r2=1.2&f=u http://cvs.pld-linux.org/poldek/poldek/install/requirements.c?r1=1.10&r2=1.11&f=u http://cvs.pld-linux.org/poldek/poldek/pkgdir/pkgdir_dirindex.c?r1=1.14&r2=1.15&f=u http://cvs.pld-linux.org/poldek/poldek/pkgdir/source.c?r1=1.43&r2=1.44&f=u http://cvs.pld-linux.org/poldek/poldek/pkgdir/pdir/save.c?r1=1.19&r2=1.20&f=u http://cvs.pld-linux.org/poldek/poldek/pkgdir/pndir/save.c?r1=1.32&r2=1.33&f=u http://cvs.pld-linux.org/poldek/poldek/pm/pset/pset.c?r1=1.23&r2=1.24&f=u http://cvs.pld-linux.org/poldek/poldek/pm/rpm/install.c?r1=1.6&r2=1.7&f=u http://cvs.pld-linux.org/poldek/poldek/pm/rpm/rpm.c?r1=1.18&r2=1.19&f=u http://cvs.pld-linux.org/poldek/poldek/pm/rpm/rpminstall.c?r1=1.21&r2=1.22&f=u http://cvs.pld-linux.org/poldek/poldek/python/poldek.py?r1=1.11&r2=1.12&f=u http://cvs.pld-linux.org/poldek/poldek/python/poldekmod.i?r1=1.13&r2=1.14&f=u _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
