summaryrefslogtreecommitdiff
path: root/extra/cvsps
diff options
context:
space:
mode:
Diffstat (limited to 'extra/cvsps')
-rw-r--r--extra/cvsps/PKGBUILD37
-rw-r--r--extra/cvsps/call-cvs-q-option.patch34
-rw-r--r--extra/cvsps/cvsps-2.2b1-bufferoverflow.patch65
-rw-r--r--extra/cvsps/cvsps-2.2b1-dynamic-logbuf.patch133
-rw-r--r--extra/cvsps/cvsps-2.2b1-man.patch29
-rw-r--r--extra/cvsps/seperate-CPPFLAGS.patch29
-rw-r--r--extra/cvsps/use-INADDR_NONE-define.patch28
-rw-r--r--extra/cvsps/use-__linux__-define.patch36
-rw-r--r--extra/cvsps/use-offsetof-macro.patch32
9 files changed, 415 insertions, 8 deletions
diff --git a/extra/cvsps/PKGBUILD b/extra/cvsps/PKGBUILD
index 72a624c20..650259bc1 100644
--- a/extra/cvsps/PKGBUILD
+++ b/extra/cvsps/PKGBUILD
@@ -1,24 +1,45 @@
-# $Id: PKGBUILD 149335 2012-02-06 20:45:16Z stephane $
+# $Id: PKGBUILD 151779 2012-03-02 17:28:27Z dan $
# Maintainer:
# Contributor: Jeff 'codemac' Mickey <jeff@archlinux.org>
pkgname=cvsps
-pkgver=2.1
-pkgrel=4
+pkgver=2.2b1
+pkgrel=1
pkgdesc="Generating 'patchset' information from a CVS repository"
url="http://www.cobite.com/cvsps/"
license=('GPL')
arch=('i686' 'x86_64')
depends=('zlib')
-source=("http://www.cobite.com/${pkgname}/${pkgname}-${pkgver}.tar.gz")
-md5sums=('bde2110ed9f5d14de8f8cb04e9d596fe')
+source=("http://www.cobite.com/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ call-cvs-q-option.patch
+ cvsps-2.2b1-bufferoverflow.patch
+ cvsps-2.2b1-dynamic-logbuf.patch
+ cvsps-2.2b1-man.patch
+ seperate-CPPFLAGS.patch
+ use-INADDR_NONE-define.patch
+ use-__linux__-define.patch
+ use-offsetof-macro.patch)
+md5sums=('997580e8e283034995b9209076858c68'
+ '06324c5e3c321126b76dc97fc6c00b34'
+ '2910012a11a24d5e4192cf9eae7dd259'
+ '970566460e72cb159426965d6e5763b3'
+ 'f9d2ee40e52ecd5096fa9a885418eee1'
+ '6baafbd7512aa52e1b83ed0bead32a6e'
+ 'a3a81481c07dcc676f5a82ae07e8ee89'
+ '9e2763315cbda02665c47827d38df459'
+ '8f7e6f09f42f76deeefe24bbfa509150')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "$srcdir/$pkgname-$pkgver"
+ for file in ${source[@]}; do
+ if [[ $file == *.patch ]]; then
+ patch -Np1 < ../$file
+ fi
+ done
make prefix=/usr
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
- make prefix="${pkgdir}/usr" install
+ cd "$srcdir/$pkgname-$pkgver"
+ make prefix="$pkgdir/usr" install
}
diff --git a/extra/cvsps/call-cvs-q-option.patch b/extra/cvsps/call-cvs-q-option.patch
new file mode 100644
index 000000000..a754b7c60
--- /dev/null
+++ b/extra/cvsps/call-cvs-q-option.patch
@@ -0,0 +1,34 @@
+From 49d7a3e44b54f18b0e2762d8dbb087ad4c2f0276 Mon Sep 17 00:00:00 2001
+From: Yann Dirson <ydirson@altern.org>
+Date: Thu, 15 Jun 2006 09:48:08 +0200
+Subject: [PATCH] Call cvs with -q flag when fetching the log
+
+This gets rid of the neverending output polution cvs sends to stderr,
+which is mostly useless and has a strong potential to hide real problem
+reports
+---
+ cvsps.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cvsps.c b/cvsps.c
+index d94dfe0..be700ba 100644
+--- a/cvsps.c
++++ b/cvsps.c
+@@ -301,12 +301,12 @@ static void load_from_cvs()
+ * which is necessary to fill in the pre_rev stuff for a
+ * PatchSetMember
+ */
+- snprintf(cmd, BUFSIZ, "cvs %s %s %s -d '%s<;%s' %s", compress_arg, norc, ltype, date_str, date_str, use_rep_buff);
++ snprintf(cmd, BUFSIZ, "cvs %s %s -q %s -d '%s<;%s' %s", compress_arg, norc, ltype, date_str, date_str, use_rep_buff);
+ }
+ else
+ {
+ date_str[0] = 0;
+- snprintf(cmd, BUFSIZ, "cvs %s %s %s %s", compress_arg, norc, ltype, use_rep_buff);
++ snprintf(cmd, BUFSIZ, "cvs %s %s -q %s %s", compress_arg, norc, ltype, use_rep_buff);
+ }
+
+ debug(DEBUG_STATUS, "******* USING CMD %s", cmd);
+--
+1.6.5.GIT
+
diff --git a/extra/cvsps/cvsps-2.2b1-bufferoverflow.patch b/extra/cvsps/cvsps-2.2b1-bufferoverflow.patch
new file mode 100644
index 000000000..2a82cd4e0
--- /dev/null
+++ b/extra/cvsps/cvsps-2.2b1-bufferoverflow.patch
@@ -0,0 +1,65 @@
+--- cvsps-2.2b1/cvsps.c 2010-09-07 18:13:42.760727491 +0200
++++ cvsps-2.2b1_/cvsps.c 2010-09-07 18:05:11.083729441 +0200
+@@ -1065,17 +1065,16 @@ static CvsFile * parse_file(const char *
+ {
+ CvsFile * retval;
+ char fn[PATH_MAX];
+- int len = strlen(buff + 10);
++ size_t len = strlen(buff + 10);
+ char * p;
+
+ /* once a single file has been parsed ok we set this */
+ static int path_ok;
+-
++
+ /* chop the ",v" string and the "LF" */
+ len -= 3;
+ memcpy(fn, buff + 10, len);
+ fn[len] = 0;
+-
+ if (strncmp(fn, strip_path, strip_path_len) != 0)
+ {
+ /* if the very first file fails the strip path,
+@@ -1096,10 +1095,10 @@ static CvsFile * parse_file(const char *
+
+ while ((p = strstr(p, repository_path)))
+ lastp = p++;
+-
++
+ if (lastp)
+ {
+- int len = strlen(repository_path);
++ size_t len = strlen(repository_path);
+ memcpy(strip_path, fn, lastp - fn + len + 1);
+ strip_path_len = lastp - fn + len + 1;
+ strip_path[strip_path_len] = 0;
+@@ -1114,16 +1113,26 @@ static CvsFile * parse_file(const char *
+ *
+ * For now just ignore such files
+ */
+- debug(DEBUG_APPMSG1, "WARNING: file %s doesn't match strip_path %s. ignoring",
++ debug(DEBUG_APPMSG1, "WARNING: file %s doesn't match strip_path %s. ignoring",
+ fn, strip_path);
+ return NULL;
+ }
+
+ ok:
+- path_ok = 1;
+-
++ /*
++ fix for rhbz#576076
++ ./cvsps --norc -q --cvs-direct -u -A --root :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot NSS
++ */
++ if(len <= strip_path_len)
++ {
++ debug(DEBUG_APPMSG1, "WARNING: file %s doesn't match strip_path %s. ignoring",
++ fn, strip_path);
++ return NULL;
++ }
+ /* remove from beginning the 'strip_path' string */
+ len -= strip_path_len;
++ path_ok = 1;
++
+ memmove(fn, fn + strip_path_len, len);
+ fn[len] = 0;
+
diff --git a/extra/cvsps/cvsps-2.2b1-dynamic-logbuf.patch b/extra/cvsps/cvsps-2.2b1-dynamic-logbuf.patch
new file mode 100644
index 000000000..03e4e7672
--- /dev/null
+++ b/extra/cvsps/cvsps-2.2b1-dynamic-logbuf.patch
@@ -0,0 +1,133 @@
+# From: http://ydirson.free.fr/soft/git/cvsps.git
+
+commit 76a9c2aaa0d2957de0bc8f0c0b994abfd1645a50
+Author: David D. Kilzer <ddkilzer@kilzer.net>
+Date: Mon Jun 20 01:04:34 2005 +0200
+
+ Dynamically allocate the log buffer to prevent warning messages
+
+ On anoncvs.opensource.apple.com (Apple's anonymous CVS server for
+ WebKit), some very long log entries were included in CVS. I got tired
+ of cvsps-2.1 truncating them, so I made the 'logbuff' buffer be
+ dynamically allocated.
+
+diff --git i/cache.c w/cache.c
+index 4c51cf7..01a8ed3 100644
+--- i/cache.c
++++ w/cache.c
+@@ -108,10 +108,19 @@ time_t read_cache()
+ int tag_flags = 0;
+ char branchbuff[LOG_STR_MAX] = "";
+ int branch_add = 0;
+- char logbuff[LOG_STR_MAX] = "";
++ int logbufflen = LOG_STR_MAX + 1;
++ char * logbuff = malloc(logbufflen);
+ time_t cache_date = -1;
+ int read_version;
+
++ if (logbuff == NULL)
++ {
++ debug(DEBUG_SYSERROR, "could not malloc %d bytes for logbuff in read_cache", logbufflen);
++ exit(1);
++ }
++
++ logbuff[0] = 0;
++
+ if (!(fp = cache_open("r")))
+ goto out;
+
+@@ -299,8 +308,19 @@ time_t read_cache()
+ else
+ {
+ /* Make sure we have enough in the buffer */
+- if (strlen(logbuff)+strlen(buff)<LOG_STR_MAX)
+- strcat(logbuff, buff);
++ int len = strlen(buff);
++ if (strlen(logbuff) + len >= LOG_STR_MAX)
++ {
++ logbufflen += (len >= LOG_STR_MAX ? (len+1) : LOG_STR_MAX);
++ char * newlogbuff = realloc(logbuff, logbufflen);
++ if (newlogbuff == NULL)
++ {
++ debug(DEBUG_SYSERROR, "could not realloc %d bytes for logbuff in read_cache", logbufflen);
++ exit(1);
++ }
++ logbuff = newlogbuff;
++ }
++ strcat(logbuff, buff);
+ }
+ break;
+ case CACHE_NEED_PS_MEMBERS:
+@@ -332,6 +352,7 @@ time_t read_cache()
+ out_close:
+ fclose(fp);
+ out:
++ free(logbuff);
+ return cache_date;
+ }
+
+diff --git i/cvsps.c w/cvsps.c
+index f0e7d29..db28d7c 100644
+--- i/cvsps.c
++++ w/cvsps.c
+@@ -269,7 +269,8 @@ static void load_from_cvs()
+ PatchSetMember * psm = NULL;
+ char datebuff[26];
+ char authbuff[AUTH_STR_MAX];
+- char logbuff[LOG_STR_MAX + 1];
++ int logbufflen = LOG_STR_MAX + 1;
++ char * logbuff = malloc(logbufflen);
+ int loglen = 0;
+ int have_log = 0;
+ char cmd[BUFSIZ];
+@@ -277,6 +278,12 @@ static void load_from_cvs()
+ char use_rep_buff[PATH_MAX];
+ char * ltype;
+
++ if (logbuff == NULL)
++ {
++ debug(DEBUG_SYSERROR, "could not malloc %d bytes for logbuff in load_from_cvs", logbufflen);
++ exit(1);
++ }
++
+ if (!no_rlog && !test_log_file && cvs_check_cap(CAP_HAVE_RLOG))
+ {
+ ltype = "rlog";
+@@ -484,25 +491,22 @@ static void load_from_cvs()
+ */
+ if (have_log || !is_revision_metadata(buff))
+ {
+- /* if the log buffer is full, that's it.
+- *
+- * Also, read lines (fgets) always have \n in them
+- * (unless truncation happens)
+- * which we count on. So if truncation happens,
+- * be careful to put a \n on.
+- *
+- * Buffer has LOG_STR_MAX + 1 for room for \0 if
+- * necessary
+- */
+- if (loglen < LOG_STR_MAX)
++ /* If the log buffer is full, try to reallocate more. */
++ if (loglen < logbufflen)
+ {
+ int len = strlen(buff);
+
+- if (len >= LOG_STR_MAX - loglen)
++ if (len >= logbufflen - loglen)
+ {
+- debug(DEBUG_APPMSG1, "WARNING: maximum log length exceeded, truncating log");
+- len = LOG_STR_MAX - loglen;
+- buff[len - 1] = '\n';
++ debug(DEBUG_STATUS, "reallocating logbufflen to %d bytes for file %s", logbufflen, file->filename);
++ logbufflen += (len >= LOG_STR_MAX ? (len+1) : LOG_STR_MAX);
++ char * newlogbuff = realloc(logbuff, logbufflen);
++ if (newlogbuff == NULL)
++ {
++ debug(DEBUG_SYSERROR, "could not realloc %d bytes for logbuff in load_from_cvs", logbufflen);
++ exit(1);
++ }
++ logbuff = newlogbuff;
+ }
+
+ debug(DEBUG_STATUS, "appending %s to log", buff);
diff --git a/extra/cvsps/cvsps-2.2b1-man.patch b/extra/cvsps/cvsps-2.2b1-man.patch
new file mode 100644
index 000000000..3e6816fd5
--- /dev/null
+++ b/extra/cvsps/cvsps-2.2b1-man.patch
@@ -0,0 +1,29 @@
+diff -up cvsps-2.2b1/cvsps.1~ cvsps-2.2b1/cvsps.1
+--- cvsps-2.2b1/cvsps.1~ 2008-04-02 04:18:44.000000000 +0300
++++ cvsps-2.2b1/cvsps.1 2010-05-18 21:10:39.000000000 +0300
+@@ -11,7 +11,7 @@ to a collection of files, and all commit
+ single 'cvs commit' command). This information is valuable to seeing the
+ big picture of the evolution of a cvs project. While cvs tracks revision
+ information, it is often difficult to see what changes were committed
+-'atomically' to the repository.
++\'atomically' to the repository.
+ .SH OPTIONS
+ .TP
+ .B \-h
+@@ -83,7 +83,7 @@ some hacks which are not generally appli
+ disable the use of rlog internally. Note: rlog is
+ required for stable PatchSet numbering. Use with care.
+ .TP
+-.B \-\-diffs\-opts <option string>
++.B \-\-diff\-opts <option string>
+ send a custom set of options to diff, for example to increase
+ the number of context lines, or change the diff format.
+ .TP
+@@ -103,6 +103,7 @@ Override the setting of CVSROOT (overrid
+ .TP
+ .B \-q
+ Be quiet about warnings.
++.TP
+ .B \-A
+ Show ancestor branch when a new branch is found.
+ .TP
diff --git a/extra/cvsps/seperate-CPPFLAGS.patch b/extra/cvsps/seperate-CPPFLAGS.patch
new file mode 100644
index 000000000..a29923b49
--- /dev/null
+++ b/extra/cvsps/seperate-CPPFLAGS.patch
@@ -0,0 +1,29 @@
+From 5991e8b0acf1dbe3487c1f246a1d215b346a61f0 Mon Sep 17 00:00:00 2001
+From: Yann Dirson <ydirson@altern.org>
+Date: Sat, 17 Jun 2006 00:03:41 +0200
+Subject: [PATCH] Separate CPPFLAGS from CFLAGS
+
+This allows to set CGLAGS on command-line without interfering with
+preprocessor options
+---
+ Makefile | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 2e34ec6..05ca856 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,8 @@
+ MAJOR=2
+ MINOR=1
+ CC?=gcc
+-CFLAGS?=-g -O2 -Wall
+-CFLAGS+=-I. -DVERSION=\"$(MAJOR).$(MINOR)\"
++CFLAGS?=-g -O2 -Wall
++CPPFLAGS?=-I. -DVERSION=\"$(MAJOR).$(MINOR)\"
+ prefix?=/usr/local
+ OBJS=\
+ cbtcommon/debug.o\
+--
+1.6.5.GIT
+
diff --git a/extra/cvsps/use-INADDR_NONE-define.patch b/extra/cvsps/use-INADDR_NONE-define.patch
new file mode 100644
index 000000000..a1a529187
--- /dev/null
+++ b/extra/cvsps/use-INADDR_NONE-define.patch
@@ -0,0 +1,28 @@
+From c498733b4283b3987bdca6949a5e304244b64cfc Mon Sep 17 00:00:00 2001
+From: Pavel Roskin <proski@gnu.org>
+Date: Tue, 13 Jun 2006 00:32:33 -0400
+Subject: [PATCH] Use INADDR_NONE instead of -1 to check inet_addr() result
+
+INADDR_NONE is not equal to -1 on 64-bit systems.
+
+Signed-off-by: Pavel Roskin <proski@gnu.org>
+---
+ cbtcommon/tcpsocket.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/cbtcommon/tcpsocket.c b/cbtcommon/tcpsocket.c
+index a174007..f31060e 100644
+--- a/cbtcommon/tcpsocket.c
++++ b/cbtcommon/tcpsocket.c
+@@ -198,7 +198,7 @@ convert_address(long *dest, const char *addr_str)
+ memcpy(dest, &ip.s_addr, sizeof(ip.s_addr));
+ }
+ #else
+- if ( (*dest = inet_addr(addr_str)) != -1)
++ if ( (*dest = inet_addr(addr_str)) != INADDR_NONE)
+ {
+ /* nothing */
+ }
+--
+1.6.5.GIT
+
diff --git a/extra/cvsps/use-__linux__-define.patch b/extra/cvsps/use-__linux__-define.patch
new file mode 100644
index 000000000..132629593
--- /dev/null
+++ b/extra/cvsps/use-__linux__-define.patch
@@ -0,0 +1,36 @@
+From 4598349e81068d4af9a893c6433958cf9b4fa835 Mon Sep 17 00:00:00 2001
+From: Pavel Roskin <proski@gnu.org>
+Date: Tue, 13 Jun 2006 00:32:31 -0400
+Subject: [PATCH] Use __linux__ conditional, not LINUX.
+
+__linux__ is defined automatically, LINUX is not.
+
+Signed-off-by: Pavel Roskin <proski@gnu.org>
+---
+ cbtcommon/tcpsocket.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cbtcommon/tcpsocket.c b/cbtcommon/tcpsocket.c
+index 27cc13a..a174007 100644
+--- a/cbtcommon/tcpsocket.c
++++ b/cbtcommon/tcpsocket.c
+@@ -185,14 +185,14 @@ tcp_connect(int sockfd, const char *rem_addr, unsigned short port)
+ int
+ convert_address(long *dest, const char *addr_str)
+ {
+-#ifdef LINUX
++#ifdef __linux__
+ struct in_addr ip;
+ #endif
+ int retval = 0;
+ char errstr[256];
+
+ /* first try converting "numbers and dots" notation */
+-#ifdef LINUX
++#ifdef __linux__
+ if ( inet_aton(addr_str, &ip) )
+ {
+ memcpy(dest, &ip.s_addr, sizeof(ip.s_addr));
+--
+1.6.5.GIT
+
diff --git a/extra/cvsps/use-offsetof-macro.patch b/extra/cvsps/use-offsetof-macro.patch
new file mode 100644
index 000000000..ff2961f07
--- /dev/null
+++ b/extra/cvsps/use-offsetof-macro.patch
@@ -0,0 +1,32 @@
+From 4fad63b82746ea571edc2ec1100ad3208cf5af08 Mon Sep 17 00:00:00 2001
+From: Eric Hopper <hopper@omnifarious.org>
+Date: Fri, 29 Jun 2007 01:30:09 -0700
+Subject: [PATCH] Use offsetof macro instead of unportable pointer arithmetic.
+
+---
+ cbtcommon/list.h | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/cbtcommon/list.h b/cbtcommon/list.h
+index 4ee245d..cf4b3ed 100644
+--- a/cbtcommon/list.h
++++ b/cbtcommon/list.h
+@@ -23,6 +23,7 @@
+ */
+
+ #include "inline.h"
++#include <stddef.h>
+
+ struct list_head {
+ struct list_head *next, *prev;
+@@ -107,6 +108,6 @@ static INLINE void list_splice(struct list_head *list, struct list_head *head)
+ }
+
+ #define list_entry(ptr, type, member) \
+- ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
++ ((type *)((char *)(ptr)-offsetof(type, member)))
+
+ #endif /* _COMMON_LIST_H */
+--
+1.6.5.GIT
+