diff options
author | Ludovic Courtès <ludo@gnu.org> | 2008-04-06 20:04:40 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2008-04-06 20:04:40 +0000 |
commit | 07e3e560823cf63b9d971bece6c86cecd294cf5b (patch) | |
tree | 7172f4ee0ff721f01a49e8f0de642f060ebf493a /pkgs/applications/version-management/cvsps | |
parent | 1923d17a7d48f4a439026791a241c2f8c48b3ca3 (diff) | |
download | nixlib-07e3e560823cf63b9d971bece6c86cecd294cf5b.tar nixlib-07e3e560823cf63b9d971bece6c86cecd294cf5b.tar.gz nixlib-07e3e560823cf63b9d971bece6c86cecd294cf5b.tar.bz2 nixlib-07e3e560823cf63b9d971bece6c86cecd294cf5b.tar.lz nixlib-07e3e560823cf63b9d971bece6c86cecd294cf5b.tar.xz nixlib-07e3e560823cf63b9d971bece6c86cecd294cf5b.tar.zst nixlib-07e3e560823cf63b9d971bece6c86cecd294cf5b.zip |
cvsps: Add Debian patches.
svn path=/nixpkgs/trunk/; revision=11472
Diffstat (limited to 'pkgs/applications/version-management/cvsps')
4 files changed, 172 insertions, 0 deletions
diff --git a/pkgs/applications/version-management/cvsps/01_ignoretrunk.dpatch b/pkgs/applications/version-management/cvsps/01_ignoretrunk.dpatch new file mode 100644 index 000000000000..39185ae2bfa6 --- /dev/null +++ b/pkgs/applications/version-management/cvsps/01_ignoretrunk.dpatch @@ -0,0 +1,23 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_ignoretrunk.dpatch by <crafterm@debian.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Ignore TRUNK branch name patch + +@DPATCH@ + +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 +@@ -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); + } diff --git a/pkgs/applications/version-management/cvsps/02_dynamicbufferalloc.dpatch b/pkgs/applications/version-management/cvsps/02_dynamicbufferalloc.dpatch new file mode 100644 index 000000000000..70ffb02a21aa --- /dev/null +++ b/pkgs/applications/version-management/cvsps/02_dynamicbufferalloc.dpatch @@ -0,0 +1,125 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 02_dynamicbufferalloc.dpatch by <crafterm@debian.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Dynamic buffer allocation + +@DPATCH@ + +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-07-26 15:21:29.716569500 -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)<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 @@ + 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-07-26 15:22:02.558230700 -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+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/pkgs/applications/version-management/cvsps/03_diffoptstypo.dpatch b/pkgs/applications/version-management/cvsps/03_diffoptstypo.dpatch new file mode 100644 index 000000000000..eb3818ed97e9 --- /dev/null +++ b/pkgs/applications/version-management/cvsps/03_diffoptstypo.dpatch @@ -0,0 +1,19 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 03_diffoptstypo.dpatch by <crafterm@debian.org> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Diff opts typo fix + +@DPATCH@ + +--- cvsps-2.1-orig/cvsps.1 2005-05-26 05:39:40.000000000 +0200 ++++ cvsps-2.1/cvsps.1 2005-07-28 15:17:48.885112048 +0200 +@@ -83,7 +83,7 @@ + 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 diff --git a/pkgs/applications/version-management/cvsps/default.nix b/pkgs/applications/version-management/cvsps/default.nix index 52ea9e9feea2..bea43f77d069 100644 --- a/pkgs/applications/version-management/cvsps/default.nix +++ b/pkgs/applications/version-management/cvsps/default.nix @@ -7,6 +7,11 @@ stdenv.mkDerivation rec { sha256 = "0nh7q7zcmagx0i63h6fqqkkq9i55k77myvb8h6jn2f266f5iklwi"; }; + # Patches from Debian's `cvsps-2.1-4'. + patches = [ ./01_ignoretrunk.dpatch + ./02_dynamicbufferalloc.dpatch + ./03_diffoptstypo.dpatch ]; + buildInputs = [ cvs zlib ]; installPhase = "make install prefix=$out"; |