poldek: poldek/README, poldek/ask.c, poldek/install-dist.c, poldek...
mis
mis at pld-linux.org
Sun Jul 1 23:04:31 CEST 2007
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 <mis at pld.org.pl> or to
+Please send comments, bug reports, etc to me <mis att pld-linux.org> or to
program mailing list <poldek at pld-linux.org>. To subscribe send empty
mail to <poldek-subscribe at pld-linux.org>
-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 <mis at k2.net.pl>
+ Copyright (C) 2000 - 2007 Pawel A. Gajda <mis at pld-linux.org>
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 <mis at pld.org.pl>
+ Copyright (C) 2000 - 2007 Pawel A. Gajda <mis at pld.org.pl>
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 <mis at pld-linux.org>\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 <mis at k2.net.pl>
+ Copyright (C) 2000 - 2007 Pawel A. Gajda <mis at pld-linux.org>
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
More information about the pld-cvs-commit
mailing list