From owner-svn-src-user@FreeBSD.ORG Mon Oct 12 16:47:55 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 939BF106566B; Mon, 12 Oct 2009 16:47:55 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 81DD18FC19; Mon, 12 Oct 2009 16:47:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n9CGltIX077340; Mon, 12 Oct 2009 16:47:55 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n9CGlttl077323; Mon, 12 Oct 2009 16:47:55 GMT (envelope-from des@svn.freebsd.org) Message-Id: <200910121647.n9CGlttl077323@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 12 Oct 2009 16:47:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r197987 - in user/des/svnsup: . src src/apply src/distill X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Oct 2009 16:47:55 -0000 Author: des Date: Mon Oct 12 16:47:55 2009 New Revision: 197987 URL: http://svn.freebsd.org/changeset/base/197987 Log: Witness the birth of svnsup! Added: user/des/svnsup/ (props changed) user/des/svnsup/Makefile.am (contents, props changed) user/des/svnsup/autogen.des (contents, props changed) user/des/svnsup/autogen.sh (contents, props changed) user/des/svnsup/configure.ac (contents, props changed) user/des/svnsup/src/ (props changed) user/des/svnsup/src/Makefile.am (contents, props changed) user/des/svnsup/src/apply/ (props changed) user/des/svnsup/src/apply/Makefile.am (contents, props changed) user/des/svnsup/src/apply/main.c (contents, props changed) user/des/svnsup/src/distill/ (props changed) user/des/svnsup/src/distill/Makefile.am (contents, props changed) user/des/svnsup/src/distill/auth.c (contents, props changed) user/des/svnsup/src/distill/distill.c (contents, props changed) user/des/svnsup/src/distill/distill.h (contents, props changed) user/des/svnsup/src/distill/editor.c (contents, props changed) user/des/svnsup/src/distill/error.c (contents, props changed) user/des/svnsup/src/distill/log.c (contents, props changed) user/des/svnsup/src/distill/ra.c (contents, props changed) user/des/svnsup/src/distill/txdelta.c (contents, props changed) Added: user/des/svnsup/Makefile.am ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/Makefile.am Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,3 @@ +# $Id$ + +SUBDIRS = src Added: user/des/svnsup/autogen.des ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/autogen.des Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,5 @@ +#!/bin/sh + +sh -x ./autogen.sh +set -x +./configure --enable-wall --enable-wextra --enable-werror "$@" Added: user/des/svnsup/autogen.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/autogen.sh Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,11 @@ +#!/bin/sh +# +# $Id$ +# + +set -e + +aclocal +autoheader +automake --add-missing --copy --foreign +autoconf Added: user/des/svnsup/configure.ac ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/configure.ac Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,126 @@ +# +# $Id$ +# +AC_PREREQ([2.59]) +AC_INIT([svnsup], [1.0], [des@des.no]) +AC_CONFIG_SRCDIR([src/distill/distill.c]) +AM_CONFIG_HEADER([config.h]) + +AC_LANG(C) +AC_C_CONST +AM_INIT_AUTOMAKE + +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET + +PKG_PROG_PKG_CONFIG + +AC_ARG_ENABLE(debugging, + AS_HELP_STRING([--enable-debugging], + [enable debugging (default is NO)]), + [ + CFLAGS="${CFLAGS} -O0 -g" + CPPFLAGS="${CPPFLAGS} -DDEBUG" + ] +) + +AC_ARG_ENABLE(wall, + AS_HELP_STRING([--enable-wall], + [gcc only: compile with -Wall (default is NO)]), + AS_IF([test x"${GCC+set}" = xset], [ + CFLAGS="${CFLAGS} -Wall" + ], [ + AC_MSG_WARN([-Wall is only supported on gcc]) + ]) +) + +AC_ARG_ENABLE(wextra, + AS_HELP_STRING([--enable-wextra], + [gcc only: compile with -Wextra (default is NO)]), + AS_IF([test x"${GCC+set}" = xset], [ + CFLAGS="${CFLAGS} -Wextra" + ], [ + AC_MSG_WARN([-Wextra is only supported on gcc]) + ]) +) + +AC_ARG_ENABLE(werror, + AS_HELP_STRING([--enable-werror], + [gcc only: compile with -Werror (default is NO)]), + AS_IF([test x"${GCC+set}" = xset], [ + CFLAGS="${CFLAGS} -Werror" + ], [ + AC_MSG_WARN([-Werror is only supported on gcc]) + ]) +) + +# +# APR +# +PKG_CHECK_MODULES([APR_1], [apr-1]) + +# +# Subersion remote access library +# +saved_CPPFLAGS="${CPPFLAGS}" +CPPFLAGS="${APR_1_CFLAGS}" +AC_CHECK_HEADER([subversion-1/svn_ra.h], [], [ + AC_MSG_ERROR([cannot proceed without ]) +]) +CPPFLAGS="${saved_CPPFLAGS}" +saved_LIBS="${LIBS}" +LIBS="" +AC_CHECK_LIB([svn_ra-1], [svn_ra_version], [], [ + AC_MSG_ERROR([cannot proceed without libsvn_ra-1]) +]) +SVN_RA_1_LIBS="${LIBS}" +LIBS="${saved_LIBS}" +AC_SUBST([SVN_RA_1_LIBS]) + +# +# Subversion delta library +# +saved_CPPFLAGS="${CPPFLAGS}" +CPPFLAGS="${APR_1_CFLAGS}" +AC_CHECK_HEADER([subversion-1/svn_delta.h], [], [ + AC_MSG_ERROR([cannot proceed without ]) +]) +CPPFLAGS="${saved_CPPFLAGS}" +saved_LIBS="${LIBS}" +AC_CHECK_LIB([svn_delta-1], [svn_delta_version], [], [ + AC_MSG_ERROR([cannot proceed without libsvn_delta-1]) +]) +SVN_DELTA_1_LIBS="${LIBS}" +LIBS="${saved_LIBS}" +AC_SUBST([SVN_DELTA_1_LIBS]) + +# +# Subversion client library +# +saved_CPPFLAGS="${CPPFLAGS}" +CPPFLAGS="${APR_1_CFLAGS}" +AC_CHECK_HEADER([subversion-1/svn_client.h], [], [ + AC_MSG_ERROR([cannot proceed without ]) +]) +CPPFLAGS="${saved_CPPFLAGS}" +saved_LIBS="${LIBS}" +AC_CHECK_LIB([svn_client-1], [svn_client_version], [], [ + AC_MSG_ERROR([cannot proceed without libsvn_client-1]) +]) +SVN_CLIENT_1_LIBS="${LIBS}" +LIBS="${saved_LIBS}" +AC_SUBST([SVN_CLIENT_1_LIBS]) + +# +# Output +# +AC_CONFIG_FILES([ + Makefile + src/Makefile + src/distill/Makefile + src/apply/Makefile +]) +AC_OUTPUT Added: user/des/svnsup/src/Makefile.am ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/Makefile.am Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,3 @@ +# $Id$ + +SUBDIRS = distill apply Added: user/des/svnsup/src/apply/Makefile.am ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/apply/Makefile.am Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,8 @@ +# $Id$ + +bin_PROGRAMS = svnsup-apply + +svnsup_apply_SOURCES = \ + main.c + +svnsup_apply_LDADD = Added: user/des/svnsup/src/apply/main.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/apply/main.c Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +int +main(void) +{ + return (0); +} Added: user/des/svnsup/src/distill/Makefile.am ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/Makefile.am Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,24 @@ +# $Id$ + +bin_PROGRAMS = svnsup-distill + +noinst_HEADERS = \ + distill.h + +svnsup_distill_SOURCES = \ + auth.c \ + distill.c \ + editor.c \ + error.c \ + log.c \ + ra.c \ + txdelta.c + +svnsup_distill_CPPFLAGS = \ + ${APR_1_CFLAGS} + +svnsup_distill_LDADD = \ + ${APR_1_LDADD} \ + ${SVN_DELTA_1_LIBS} \ + ${SVN_CLIENT_1_LIBS} \ + ${SVN_RA_1_LIBS} Added: user/des/svnsup/src/distill/auth.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/auth.c Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,53 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "distill.h" + +svn_error_t * +username_prompt_callback(svn_auth_cred_username_t **cred, + void *baton, + const char *realm, + svn_boolean_t may_save, + apr_pool_t *pool) +{ + + (void)cred; + (void)baton; + (void)realm; + (void)may_save; + (void)pool; + fprintf(stderr, "%s(%s)\n", __func__, realm); + return (SVN_NO_ERROR); +} Added: user/des/svnsup/src/distill/distill.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/distill.c Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,137 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#include "distill.h" + +int debug; +int verbose; + +static int +distill(const char *url, unsigned long revision) +{ + apr_pool_t *pool; + apr_status_t status; + svn_auth_provider_object_t *auth_provider; + apr_array_header_t *auth_providers; + svn_ra_session_t *ra_session; + svn_error_t *error; + + /* our root pool */ + status = apr_pool_create(&pool, NULL); + SVNSUP_APR_ERROR(status, "apr_pool_create()"); + + /* set up our authentication system */ + /* XXX check for errors */ + auth_providers = apr_array_make(pool, 1, sizeof auth_provider); + svn_client_get_username_prompt_provider(&auth_provider, + username_prompt_callback, NULL, 0, pool); + APR_ARRAY_PUSH(auth_providers, svn_auth_provider_object_t *) = + auth_provider; + svn_auth_open(&ra_callbacks.auth_baton, auth_providers, pool); + + /* open a connection to the repo */ + error = svn_ra_open3(&ra_session, url, NULL, &ra_callbacks, + NULL, NULL, pool); + SVNSUP_SVN_ERROR(error, "svn_ra_open3()"); + + /* get revision metadata */ + error = svn_ra_get_log2(ra_session, NULL, revision, revision, 0, + TRUE, TRUE, FALSE, NULL, log_entry_receiver, NULL, pool); + SVNSUP_SVN_ERROR(error, "svn_ra_get_log()"); + + /* replay the requested revision */ + error = svn_ra_replay(ra_session, revision, revision - 1, TRUE, + &delta_editor, NULL, pool); + SVNSUP_SVN_ERROR(error, "svn_ra_replay()"); + + /* clean up */ + apr_pool_destroy(pool); + return (0); +} + +static void +usage(void) +{ + + fprintf(stderr, "usage: svnsup-distill [-v] url rev\n"); + exit(1); +} + +int +main(int argc, char *argv[]) +{ + apr_status_t status; + const char *url; + char *end, *revstr; + unsigned long rev; + int opt, ret; + + while ((opt = getopt(argc, argv, "dv")) != -1) + switch (opt) { + case 'd': + ++debug; + break; + case 'v': + ++verbose; + break; + default: + usage(); + } + + argc -= optind; + argv += optind; + + if (argc != 2) + usage(); + + url = argv[0]; + revstr = argv[1]; + if (*revstr == 'r') + ++revstr; + rev = strtoul(revstr, &end, 10); + if (rev == 0 || end == revstr || *end != '\0') + usage(); + + status = apr_initialize(); + if (status != APR_SUCCESS) + return (1); + + ret = distill(url, rev); + + apr_terminate(); + return (ret); +} Added: user/des/svnsup/src/distill/distill.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/distill.h Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,104 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifndef DISTILL_H_INCLUDED +#define DISTILL_H_INCLUDED + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +extern int debug; +extern int verbose; + +typedef struct svnsup_where { + const char *file; + int line; + const char *func; +} svnsup_where_t; +#define SVNSUP_WHERE \ + &((struct svnsup_where){ __FILE__, __LINE__, __func__ }) + +/* apr errors */ +void svnsup_apr_error(svnsup_where_t *, apr_status_t, const char *, ...); +#define SVNSUP_APR_ERROR(status, ...) \ + do { \ + if ((status) != APR_SUCCESS) \ + svnsup_apr_error(SVNSUP_WHERE, \ + (status), __VA_ARGS__); \ + } while (0) + +/* svn errors */ +void svnsup_svn_error(svnsup_where_t *, svn_error_t *, const char *, ...); +#define SVNSUP_SVN_ERROR(error, ...) \ + do { \ + if ((error) != SVN_NO_ERROR) \ + svnsup_svn_error(SVNSUP_WHERE, \ + (error), __VA_ARGS__); \ + } while (0) + +/* assertions */ +void svnsup_assert(svnsup_where_t *, const char *, const char *, ...); +#define SVNSUP_ASSERT(cond, ...) \ + do { \ + if (!(cond)) \ + svnsup_assert(SVNSUP_WHERE, \ + #cond, __VA_ARGS__); \ + } while (0) + +/* debugging messages */ +#define SVNSUP_DEBUG(fmt, ...) \ + do { \ + if (debug) \ + fprintf(stderr, fmt, __VA_ARGS__); \ + } while (0) + +/* authentication */ +svn_error_t *username_prompt_callback(svn_auth_cred_username_t **, + void *, const char *, svn_boolean_t, apr_pool_t *); + +/* callback function for log entries */ +svn_error_t *log_entry_receiver(void *, svn_log_entry_t *, apr_pool_t *); + +/* callback function for file deltas */ +svn_error_t *txdelta_window_handler(svn_txdelta_window_t *, void *); + +/* callback lists */ +extern struct svn_ra_callbacks2_t ra_callbacks; +extern struct svn_delta_editor_t delta_editor; + +#endif Added: user/des/svnsup/src/distill/editor.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/editor.c Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,269 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "distill.h" + +svn_error_t * +set_target_revision(void *edit_baton, + svn_revnum_t target_revision, + apr_pool_t *pool) +{ + + (void)edit_baton; + (void)pool; + SVNSUP_DEBUG("%s(r%ld)\n", __func__, (long)target_revision); + return (SVN_NO_ERROR); +} + +svn_error_t * +open_root(void *edit_baton, + svn_revnum_t base_revision, + apr_pool_t *dir_pool, + void **root_baton) +{ + + (void)edit_baton; + (void)dir_pool; + SVNSUP_DEBUG("%s(%ld)\n", __func__, (long)base_revision); + *root_baton = (void *)__LINE__; + return (SVN_NO_ERROR); +} + +svn_error_t * +delete_entry(const char *path, + svn_revnum_t revision, + void *parent_baton, + apr_pool_t *pool) +{ + + (void)parent_baton; + (void)pool; + SVNSUP_DEBUG("%s(%ld, %s)\n", __func__, (long)revision, path); + return (SVN_NO_ERROR); +} + +svn_error_t * +add_directory(const char *path, + void *parent_baton, + const char *copyfrom_path, + svn_revnum_t copyfrom_revision, + apr_pool_t *dir_pool, + void **child_baton) +{ + + (void)parent_baton; + (void)dir_pool; + SVNSUP_DEBUG("%s(%s, %s, %ld)\n", __func__, path, + copyfrom_path, (long)copyfrom_revision); + *child_baton = (void *)__LINE__; + return (SVN_NO_ERROR); +} + +svn_error_t * +open_directory(const char *path, + void *parent_baton, + svn_revnum_t base_revision, + apr_pool_t *dir_pool, + void **child_baton) +{ + + (void)parent_baton; + (void)dir_pool; + SVNSUP_DEBUG("%s(%s, %ld)\n", __func__, path, + (long)base_revision); + *child_baton = (void *)__LINE__; + return (SVN_NO_ERROR); +} + +svn_error_t * +change_dir_prop(void *dir_baton, + const char *name, + const svn_string_t *value, + apr_pool_t *pool) +{ + + (void)dir_baton; + (void)pool; + SVNSUP_DEBUG("%s(%s, %s)\n", __func__, name, value->data); + return (SVN_NO_ERROR); +} + +svn_error_t * +close_directory(void *dir_baton, + apr_pool_t *pool) +{ + + (void)dir_baton; + (void)pool; + SVNSUP_DEBUG("%s()\n", __func__); + return (SVN_NO_ERROR); +} + +svn_error_t * +absent_directory(const char *path, + void *parent_baton, + apr_pool_t *pool) +{ + + (void)parent_baton; + (void)pool; + SVNSUP_DEBUG("%s(%s)\n", __func__, path); + return (SVN_NO_ERROR); +} + +svn_error_t * +add_file(const char *path, + void *parent_baton, + const char *copyfrom_path, + svn_revnum_t copyfrom_revision, + apr_pool_t *file_pool, + void **file_baton) +{ + + (void)parent_baton; + (void)file_pool; + SVNSUP_DEBUG("%s(%s, %s, %ld)\n", __func__, path, + copyfrom_path, (long)copyfrom_revision); + *file_baton = (void *)__LINE__; + return (SVN_NO_ERROR); +} + +svn_error_t * +open_file(const char *path, + void *parent_baton, + svn_revnum_t base_revision, + apr_pool_t *file_pool, + void **file_baton) +{ + + (void)parent_baton; + (void)file_pool; + SVNSUP_DEBUG("%s(%s, %ld)\n", __func__, path, + (long)base_revision); + *file_baton = (void *)__LINE__; + return (SVN_NO_ERROR); +} + +svn_error_t * +apply_textdelta(void *file_baton, + const char *base_checksum, + apr_pool_t *pool, + svn_txdelta_window_handler_t *handler, + void **handler_baton) +{ + + (void)file_baton; + (void)pool; + SVNSUP_DEBUG("%s(%s)\n", __func__, base_checksum); + *handler = txdelta_window_handler; + *handler_baton = (void *)__LINE__; + return (SVN_NO_ERROR); +} + +svn_error_t * +change_file_prop(void *file_baton, + const char *name, + const svn_string_t *value, + apr_pool_t *pool) +{ + + (void)file_baton; + (void)pool; + SVNSUP_DEBUG("%s(%s, %s)\n", __func__, name, value->data); + return (SVN_NO_ERROR); +} + +svn_error_t * +close_file(void *file_baton, + const char *text_checksum, + apr_pool_t *pool) +{ + + (void)file_baton; + (void)pool; + SVNSUP_DEBUG("%s(%s)\n", __func__, text_checksum); + return (SVN_NO_ERROR); +} + +svn_error_t * +absent_file(const char *path, + void *parent_baton, + apr_pool_t *pool) +{ + + (void)parent_baton; + (void)pool; + SVNSUP_DEBUG("%s(%s)\n", __func__, path); + return (SVN_NO_ERROR); +} + +svn_error_t * +close_edit(void *edit_baton, + apr_pool_t *pool) +{ + + (void)edit_baton; + (void)pool; + SVNSUP_DEBUG("%s()\n", __func__); + return (SVN_NO_ERROR); +} + +svn_error_t * +abort_edit(void *edit_baton, + apr_pool_t *pool) +{ + + (void)edit_baton; + (void)pool; + SVNSUP_DEBUG("%s()\n", __func__); + return (SVN_NO_ERROR); +} + +struct svn_delta_editor_t delta_editor = { + .set_target_revision = set_target_revision, + .open_root = open_root, + .delete_entry = delete_entry, + .add_directory = add_directory, + .open_directory = open_directory, + .change_dir_prop = change_dir_prop, + .close_directory = close_directory, + .absent_directory = absent_directory, + .add_file = add_file, + .open_file = open_file, + .apply_textdelta = apply_textdelta, + .change_file_prop = change_file_prop, + .close_file = close_file, + .absent_file = absent_file, + .close_edit = close_edit, + .abort_edit = abort_edit, +}; Added: user/des/svnsup/src/distill/error.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/error.c Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,89 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include "distill.h" + +void +svnsup_svn_error(svnsup_where_t *where, svn_error_t *error, const char *fmt, ...) +{ + va_list ap; + + fprintf(stderr, "svnsup: "); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, "\n"); + svn_handle_error2(error, stderr, FALSE, "svnsup: "); + if (debug) + fprintf(stderr, "svnsup: in %s() on line %d of %s\n", + where->func, where->line, where->file); + exit(1); +} + +void +svnsup_apr_error(svnsup_where_t *where, apr_status_t status, const char *fmt, ...) +{ + char errbuf[1024]; + va_list ap; + + fprintf(stderr, "svnsup: "); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + apr_strerror(status, errbuf, sizeof(errbuf)); + fprintf(stderr, "\nsvnsup: %s\n", errbuf); + if (debug) + fprintf(stderr, "svnsup: in %s() on line %d of %s\n", + where->func, where->line, where->file); + exit(1); +} + +void +svnsup_assert(svnsup_where_t *where, const char *cond, const char *fmt, ...) +{ + va_list ap; + + if (debug) + fprintf(stderr, "svnsup: assertion failed: %s\n", cond); + fprintf(stderr, "svnsup: "); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + if (debug) + fprintf(stderr, "svnsup: in %s() on line %d of %s\n", + where->func, where->line, where->file); + exit(1); +} Added: user/des/svnsup/src/distill/log.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/log.c Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,75 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id$ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include "distill.h" + +svn_error_t * +log_entry_receiver(void *baton, + svn_log_entry_t *log_entry, + apr_pool_t *pool) +{ +#if 0 + apr_hash_index_t *hash_index; + const void *key; + void *value; + apr_ssize_t keylen; +#else + svn_string_t *value; +#endif + + (void)pool; + (void)baton; + SVNSUP_DEBUG("%s(r%lu)\n", __func__, (long)log_entry->revision); + fprintf(stderr, "revision properties:\n"); +#if 0 + for (hash_index = apr_hash_first(pool, log_entry->revprops); + hash_index != NULL; hash_index = apr_hash_next(hash_index)) { + apr_hash_this(hash_index, &key, &keylen, &value); + fprintf(stderr, " %s: %s\n", (const char *)key, + ((svn_string_t *)value)->data); + } +#else + do { + const char *props[] = { "svn:author", "svn:date", NULL }; + const char **p; + for (p = props; *p != NULL; ++p) { + value = apr_hash_get(log_entry->revprops, *p, APR_HASH_KEY_STRING); + SVNSUP_ASSERT(value != NULL, "revision has no %s property", *p); + fprintf(stderr, " %s: %s\n", *p, value->data); + } + } while (0); +#endif + return (SVN_NO_ERROR); +} Added: user/des/svnsup/src/distill/ra.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/des/svnsup/src/distill/ra.c Mon Oct 12 16:47:55 2009 (r197987) @@ -0,0 +1,155 @@ +/*- + * Copyright (c) 2009 Dag-Erling Coïdan Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***