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