the Fink project is an effort to port
popular Unix programs to Mac OS X
Package: cvsps
Version: 2.1
Revision: 2
Source: http://www.cobite.com/cvsps/cvsps-%v.tar.gz
Source-MD5: bde2110ed9f5d14de8f8cb04e9d596fe
BuildDepends: fink (>= 0.24.12-1)
# Patch based on fixes to cvsps-2.1 (soon to be Debian bug reports)
PatchFile: %n.patch
PatchFile-MD5: edf4c833f2ae45d6d6d6366bcc6c846c
CompileScript: <<
make
<<
DocFiles: README COPYING CHANGELOG
Description: Generate 'patchset' info from CVS repository
DescDetail: <<
CVSps is a program for generating 'patchset' information from a CVS
repository. A patchset in this case is defined as a set of changes
made to a collection of files, and all committed at the same time
(using a 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.
<<
License: GPL
Homepage: http://www.cobite.com/cvsps/
Maintainer: David D. Kilzer
diff -urN cvsps-2.1.orig/cache.c cvsps-2.1/cache.c
--- cvsps-2.1.orig/cache.c 2005-05-25 22:39:40.000000000 -0500
+++ cvsps-2.1/cache.c 2005-06-19 21:41:25.000000000 -0500
@@ -108,10 +108,19 @@
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 @@
else
{
/* Make sure we have enough in the buffer */
- if (strlen(logbuff)+strlen(buff)
+ int len = strlen(buff);
+ if (strlen(logbuff) + len >= LOG_STR_MAX)
+ {
+ logbufflen += (len > LOG_STR_MAX ? len : 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 @@
out_close:
fclose(fp);
out:
+ free(logbuff);
return cache_date;
}
diff -urN cvsps-2.1.orig/cvsps.c cvsps-2.1/cvsps.c
--- cvsps-2.1.orig/cvsps.c 2005-05-25 22:39:40.000000000 -0500
+++ cvsps-2.1/cvsps.c 2005-06-19 23:07:20.000000000 -0500
@@ -265,7 +265,8 @@
PatchSetMember * psm = NULL;
char datebuff[20];
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];
@@ -273,6 +274,12 @@
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";
@@ -480,24 +487,22 @@
*/
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
- * 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 : 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);
@@ -2104,6 +2109,11 @@
if (!get_branch_ext(rev, eot, &leaf))
{
+ if (strcmp(tag, "TRUNK") == 0)
+ {
+ debug(DEBUG_STATUS, "ignoring the TRUNK branch/tag");
+ return;
+ }
debug(DEBUG_APPERROR, "malformed revision");
exit(1);
}
Package: cvsps
Version: 2.1
Revision: 2
Source: http://www.cobite.com/cvsps/cvsps-%v.tar.gz
Source-MD5: bde2110ed9f5d14de8f8cb04e9d596fe
BuildDepends: fink (>= 0.24.12-1)
# Patch based on fixes to cvsps-2.1 (soon to be Debian bug reports)
PatchFile: %n.patch
PatchFile-MD5: edf4c833f2ae45d6d6d6366bcc6c846c
CompileScript: <<
make
<<
DocFiles: README COPYING CHANGELOG
Description: Generate 'patchset' info from CVS repository
DescDetail: <<
CVSps is a program for generating 'patchset' information from a CVS
repository. A patchset in this case is defined as a set of changes
made to a collection of files, and all committed at the same time
(using a 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.
<<
License: GPL
Homepage: http://www.cobite.com/cvsps/
Maintainer: David D. Kilzer
diff -urN cvsps-2.1.orig/cache.c cvsps-2.1/cache.c
--- cvsps-2.1.orig/cache.c 2005-05-25 22:39:40.000000000 -0500
+++ cvsps-2.1/cache.c 2005-06-19 21:41:25.000000000 -0500
@@ -108,10 +108,19 @@
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 @@
else
{
/* Make sure we have enough in the buffer */
- if (strlen(logbuff)+strlen(buff)
+ int len = strlen(buff);
+ if (strlen(logbuff) + len >= LOG_STR_MAX)
+ {
+ logbufflen += (len > LOG_STR_MAX ? len : 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 @@
out_close:
fclose(fp);
out:
+ free(logbuff);
return cache_date;
}
diff -urN cvsps-2.1.orig/cvsps.c cvsps-2.1/cvsps.c
--- cvsps-2.1.orig/cvsps.c 2005-05-25 22:39:40.000000000 -0500
+++ cvsps-2.1/cvsps.c 2005-06-19 23:07:20.000000000 -0500
@@ -265,7 +265,8 @@
PatchSetMember * psm = NULL;
char datebuff[20];
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];
@@ -273,6 +274,12 @@
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";
@@ -480,24 +487,22 @@
*/
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
- * 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 : 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);
@@ -2104,6 +2109,11 @@
if (!get_branch_ext(rev, eot, &leaf))
{
+ if (strcmp(tag, "TRUNK") == 0)
+ {
+ debug(DEBUG_STATUS, "ignoring the TRUNK branch/tag");
+ return;
+ }
debug(DEBUG_APPERROR, "malformed revision");
exit(1);
}