Date: Sun, 15 May 2011 23:10:14 +0000 (UTC) From: Dag-Erling Smorgrav <des@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r221977 - in user/des/svnsup: bin/distill include/svnsup lib/libsvnsup Message-ID: <201105152310.p4FNAEYS056515@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: des Date: Sun May 15 23:10:13 2011 New Revision: 221977 URL: http://svn.freebsd.org/changeset/base/221977 Log: Add support for writing the delta to a file instead of stdout. In svnsup_delta_shorten_path(), fix the case where the path is empty, i.e. the delta is relative to the root of the repo. Modified: user/des/svnsup/bin/distill/distill.c user/des/svnsup/include/svnsup/delta.h user/des/svnsup/include/svnsup/error.h user/des/svnsup/lib/libsvnsup/svnsup_delta.c Modified: user/des/svnsup/bin/distill/distill.c ============================================================================== --- user/des/svnsup/bin/distill/distill.c Sun May 15 22:46:45 2011 (r221976) +++ user/des/svnsup/bin/distill/distill.c Sun May 15 23:10:13 2011 (r221977) @@ -43,7 +43,7 @@ int extended; /* generated extended de int verbose; /* show messages from libsvn */ static int -distill(const char *url, unsigned long revision) +distill(const char *url, unsigned long revision, const char *ofn) { apr_hash_t *config; apr_pool_t *pool; @@ -94,7 +94,7 @@ distill(const char *url, unsigned long r ++subdir; /* XXX create delta */ - err = svnsup_create_delta(&sd); + err = svnsup_create_delta(&sd, ofn); SVNSUP_SVNSUP_ERROR(err, "svnsup_delta_create()"); err = svnsup_delta_root(sd, root); SVNSUP_SVNSUP_ERROR(err, "svnsup_delta_root()"); @@ -126,7 +126,7 @@ static void usage(void) { - fprintf(stderr, "usage: svnsup-distill [-dev] url rev\n"); + fprintf(stderr, "usage: svnsup-distill [-dev] [-o file] url rev\n"); exit(1); } @@ -134,12 +134,13 @@ int main(int argc, char *argv[]) { apr_status_t status; + const char *ofn = NULL; const char *url; char *end, *revstr; unsigned long rev; int opt, ret; - while ((opt = getopt(argc, argv, "dev")) != -1) + while ((opt = getopt(argc, argv, "deo:v")) != -1) switch (opt) { case 'd': ++debug; @@ -147,6 +148,9 @@ main(int argc, char *argv[]) case 'e': ++extended; break; + case 'o': + ofn = optarg; + break; case 'v': ++verbose; break; @@ -172,7 +176,7 @@ main(int argc, char *argv[]) if (status != APR_SUCCESS) return (1); - ret = distill(url, rev); + ret = distill(url, rev, ofn); apr_terminate(); return (ret); Modified: user/des/svnsup/include/svnsup/delta.h ============================================================================== --- user/des/svnsup/include/svnsup/delta.h Sun May 15 22:46:45 2011 (r221976) +++ user/des/svnsup/include/svnsup/delta.h Sun May 15 23:10:13 2011 (r221977) @@ -33,7 +33,7 @@ typedef struct svnsup_delta *svnsup_delta_t; typedef struct svnsup_delta_file *svnsup_delta_file_t; -int svnsup_create_delta(svnsup_delta_t *); +int svnsup_create_delta(svnsup_delta_t *, const char *); int svnsup_close_delta(svnsup_delta_t); int svnsup_delta_root(svnsup_delta_t, const char *); Modified: user/des/svnsup/include/svnsup/error.h ============================================================================== --- user/des/svnsup/include/svnsup/error.h Sun May 15 22:46:45 2011 (r221976) +++ user/des/svnsup/include/svnsup/error.h Sun May 15 23:10:13 2011 (r221977) @@ -32,6 +32,7 @@ typedef enum svnsup_err { SVNSUP_ERR_NONE, + SVNSUP_ERR_FILE, SVNSUP_ERR_MEMORY, SVNSUP_ERR_UNKNOWN, SVNSUP_ERR_MAX, Modified: user/des/svnsup/lib/libsvnsup/svnsup_delta.c ============================================================================== --- user/des/svnsup/lib/libsvnsup/svnsup_delta.c Sun May 15 22:46:45 2011 (r221976) +++ user/des/svnsup/lib/libsvnsup/svnsup_delta.c Sun May 15 23:10:13 2011 (r221977) @@ -90,6 +90,10 @@ static const char * svnsup_delta_shorten_path(svnsup_delta_t sd, const char *pn) { + assert(sd->path != NULL); + assert(pn != NULL); + if (*sd->path == '\0') + return (pn); assert(strstr(pn, sd->path) == pn); pn += strlen(sd->path); assert(*pn == '/' || *pn == '\0'); @@ -102,13 +106,18 @@ svnsup_delta_shorten_path(svnsup_delta_t * Create an svnsup delta. */ int -svnsup_create_delta(svnsup_delta_t *sdp) +svnsup_create_delta(svnsup_delta_t *sdp, const char *ofn) { svnsup_delta_t sd; if ((sd = calloc(1, sizeof *sd)) == NULL) return (SVNSUP_ERR_MEMORY); - sd->f = stdout; + if (ofn == NULL) { + sd->f = stdout; + } else if ((sd->f = fopen(ofn, "w")) == NULL) { + free(sd); + return (SVNSUP_ERR_FILE); + } *sdp = sd; return (SVNSUP_ERR_NONE); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105152310.p4FNAEYS056515>