packages: pdksh/pdksh-debian.patch, pdksh/pdksh.spec, pdksh/pdksh-child_max...
arekm
arekm at pld-linux.org
Tue Jul 28 10:37:45 CEST 2009
Author: arekm Date: Tue Jul 28 08:37:45 2009 GMT
Module: packages Tag: HEAD
---- Log message:
- rel 54; really update patches
---- Files affected:
packages/pdksh:
pdksh-debian.patch (1.6 -> 1.7) , pdksh.spec (1.122 -> 1.123) , pdksh-child_max.patch (1.1 -> NONE) (REMOVED)
---- Diffs:
================================================================
Index: packages/pdksh/pdksh-debian.patch
diff -u packages/pdksh/pdksh-debian.patch:1.6 packages/pdksh/pdksh-debian.patch:1.7
--- packages/pdksh/pdksh-debian.patch:1.6 Tue Jul 28 09:49:59 2009
+++ packages/pdksh/pdksh-debian.patch Tue Jul 28 10:37:39 2009
@@ -1,2774 +1,2711 @@
---- pdksh-5.2.14.orig/debian/patches/001_upstream-readonly-vars.patch
-+++ pdksh-5.2.14/debian/patches/001_upstream-readonly-vars.patch
-@@ -0,0 +1,172 @@
-+ * Applied patch from upstream ftp site to fix problem with readonly
-+ variables (closes: #57727).
-+Index: pdksh/jobs.c
-+===================================================================
-+--- pdksh.orig/jobs.c 2008-04-15 20:47:52.000000000 +0200
-++++ pdksh/jobs.c 2008-04-15 20:48:46.000000000 +0200
-+@@ -219,8 +219,7 @@
-+ static void check_job ARGS((Job *j));
-+ static void put_job ARGS((Job *j, int where));
-+ static void remove_job ARGS((Job *j, const char *where));
-+-static void kill_job ARGS((Job *j));
-+-static void fill_command ARGS((char *c, int len, struct op *t));
-++static int kill_job ARGS((Job *j, int sig));
-+
-+ /* initialize job control */
-+ void
-+@@ -294,10 +293,17 @@
-+ && procpid == kshpid)))))
-+ {
-+ killed = 1;
-+- killpg(j->pgrp, SIGHUP);
-++ if (j->pgrp == 0)
-++ kill_job(j, SIGHUP);
-++ else
-++ killpg(j->pgrp, SIGHUP);
-+ #ifdef JOBS
-+- if (j->state == PSTOPPED)
-+- killpg(j->pgrp, SIGCONT);
-++ if (j->state == PSTOPPED) {
-++ if (j->pgrp == 0)
-++ kill_job(j, SIGCONT);
-++ else
-++ killpg(j->pgrp, SIGCONT);
-++ }
-+ #endif /* JOBS */
-+ }
-+ }
-+@@ -497,7 +503,7 @@
-+ put_job(j, PJ_PAST_STOPPED);
-+ }
-+
-+- fill_command(p->command, sizeof(p->command), t);
-++ snptreef(p->command, sizeof(p->command), "%T", t);
-+
-+ /* create child process */
-+ forksleep = 1;
-+@@ -508,7 +514,7 @@
-+ forksleep <<= 1;
-+ }
-+ if (i < 0) {
-+- kill_job(j);
-++ kill_job(j, SIGKILL);
-+ remove_job(j, "fork failed");
-+ #ifdef NEED_PGRP_SYNC
-+ if (j_sync_open) {
-+@@ -823,11 +829,10 @@
-+ }
-+
-+ if (j->pgrp == 0) { /* started when !Flag(FMONITOR) */
-+- for (p=j->proc_list; p != (Proc *) 0; p = p->next)
-+- if (kill(p->pid, sig) < 0) {
-+- bi_errorf("%s: %s", cp, strerror(errno));
-+- rv = 1;
-+- }
-++ if (kill_job(j, sig) < 0) {
-++ bi_errorf("%s: %s", cp, strerror(errno));
-++ rv = 1;
-++ }
-+ } else {
-+ #ifdef JOBS
-+ if (j->state == PSTOPPED && (sig == SIGTERM || sig == SIGHUP))
-+@@ -1825,50 +1830,17 @@
-+ *
-+ * If jobs are compiled in then this routine expects sigchld to be blocked.
-+ */
-+-static void
-+-kill_job(j)
-++static int
-++kill_job(j, sig)
-+ Job *j;
-++ int sig;
-+ {
-+ Proc *p;
-++ int rval = 0;
-+
-+ for (p = j->proc_list; p != (Proc *) 0; p = p->next)
-+ if (p->pid != 0)
-+- (void) kill(p->pid, SIGKILL);
-+-}
-+-
-+-/* put a more useful name on a process than snptreef does (in certain cases) */
-+-static void
-+-fill_command(c, len, t)
-+- char *c;
-+- int len;
-+- struct op *t;
-+-{
-+- int alen;
-+- char **ap;
-+-
-+- if (t->type == TEXEC || t->type == TCOM) {
-+- /* Causes problems when set -u is in effect, can also
-+- cause problems when array indices evaluated (may have
-+- side effects, eg, assignment, incr, etc.)
-+- if (t->type == TCOM)
-+- ap = eval(t->args, DOBLANK|DONTRUNCOMMAND);
-+- else
-+- */
-+- ap = t->args;
-+- --len; /* save room for the null */
-+- while (len > 0 && *ap != (char *) 0) {
-+- alen = strlen(*ap);
-+- if (alen > len)
-+- alen = len;
-+- memcpy(c, *ap, alen);
-+- c += alen;
-+- len -= alen;
-+- if (len > 0) {
-+- *c++ = ' '; len--;
-+- }
-+- ap++;
-+- }
-+- *c = '\0';
-+- } else
-+- snptreef(c, len, "%T", t);
-++ if (kill(p->pid, sig) < 0)
-++ rval = -1;
-++ return rval;
-+ }
-+Index: pdksh/shf.c
-+===================================================================
-+--- pdksh.orig/shf.c 2008-04-15 20:47:52.000000000 +0200
-++++ pdksh/shf.c 2008-04-15 20:48:46.000000000 +0200
-+@@ -355,7 +355,6 @@
-+ shf->rp = nbuf + (shf->rp - shf->buf);
-+ shf->wp = nbuf + (shf->wp - shf->buf);
-+ shf->rbsize += shf->wbsize;
-+- shf->wbsize += shf->wbsize;
-+ shf->wnleft += shf->wbsize;
-+ shf->wbsize *= 2;
-+ shf->buf = nbuf;
-+Index: pdksh/var.c
-+===================================================================
-+--- pdksh.orig/var.c 2008-04-15 20:47:52.000000000 +0200
-++++ pdksh/var.c 2008-04-15 20:48:46.000000000 +0200
-+@@ -353,7 +353,9 @@
-+ const char *s;
-+ int error_ok;
-+ {
-+- if (vq->flag & RDONLY) {
-++ int no_ro_check = error_ok & 0x4;
-++ error_ok &= ~0x4;
-++ if ((vq->flag & RDONLY) && !no_ro_check) {
-+ warningf(TRUE, "%s: is read only", vq->name);
-+ if (!error_ok)
-+ errorf(null);
-+@@ -715,13 +717,13 @@
-+ if (val != NULL) {
-+ if (vp->flag&INTEGER) {
-+ /* do not zero base before assignment */
-+- setstr(vp, val, KSH_UNWIND_ERROR);
-++ setstr(vp, val, KSH_UNWIND_ERROR | 0x4);
-+ /* Done after assignment to override default */
-+ if (base > 0)
-+ vp->type = base;
-+ } else
-+ /* setstr can't fail (readonly check already done) */
-+- setstr(vp, val, KSH_RETURN_ERROR);
-++ setstr(vp, val, KSH_RETURN_ERROR | 0x4);
-+ }
-+
-+ /* only x[0] is ever exported, so use vpbase */
---- pdksh-5.2.14.orig/debian/patches/002_upstream-set-e.patch
-+++ pdksh-5.2.14/debian/patches/002_upstream-set-e.patch
-@@ -0,0 +1,92 @@
-+ * Applied patch from upstream author which fixed problem with 'set -e'
-+ (closes: #71256).
-+Index: pdksh/exec.c
-+===================================================================
-+--- pdksh.orig/exec.c 2008-04-15 20:46:56.000000000 +0200
-++++ pdksh/exec.c 2008-04-15 20:49:17.000000000 +0200
-+@@ -76,6 +76,7 @@
-+ {
-+ int i;
-+ volatile int rv = 0;
-++ volatile int rv_prop = 0; /* rv being propogated or newly generated? */
-+ int pv[2];
-+ char ** volatile ap;
-+ char *s, *cp;
-+@@ -157,6 +158,7 @@
-+
-+ case TPAREN:
-+ rv = execute(t->left, flags|XFORK);
-++ rv_prop = 1;
-+ break;
-+
-+ case TPIPE:
-+@@ -275,6 +277,7 @@
-+ rv = execute(t->right, flags & XERROK);
-+ else
-+ flags |= XERROK;
-++ rv_prop = 1;
-+ break;
-+
-+ case TBANG:
-+@@ -323,6 +326,7 @@
-+ }
-+ }
-+ rv = 0; /* in case of a continue */
-++ rv_prop = 1;
-+ if (t->type == TFOR) {
-+ while (*ap != NULL) {
-+ setstr(global(t->str), *ap++, KSH_UNWIND_ERROR);
-+@@ -334,6 +338,7 @@
-+ for (;;) {
-+ if (!(cp = do_selectargs(ap, is_first))) {
-+ rv = 1;
-++ rv_prop = 0;
-+ break;
-+ }
-+ is_first = FALSE;
-+@@ -365,6 +370,7 @@
-+ rv = 0; /* in case of a continue */
-+ while ((execute(t->left, XERROK) == 0) == (t->type == TWHILE))
-+ rv = execute(t->right, flags & XERROK);
-++ rv_prop = 1;
-+ break;
-+
-+ case TIF:
-+@@ -374,6 +380,7 @@
-+ rv = execute(t->left, XERROK) == 0 ?
-+ execute(t->right->left, flags & XERROK) :
-+ execute(t->right->right, flags & XERROK);
-++ rv_prop = 1;
-+ break;
-+
-+ case TCASE:
-+@@ -386,10 +393,12 @@
-+ break;
-+ Found:
-+ rv = execute(t->left, flags & XERROK);
-++ rv_prop = 1;
-+ break;
-+
-+ case TBRACE:
-+ rv = execute(t->left, flags & XERROK);
-++ rv_prop = 1;
-+ break;
-+
-+ case TFUNCT:
-+@@ -401,6 +410,7 @@
-+ * (allows "ls -l | time grep foo").
-+ */
-+ rv = timex(t, flags & ~XEXEC);
-++ rv_prop = 1;
-+ break;
-+
-+ case TEXEC: /* an eval'd TCOM */
-+@@ -428,7 +438,7 @@
-+ quitenv(); /* restores IO */
-+ if ((flags&XEXEC))
-+ unwind(LEXIT); /* exit child */
-+- if (rv != 0 && !(flags & XERROK)) {
-++ if (rv != 0 && !rv_prop && !(flags & XERROK)) {
-+ if (Flag(FERREXIT))
-+ unwind(LERROR);
-+ trapsig(SIGERR_);
---- pdksh-5.2.14.orig/debian/patches/010_OpenBSD-patches.patch
-+++ pdksh-5.2.14/debian/patches/010_OpenBSD-patches.patch
-@@ -0,0 +1,1112 @@
-+ * Applied some patches from OpenBSD:
-+ + Use mkstemp to create temporary files
-+ + Kill -s now works
-+ + Escapes special characters in tab completitions
-+ + Introduce FSH flag, which is set when the shell is called as `sh'.
-+ + tree.c: Fix three off-by-one errors.
-+ + c_sh.c: don't set close-on-exec flag on file descriptors in FSH mode
-+ (closes: #154540). Documented the change in ksh(1).
-+ + history.c: Compare the return from mmap with MAP_FAILED, do not cast it
-+ to int and compare with -1.
-+ + main.c: set edit mode to emacs by default, may be overridden by the
-+ environment or the user. Also, we want tab completion in vi by default.
-+ + misc.c: use strtol() in getn().
-+ + emacs.c:
-+ - bind TAB (^I) to complete-list by default
-+ - complete-list first completes; if that does not work, it lists
-+ - fix a memleak in do_complete()
-+ + edit.c:
-+ - completion now works after '=' (dd), and ':' (ssh) and ` (backtick)
-+ - add '#' to the list of escaped characters during vi/emacs filename
-+ completion
-+
-+ + exec.c: Found and fixed yet another problem with `set -e' scripts
-+ (see a changelog entry for 5.2.14-3), which caused `dpkg-buildpackage -B'
-+ to fail on systems where /bin/sh is ksh.
-+
-+ + c_sh.c: Make `set' command return 0 always, not only in the POSIX mode.
-+ According to Jeff Sheinberg <jeffsh at localnet.com>, this new behaviour
-+ is more compatible with SUSv2 standard and other shells (esp. ksh93)
-+ (closes: #118476). Documented the change in ksh(1) man page.
-+
-+ + c_test.c: The special case code for "test -x" over NFS was
-+ incorrect. The right thing to do is to try access(2) first
-+ (since that occurs on the NFS server side) and only check for the
-+ absence of an execute bit when access(2) succeeds.
-+ + edit.c: in word location, fix forward scanning so it correctly
-+ account for any escaped char and not only spaces. for "foo
-+ (bar.a)" and "foo (bar a)", cd foo\ \(bar.<tab> will correctly
-+ expand to foo\ \(bar.a\).
-+
-+ + vi.c: Buffers are not strings so use memcpy(), not strlcpy() to copy
-+ them. Also add some further bounds checks in the name of paranoia.
-+ + exec.c: Unbreak parameter assignment when calling bourne style
-+ functions.
-+ + exec.c: For the >& and <& operators, add a check for "dup from" ==
-+ "dup to" and just return success if they are the same. Fixes the
-+ "ls 2>&2" problem.
-+ + eval.c, exec.c, io.c, jobs.c: If "from fd" == "to fd" don't call
-+ dup2() or close "from fd".
-+
-+Index: pdksh/c_ksh.c
-+===================================================================
-+--- pdksh.orig/c_ksh.c 2008-04-15 20:46:56.000000000 +0200
-++++ pdksh/c_ksh.c 2008-04-15 20:49:47.000000000 +0200
-+@@ -1208,6 +1208,7 @@
-+ builtin_opt.optarg);
-+ return 1;
-+ }
-++ break;
-+ case '?':
-+ return 1;
-+ }
-+Index: pdksh/edit.c
-+===================================================================
-+--- pdksh.orig/edit.c 2008-04-15 20:46:56.000000000 +0200
-++++ pdksh/edit.c 2008-04-15 20:49:47.000000000 +0200
-+@@ -15,6 +15,9 @@
-+ # include <sys/stream.h> /* needed for <sys/ptem.h> */
-+ # include <sys/ptem.h> /* needed for struct winsize */
-+ #endif /* OS_SCO */
-++#ifdef DEBIAN
-++#include <sys/ioctl.h>
-++#endif /* DEBIAN */
-+ #include <ctype.h>
-+ #include "ksh_stat.h"
-+
-+@@ -552,7 +555,11 @@
-+ {
-+ char *toglob;
-+ char **words;
-++#ifndef DEBIAN
-+ int nwords;
-++#else /* DEBIAN */ /* patch from OpenBSD */
-++ int nwords, i, idx, escaping;
-++#endif /* DEBIAN */
-+ XPtrV w;
-+ struct source *s, *sold;
-+
-+@@ -561,6 +568,22 @@
-+
-+ toglob = add_glob(str, slen);
-+
-++#ifdef DEBIAN /* patch from OpenBSD */
-++ /* remove all escaping backward slashes */
-++ escaping = 0;
-++ for(i = 0, idx = 0; toglob[i]; i++) {
-++ if (toglob[i] == '\\' && !escaping) {
-++ escaping = 1;
-++ continue;
-++ }
-++
-++ toglob[idx] = toglob[i];
-++ idx++;
-++ if (escaping) escaping = 0;
-++ }
-++ toglob[idx] = '\0';
-++
-++#endif /* DEBIAN */
-+ /*
-+ * Convert "foo*" (toglob) to an array of strings (words)
-+ */
-+@@ -722,7 +745,12 @@
-+ return nwords;
-+ }
-+
-++#ifndef DEBIAN
-+ #define IS_WORDC(c) !(ctype(c, C_LEX1) || (c) == '\'' || (c) == '"')
-++#else /* patch from OpenBSD */
-++#define IS_WORDC(c) !( ctype(c, C_LEX1) || (c) == '\'' || (c) == '"' \
-++ || (c) == '`' || (c) == '=' || (c) == ':' )
-++#endif
-+
-+ static int
-+ x_locate_word(buf, buflen, pos, startp, is_commandp)
-+@@ -747,11 +775,23 @@
-+ /* Keep going backwards to start of word (has effect of allowing
-+ * one blank after the end of a word)
-+ */
-++#ifndef DEBIAN
-+ for (; start > 0 && IS_WORDC(buf[start - 1]); start--)
-++#else /* DEBIAN */ /* patch from OpenBSD */
-++ for (; (start > 0 && IS_WORDC(buf[start - 1]))
-++ || (start > 1 && buf[start-2] == '\\'); start--)
-++#endif /* DEBIAN */
-+ ;
-+ /* Go forwards to end of word */
-++#ifndef DEBIAN
-+ for (end = start; end < buflen && IS_WORDC(buf[end]); end++)
-+ ;
-++#else /* DEBIAN */ /* patch from OpenBSD */
-++ for (end = start; end < buflen && IS_WORDC(buf[end]); end++) {
-++ if (buf[end] == '\\' && (end+1) < buflen)
-++ end++;
-++ }
-++#endif /* DEBIAN */
-+
-+ if (is_commandp) {
-+ int iscmd;
-+@@ -759,7 +799,11 @@
-+ /* Figure out if this is a command */
-+ for (p = start - 1; p >= 0 && isspace(buf[p]); p--)
-+ ;
-++#ifndef DEBIAN
-+ iscmd = p < 0 || strchr(";|&()", buf[p]);
-++#else /* DEBIAN */ /* patch from OpenBSD */
-++ iscmd = p < 0 || strchr(";|&()`", buf[p]);
-++#endif
-+ if (iscmd) {
-+ /* If command has a /, path, etc. is not searched;
-+ * only current directory is searched, which is just
-+@@ -961,6 +1005,9 @@
-+ {
-+ const char *sp, *p;
-+ char *xp;
-++#ifdef DEBIAN /* patch from OpenBSD */
-++ int staterr;
-++#endif /* DEBIAN */
-+ int pathlen;
-+ int patlen;
-+ int oldsize, newsize, i, j;
-+@@ -995,13 +1042,23 @@
-+ memcpy(xp, pat, patlen);
-+
-+ oldsize = XPsize(*wp);
-++#ifndef DEBIAN
-+ glob_str(Xstring(xs, xp), wp, 0);
-++#else /* DEBIAN */ /* patch from OpenBSD */
-++ glob_str(Xstring(xs, xp), wp, 1); /* mark dirs */
-++#endif
-+ newsize = XPsize(*wp);
-+
-+ /* Check that each match is executable... */
-+ words = (char **) XPptrv(*wp);
-+ for (i = j = oldsize; i < newsize; i++) {
-++#ifndef DEBIAN
-+ if (search_access(words[i], X_OK, (int *) 0) >= 0) {
-++#else /* DEBIAN */ /* patch from OpenBSD */
-++ staterr = 0;
-++ if ((search_access(words[i], X_OK, &staterr) >= 0)
-++ || (staterr == EISDIR)) {
-++#endif
-+ words[j] = words[i];
-+ if (!(flags & XCF_FULLPATH))
-+ memmove(words[j], words[j] + pathlen,
-+@@ -1018,4 +1075,42 @@
-+ Xfree(xs, xp);
-+ }
-+
-++#ifdef DEBIAN /* patch from OpenBSD */
-++/*
-++ * if argument string contains any special characters, they will
-++ * be escaped and the result will be put into edit buffer by
-++ * keybinding-specific function
-++ */
-++int
-++x_escape(s, len, putbuf_func)
-++ const char *s;
-++ size_t len;
-++ int putbuf_func ARGS((const char *s, size_t len));
-++{
-++ size_t add, wlen;
-++ const char *ifs = str_val(local("IFS", 0));
-++ int rval=0;
-++
-++ for (add = 0, wlen = len; wlen - add > 0; add++) {
-++ if (strchr("\\$(){}*&;#|<>\"'`", s[add]) || strchr(ifs, s[add])) {
-++ if (putbuf_func(s, add) != 0) {
-++ rval = -1;
-++ break;
-++ }
-++
-++ putbuf_func("\\", 1);
-++ putbuf_func(&s[add], 1);
-++
-++ add++;
-++ wlen -= add;
-++ s += add;
-++ add = -1; /* after the increment it will go to 0 */
-++ }
-++ }
-++ if (wlen > 0 && rval == 0)
-++ rval = putbuf_func(s, wlen);
-++
-++ return (rval);
-++}
-++#endif /* DEBIAN */
-+ #endif /* EDIT */
-+Index: pdksh/edit.h
-+===================================================================
-+--- pdksh.orig/edit.h 2008-04-15 20:46:56.000000000 +0200
-++++ pdksh/edit.h 2008-04-15 20:49:47.000000000 +0200
-+@@ -55,6 +55,9 @@
-+ int x_longest_prefix ARGS((int nwords, char *const *words));
-+ int x_basename ARGS((const char *s, const char *se));
-+ void x_free_words ARGS((int nwords, char **words));
-++#ifdef DEBIAN /* patch from OpenBSD */
-++int x_escape ARGS((const char *, size_t, int (*)(const char *s, size_t len)));
-++#endif /* DEBIAN */
-+ /* emacs.c */
-+ int x_emacs ARGS((char *buf, size_t len));
-+ void x_init_emacs ARGS((void));
-+Index: pdksh/emacs.c
-+===================================================================
-+--- pdksh.orig/emacs.c 2008-04-15 20:46:56.000000000 +0200
-++++ pdksh/emacs.c 2008-04-15 20:49:47.000000000 +0200
-+@@ -138,6 +138,10 @@
-+ static int x_e_getc ARGS((void));
-+ static void x_e_putc ARGS((int c));
-+ static void x_e_puts ARGS((const char *s));
-++#ifdef DEBIAN /* patch from OpenBSD */
-++static int x_comment ARGS((int c));
-++static int x_emacs_putbuf ARGS((const char *s, size_t len));
-++#endif /* DEBIAN */
-+ static int x_fold_case ARGS((int c));
-+ static char *x_lastcp ARGS((void));
-+ static void do_complete ARGS((int flags, Comp_type type));
-+@@ -269,6 +273,9 @@
-+ { XFUNC_transpose, 0, CTRL('T') },
-+ #endif
-+ { XFUNC_complete, 1, CTRL('[') },
-++#ifdef DEBIAN /* patch from OpenBSD */
-++ { XFUNC_comp_list, 0, CTRL('I') },
-++#endif /* DEBIAN */
-+ { XFUNC_comp_list, 1, '=' },
-+ { XFUNC_enumerate, 1, '?' },
-+ { XFUNC_expand, 1, '*' },
-+@@ -313,6 +320,9 @@
-+ * entries.
-+ */
-+ { XFUNC_meta2, 1, '[' },
-++#ifdef DEBIAN /* patch from OpenBSD */
-++ { XFUNC_meta2, 1, 'O' },
-++#endif /* DEBIAN */
-+ { XFUNC_prev_com, 2, 'A' },
-+ { XFUNC_next_com, 2, 'B' },
-+ { XFUNC_mv_forw, 2, 'C' },
-+@@ -468,6 +478,23 @@
-+ return 0;
-+ }
-+
-++#ifdef DEBIAN /* patch from OpenBSD */
-++/*
-++ * this is used for x_escape() in do_complete()
-++ */
-++static int
-++x_emacs_putbuf(s, len)
-++ const char *s;
-++ size_t len;
-++{
-++ int rval;
-++
-++ if ((rval = x_do_ins(s, len)) != 0)
-++ return (rval);
-++ return (rval);
-++}
-++
-++#endif /* DEBIAN */
-+ static int
-+ x_del_back(c)
-+ int c;
-+@@ -1485,7 +1512,11 @@
-+ for (j = 0; j < X_TABSZ; j++)
-+ x_tab[i][j] = XFUNC_error;
-+ for (i = 0; i < NELEM(x_defbindings); i++)
-++#ifndef DEBIAN
-+ x_tab[x_defbindings[i].xdb_tab][x_defbindings[i].xdb_char]
-++#else /* DEBIAN */ /* patch from OpenBSD */
-++ x_tab[(unsigned char)x_defbindings[i].xdb_tab][x_defbindings[i].xdb_char]
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/pdksh/pdksh-debian.patch?r1=1.6&r2=1.7&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/pdksh/pdksh.spec?r1=1.122&r2=1.123&f=u
More information about the pld-cvs-commit
mailing list