You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Garrett Rooney <ro...@electricjellyfish.net> on 2002/01/08 00:14:15 UTC
[Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
On Mon, Jan 07, 2002 at 10:44:44AM -0500, Garrett Rooney wrote:
> On Mon, Jan 07, 2002 at 03:29:33PM +0100, Roman Neuhauser wrote:
> > > Date: Sun, 6 Jan 2002 16:46:01 -0500
> > > From: Garrett Rooney <ro...@electricjellyfish.net>
> > > To: svn <de...@subversion.tigris.org>
> > > Cc: neuhauser@mobil.cz
> > > Subject: Re: r727 doesn't build w/ --disable-shared
> > >
> > >
> > > > And BTW, issue #564 is not true: I had diff-2.7, patch-2.1.something
> > > > installed, and configure informed me that I needed diffutils.
> > >
> > > the version of patch and diff installed by default on FreeBSD are modified
> > > versions. the modification (i forget what exactly it is) causes it to not
> > > work with subversion, thus the diffutils and patch ports are needed.
> >
> > #564 is about ./configure telling the user to install diffutils
> > to get a recent GNU patch, when in fact patch is not part of
> > diffutils. And that was what ./configure told me. I don't know if
> > the FreeBSD diff is a modified version, diff --version told me just
> > "diff - GNU diffutils version 2.7", but my patch was old indeed.
> > That leads me to conclusion that the bug crept back in somehow.
>
> ahh, i see. i've had those ports installed long enough that i haven't
> noticed. if nobody else looks at this first i'll play with it
> tonight.
the error messages given by configure are not as intuitive as they
could be.... both the error for a bad version of patch and for a bad
version of diff point you to both the ftp site for patch and the ftp
site for diff, implying that you need to install both, even if only
one of them is out of date.
this patch clarifies the errors, and adds a pointer to the FreeBSD
port for diffutils to the part that notes how FreeBSD uses a hacked
version of diff.
also, while testing this i noticed that if one deletes the diff binary
that subversion is compiled to use, it will silently fail when you use
svn diff. i will investigate this, as it seems like it should be
throwing some kind of error.
-garrett
* configure.in
(for GNU patch): clarify error message when a compatable version of
patch cannot be found.
(for non-broken GNU diff): clarify error message when a compatable
version of diff cannot be found. Also expand the FreeBSD specific
portion of the error with a pointer to the textproc/diffutils port,
which provides the proper version of diff.
Index: ./configure.in
===================================================================
--- ./.svn/text-base/configure.in.svn-base Mon Jan 7 18:02:33 2002
+++ ./configure.in Mon Jan 7 18:54:47 2002
@@ -220,10 +220,8 @@
AC_MSG_ERROR([not found
Cannot find a GNU patch program in your PATH.
-Please make sure you have GNU diff (version 2.7 or later) and GNU
-patch (version 2.5 or later) installed. You can get them from
-ftp://ftp.gnu.org/pub/gnu/diffutils and ftp://ftp.gnu.org/pub/gnu/patch
-respectively.
+Please make sure you have and GNU patch (version 2.5 or later) installed.
+You can get it from ftp://ftp.gnu.org/pub/gnu/patch.
])
fi
AC_MSG_RESULT([$SVN_CLIENT_PATCH])
@@ -237,13 +235,13 @@
AC_MSG_ERROR([not found
Cannot find an unbroken GNU diff program in your PATH.
-Please make sure you have GNU diff (version 2.7 or later) and GNU
-patch (version 2.5 or later) installed. You can get them from
-ftp://ftp.gnu.org/pub/gnu/diffutils and ftp://ftp.gnu.org/pub/gnu/patch
-respectively.
+Please make sure you have GNU diff (version 2.7 or later) installed.
+You can get it from ftp://ftp.gnu.org/pub/gnu/diffutils.
(Note that FreeBSD uses a *hacked* version of GNU diff that is unable
-to handle certain types of text files.)
+to handle certain types of text files. If you are using FreeBSD, please
+install the textproc/diffutils package to get the appropriate version of
+diff.)
])
fi
AC_MSG_RESULT([$SVN_CLIENT_DIFF])
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Tue, Jan 08, 2002 at 01:49:09PM -0600, Karl Fogel wrote:
> Garrett Rooney <ro...@electricjellyfish.net> writes:
> > also, while testing this i noticed that if one deletes the diff binary
> > that subversion is compiled to use, it will silently fail when you use
> > svn diff. i will investigate this, as it seems like it should be
> > throwing some kind of error.
>
> Oh, I almost forgot, Garrett -- would you mind filing an issue about
> this first, if the investigation turns out to be anything other than
> absolutely trivial? Thanks,
i've opened issue 596 about this problem.
-garrett
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Karl Fogel <kf...@newton.ch.collab.net>.
Garrett Rooney <ro...@electricjellyfish.net> writes:
> also, while testing this i noticed that if one deletes the diff binary
> that subversion is compiled to use, it will silently fail when you use
> svn diff. i will investigate this, as it seems like it should be
> throwing some kind of error.
Oh, I almost forgot, Garrett -- would you mind filing an issue about
this first, if the investigation turns out to be anything other than
absolutely trivial? Thanks,
-K
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Thu, Jan 10, 2002 at 02:43:21AM -0800, Greg Stein wrote:
> +1 with some comments...
>
> On Wed, Jan 09, 2002 at 10:07:27PM -0500, Garrett Rooney wrote:
> >...
> > (incedentally, libsvn_wc/get_editor.c is currently hard coding diff
> > instead of using SVN_CLIENT_DIFF, which is bad, and should be fixed
> > with or without this patch.)
>
> And that this patch *does* fix it. (wasn't obvious from your comment :-)
oops, yeah, i should have mentioned that ;-)
> > +++ ./subversion/libsvn_wc/get_editor.c Wed Jan 9 21:46:14 2002
> >...
> > - /* Set io style. */
> > - apr_err =
> > - apr_procattr_io_set (diffproc_attr, 0,
> > - APR_CHILD_BLOCK, APR_CHILD_BLOCK);
>
> This patch ends up using svn_io_run_cmd() which passes APR_FULL_BLOCK rather
> than the magic 0 constant. I'm going to presume that is correct.
i think so, but if someone more familiar with APR would veryify that i
would appreciate it.
> >...
> > +++ ./subversion/libsvn_subr/io.c Wed Jan 9 21:50:00 2002
> >...
> > +/* Invoke SVN_CLIENT_DIFF, with USER_ARGS (which is an array of NUM_USER_ARGS
> > + arguments), if they are specified, or "-u" if they are not.
> > +
> > + Diff runs in DIR, and it's exit status is stored in EXITCODE, if it is not
> > + NULL.
> > +
> > + If LABEL is given, it will be passed in as the argument to the "-L" option.
> > +
> > + FROM is the first file passed to diff, and TO is the second. The stdout of
> > + diff will be sent to OUTFILE, and the stderr to ERRFILE. All memory will be
> > + allocated using POOL. */
> > +svn_error_t *
> > +svn_io_run_diff (const char *dir,
>
> We don't replicate the comment in the source file. It is hard enough to
> maintain the comments in the header, let alone in two places.
>
> Please omit this when you check in the change.
i see, will do.
> > + const char *const *user_args,
> > + const int num_user_args,
> > + const char *label,
> > + const char *from,
> > + const char *to,
> > + int *ecode,
> > + apr_file_t *outfile,
> > + apr_file_t *errfile,
> > + apr_pool_t *pool)
> > +{
> > + const char **args;
> > + int i;
> > + int *exitcode;
> > + int nargs = 4; /* the diff command itself, two paths, plus a trailing NULL */
> > +
> > + apr_pool_t *subpool = svn_pool_create (pool);
> > +
> > + if (ecode == NULL)
> > + exitcode = NULL;
> > + else
> > + exitcode = ecode;
>
> What is this for? Why don't you just pass "ecode" to svn_io_run_cmd ?
your forthcoming comments are correct.
> > +
[ ... skip bunch of code ... ]
> > +
> > + SVN_ERR(svn_io_run_cmd (dir, SVN_CLIENT_DIFF, args, exitcode, NULL, NULL,
> > + outfile, errfile, subpool));
> > +
> > + if (*exitcode < 0 || *exitcode > 2)
>
> exitcode may be NULL, so you need to be careful here.
>
> I think what you want to do is rename ecode to "pexitcode". Declare "int
> exitcode" locally. If pexitcode == NULL, then pexitcode = &exitcode. IOW,
> you'll always have a valid pexitcode. The caller may not want it, but you
> definitely want it. Make sure that you check *pexitcode rather than exitcode
> (since 'exitcode' might not be used).
yeah, that's what i was trying to do, but i screwed it up.
> I'd say go ahead and check this in, with the changes noted above. If others
> have comments, then they can do a post-commit review :-)
>
> [ in case you're wondering: yes, COMMITTERS says you have restricted access,
> but that is only social convention; there are no software-enforced
> restrictions. however, outside of the freebsd stuff, it is
> review-then-commit; within the freebsd, it is commit-then-review ]
sounds good. i will make those changes and check them in.
thanks for the review,
-garrett
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch
Posted by Greg Stein <gs...@lyra.org>.
+1 with some comments...
On Wed, Jan 09, 2002 at 10:07:27PM -0500, Garrett Rooney wrote:
>...
> (incedentally, libsvn_wc/get_editor.c is currently hard coding diff
> instead of using SVN_CLIENT_DIFF, which is bad, and should be fixed
> with or without this patch.)
And that this patch *does* fix it. (wasn't obvious from your comment :-)
>...
> +++ ./subversion/libsvn_wc/get_editor.c Wed Jan 9 21:46:14 2002
>...
> - /* Set io style. */
> - apr_err =
> - apr_procattr_io_set (diffproc_attr, 0,
> - APR_CHILD_BLOCK, APR_CHILD_BLOCK);
This patch ends up using svn_io_run_cmd() which passes APR_FULL_BLOCK rather
than the magic 0 constant. I'm going to presume that is correct.
>...
> +++ ./subversion/libsvn_subr/io.c Wed Jan 9 21:50:00 2002
>...
> +/* Invoke SVN_CLIENT_DIFF, with USER_ARGS (which is an array of NUM_USER_ARGS
> + arguments), if they are specified, or "-u" if they are not.
> +
> + Diff runs in DIR, and it's exit status is stored in EXITCODE, if it is not
> + NULL.
> +
> + If LABEL is given, it will be passed in as the argument to the "-L" option.
> +
> + FROM is the first file passed to diff, and TO is the second. The stdout of
> + diff will be sent to OUTFILE, and the stderr to ERRFILE. All memory will be
> + allocated using POOL. */
> +svn_error_t *
> +svn_io_run_diff (const char *dir,
We don't replicate the comment in the source file. It is hard enough to
maintain the comments in the header, let alone in two places.
Please omit this when you check in the change.
> + const char *const *user_args,
> + const int num_user_args,
> + const char *label,
> + const char *from,
> + const char *to,
> + int *ecode,
> + apr_file_t *outfile,
> + apr_file_t *errfile,
> + apr_pool_t *pool)
> +{
> + const char **args;
> + int i;
> + int *exitcode;
> + int nargs = 4; /* the diff command itself, two paths, plus a trailing NULL */
> +
> + apr_pool_t *subpool = svn_pool_create (pool);
> +
> + if (ecode == NULL)
> + exitcode = NULL;
> + else
> + exitcode = ecode;
What is this for? Why don't you just pass "ecode" to svn_io_run_cmd ?
> +
> + if (user_args != NULL)
> + nargs += num_user_args;
> + else
> + nargs += 1; /* -u */
> +
> + if (label != NULL)
> + nargs += 2; /* the -L and the label itself */
> +
> + args = apr_palloc(subpool, nargs * sizeof(char *));
> +
> + i = 0;
> + args[i++] = SVN_CLIENT_DIFF;
> +
> + if (user_args != NULL)
> + {
> + int j;
> + for (j = 0; j < num_user_args; ++j)
> + args[i++] = user_args[j];
> + }
> + else
> + args[i++] = "-u"; /* assume -u if the user didn't give us any args */
> +
> + if (label != NULL)
> + {
> + args[i++] = "-L";
> + args[i++] = label;
> + }
> +
> + args[i++] = from;
> + args[i++] = to;
> + args[i++] = NULL;
> +
> + assert (i == nargs);
> +
> + SVN_ERR(svn_io_run_cmd (dir, SVN_CLIENT_DIFF, args, exitcode, NULL, NULL,
> + outfile, errfile, subpool));
> +
> + if (*exitcode < 0 || *exitcode > 2)
exitcode may be NULL, so you need to be careful here.
I think what you want to do is rename ecode to "pexitcode". Declare "int
exitcode" locally. If pexitcode == NULL, then pexitcode = &exitcode. IOW,
you'll always have a valid pexitcode. The caller may not want it, but you
definitely want it. Make sure that you check *pexitcode rather than exitcode
(since 'exitcode' might not be used).
I'd say go ahead and check this in, with the changes noted above. If others
have comments, then they can do a post-commit review :-)
[ in case you're wondering: yes, COMMITTERS says you have restricted access,
but that is only social convention; there are no software-enforced
restrictions. however, outside of the freebsd stuff, it is
review-then-commit; within the freebsd, it is commit-then-review ]
Cheers,
-g
--
Greg Stein, http://www.lyra.org/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Wed, Jan 09, 2002 at 04:18:21PM -0800, Greg Stein wrote:
> On Tue, Jan 08, 2002 at 09:36:22PM -0500, Garrett Rooney wrote:
> >...
> > * subversion/libsvn_wc/get_editor.c
> > (close_file): return an error when diff returns an unexpected exit
> > code.
> > * subversion/libsvn_client/diff.c
> > (svn_client__diff_cmd): ditto
> > * subversion/svnlook/main.c
> > (print_diff_tree): ditto
>
> Those "ditto" calls raise a yellow flag... It would seem to be nice to have
> a function that knows about the vagaries of invoking diff, and just Do The
> Right Thing. It could simplify a number of the params to get it called, too.
> *shrug* Not familiar enough with those sections of code to really know...
excellent point.
revised diff attached.
(incedentally, libsvn_wc/get_editor.c is currently hard coding diff
instead of using SVN_CLIENT_DIFF, which is bad, and should be fixed
with or without this patch.)
* subversion/includes/svn_error_codes.h
(SVN_ERR_EXTERNAL_PROGRAM): new error type for when an external
program fails in an unexpected way.
* subversion/include/svn_io.h
(svn_io_run_diff): new prototype.
* subversion/libsvn_wc/get_editor.c
(close_file): use svn_io_run_diff instead of calling diff by hand.
* subversion/libsvn_subr/io.c
(svn_io_run_diff): new function that calls diff (via svn_io_run_cmd),
so we don't have to reproduce the logic all over the place. most of
this logic comes from libsvn_client/diff.c
* subversion/libsvn_client/diff.c
(svn_client__diff_cmd): use svn_io_run_diff instead of calling diff
by hand.
* subversion/svnlook/main.c
(print_diff_tree): ditto.
Index: ./subversion/include/svn_error_codes.h
===================================================================
--- ./subversion/include/svn_error_codes.h
+++ ./subversion/include/svn_error_codes.h Wed Jan 9 21:46:14 2002
@@ -274,6 +274,9 @@
SVN_ERRDEF (SVN_ERR_REPOS_HOOK_FAILURE,
"A repository hook failed.")
+ SVN_ERRDEF (SVN_ERR_EXTERNAL_PROGRAM,
+ "Error calling external program")
+
SVN_ERRDEF (SVN_ERR_BERKELEY_DB,
"Berkeley DB error")
Index: ./subversion/include/svn_io.h
===================================================================
--- ./subversion/include/svn_io.h
+++ ./subversion/include/svn_io.h Wed Jan 9 21:46:14 2002
@@ -339,6 +339,27 @@
apr_file_t *errfile,
apr_pool_t *pool);
+/* Invoke SVN_CLIENT_DIFF, with USER_ARGS (which is an array of NUM_USER_ARGS
+ arguments), if they are specified, or "-u" if they are not.
+
+ Diff runs in DIR, and it's exit status is stored in EXITCODE, if it is not
+ NULL.
+
+ If LABEL is given, it will be passed in as the argument to the "-L" option.
+
+ FROM is the first file passed to diff, and TO is the second. The stdout of
+ diff will be sent to OUTFILE, and the stderr to ERRFILE. All memory will be
+ allocated using POOL. */
+svn_error_t *svn_io_run_diff (const char *dir,
+ const char *const *user_args,
+ const int num_user_args,
+ const char *label,
+ const char *from,
+ const char *to,
+ int *exitcode,
+ apr_file_t *outfile,
+ apr_file_t *errfile,
+ apr_pool_t *pool);
/* Examine FILE to determine if it can be described by a known (as in,
known by this function) Multipurpose Internet Mail Extension (MIME)
Index: ./subversion/libsvn_wc/get_editor.c
===================================================================
--- ./subversion/libsvn_wc/get_editor.c
+++ ./subversion/libsvn_wc/get_editor.c Wed Jan 9 21:46:14 2002
@@ -1322,9 +1322,8 @@
{
/* Run the external `diff' command immediately and
create a temporary .diff file. */
- apr_proc_t diff_proc;
- apr_procattr_t *diffproc_attr;
- const char *diff_args[6];
+ int exitcode;
+ const char *diff_args[2];
apr_file_t *received_diff_file;
if (eol_style == svn_wc__eol_style_native)
@@ -1396,68 +1395,14 @@
FALSE,
fb->pool));
- /* Create the process attributes. */
- apr_err = apr_procattr_create (&diffproc_attr, fb->pool);
- if (! APR_STATUS_IS_SUCCESS (apr_err))
- return svn_error_create
- (apr_err, 0, NULL, fb->pool,
- "close_file: error creating diff process attributes");
-
- /* Make sure we invoke diff directly, not thru a shell. */
- apr_err =
- apr_procattr_cmdtype_set (diffproc_attr, APR_PROGRAM);
- if (! APR_STATUS_IS_SUCCESS (apr_err))
- return svn_error_create
- (apr_err, 0, NULL, fb->pool,
- "close_file: error setting diff process cmdtype");
-
- /* Set io style. */
- apr_err =
- apr_procattr_io_set (diffproc_attr, 0,
- APR_CHILD_BLOCK, APR_CHILD_BLOCK);
- if (! APR_STATUS_IS_SUCCESS (apr_err))
- return svn_error_create
- (apr_err, 0, NULL, fb->pool,
- "close_file: error setting diff process io attributes");
-
- /* Tell it to send output to the diff file. */
- apr_err = apr_procattr_child_out_set (diffproc_attr,
- received_diff_file,
- NULL);
- if (! APR_STATUS_IS_SUCCESS (apr_err))
- return svn_error_create
- (apr_err, 0, NULL, fb->pool,
- "close_file: error setting diff process child output");
-
/* Build the diff command. */
- diff_args[0] = "diff";
- diff_args[1] = "-c";
- diff_args[2] = "--";
- diff_args[3] = txtb_full_path->data;
- diff_args[4] = tmp_txtb_full_path->data;
- diff_args[5] = NULL;
-
- /* Start the diff command. kff todo: path to diff program
- should be determined through various levels of fallback,
- of course, not hardcoded. */
- apr_err = apr_proc_create (&diff_proc,
- SVN_CLIENT_DIFF,
- diff_args,
- NULL,
- diffproc_attr,
- fb->pool);
- if (! APR_STATUS_IS_SUCCESS (apr_err))
- return svn_error_createf
- (apr_err, 0, NULL, fb->pool,
- "close_file: error starting diff process");
-
- /* Wait for the diff command to finish. */
- apr_err = apr_proc_wait (&diff_proc, NULL, NULL, APR_WAIT);
- if (APR_STATUS_IS_CHILD_NOTDONE (apr_err))
- return svn_error_createf
- (apr_err, 0, NULL, fb->pool,
- "close_file: error waiting for diff process");
+ diff_args[0] = "-c";
+ diff_args[1] = "--";
+ SVN_ERR(svn_io_run_diff
+ (".", diff_args, 2, NULL, txtb_full_path->data,
+ tmp_txtb_full_path->data, &exitcode, received_diff_file,
+ NULL, fb->pool));
/* The diff is finished. If we had to create
temporary 'translated' text-bases, write log
Index: ./subversion/libsvn_subr/io.c
===================================================================
--- ./subversion/libsvn_subr/io.c
+++ ./subversion/libsvn_subr/io.c Wed Jan 9 21:50:00 2002
@@ -34,7 +34,7 @@
#include "svn_error.h"
#include "svn_io.h"
#include "svn_pools.h"
-
+#include "svn_private_config.h" /* for SVN_CLIENT_DIFF */
struct svn_stream_t {
@@ -1303,6 +1303,86 @@
return SVN_NO_ERROR;
}
+/* Invoke SVN_CLIENT_DIFF, with USER_ARGS (which is an array of NUM_USER_ARGS
+ arguments), if they are specified, or "-u" if they are not.
+
+ Diff runs in DIR, and it's exit status is stored in EXITCODE, if it is not
+ NULL.
+
+ If LABEL is given, it will be passed in as the argument to the "-L" option.
+
+ FROM is the first file passed to diff, and TO is the second. The stdout of
+ diff will be sent to OUTFILE, and the stderr to ERRFILE. All memory will be
+ allocated using POOL. */
+svn_error_t *
+svn_io_run_diff (const char *dir,
+ const char *const *user_args,
+ const int num_user_args,
+ const char *label,
+ const char *from,
+ const char *to,
+ int *ecode,
+ apr_file_t *outfile,
+ apr_file_t *errfile,
+ apr_pool_t *pool)
+{
+ const char **args;
+ int i;
+ int *exitcode;
+ int nargs = 4; /* the diff command itself, two paths, plus a trailing NULL */
+
+ apr_pool_t *subpool = svn_pool_create (pool);
+
+ if (ecode == NULL)
+ exitcode = NULL;
+ else
+ exitcode = ecode;
+
+ if (user_args != NULL)
+ nargs += num_user_args;
+ else
+ nargs += 1; /* -u */
+
+ if (label != NULL)
+ nargs += 2; /* the -L and the label itself */
+
+ args = apr_palloc(subpool, nargs * sizeof(char *));
+
+ i = 0;
+ args[i++] = SVN_CLIENT_DIFF;
+
+ if (user_args != NULL)
+ {
+ int j;
+ for (j = 0; j < num_user_args; ++j)
+ args[i++] = user_args[j];
+ }
+ else
+ args[i++] = "-u"; /* assume -u if the user didn't give us any args */
+
+ if (label != NULL)
+ {
+ args[i++] = "-L";
+ args[i++] = label;
+ }
+
+ args[i++] = from;
+ args[i++] = to;
+ args[i++] = NULL;
+
+ assert (i == nargs);
+
+ SVN_ERR(svn_io_run_cmd (dir, SVN_CLIENT_DIFF, args, exitcode, NULL, NULL,
+ outfile, errfile, subpool));
+
+ if (*exitcode < 0 || *exitcode > 2)
+ return svn_error_createf (SVN_ERR_EXTERNAL_PROGRAM, 0, NULL, subpool,
+ "Error calling %s.", SVN_CLIENT_DIFF);
+
+ svn_pool_destroy (subpool);
+
+ return SVN_NO_ERROR;
+}
svn_error_t *
svn_io_detect_mimetype (const char **mimetype,
Index: ./subversion/libsvn_client/diff.c
===================================================================
--- ./subversion/libsvn_client/diff.c
+++ ./subversion/libsvn_client/diff.c Wed Jan 9 21:46:14 2002
@@ -54,7 +54,6 @@
apr_status_t status;
const char **args;
int i, nargs, exitcode;
- apr_exit_why_e exitwhy;
apr_file_t *outhandle, *errhandle;
/* Use a subpool here because the pool comes right through from the top
@@ -74,17 +73,13 @@
/* Execute local diff command on these two paths, print to stdout. */
- nargs = 4; /* Eek! A magic number! It's checked by a later assert */
- if (label)
- nargs += 2; /* Another magic number checked by the later assert */
- if (diff_cmd_baton->options->nelts)
- nargs += diff_cmd_baton->options->nelts;
- else
- ++nargs;
- args = apr_palloc(subpool, nargs*sizeof(char*));
+ nargs = diff_cmd_baton->options->nelts;
+ if (nargs)
+ args = apr_palloc(subpool, nargs*sizeof(char*));
+ else
+ args = NULL;
i = 0;
- args[i++] = SVN_CLIENT_DIFF; /* the autoconfiscated system diff program */
if (diff_cmd_baton->options->nelts)
{
/* Add the user specified diff options to the diff command line. */
@@ -93,19 +88,6 @@
args[i++]
= ((svn_stringbuf_t **)(diff_cmd_baton->options->elts))[j]->data;
}
- else
- {
- /* The user didn't specify any options, default to unified diff. */
- args[i++] = "-u";
- }
- if (label)
- {
- args[i++] = "-L";
- args[i++] = label->data;
- }
- args[i++] = path1->data;
- args[i++] = path2->data;
- args[i++] = NULL;
assert (i==nargs);
/* ### TODO: This printf is NOT "my final answer" -- placeholder for
@@ -116,8 +98,9 @@
apr_file_printf (outhandle, "Index: %s\n", path1->data);
apr_file_printf (outhandle, "===================================================================\n");
- SVN_ERR(svn_io_run_cmd (".", SVN_CLIENT_DIFF, args, &exitcode, &exitwhy, NULL,
- outhandle, errhandle, subpool));
+ SVN_ERR(svn_io_run_diff
+ (".", args, nargs, label ? label->data : NULL, path1->data, path2->data,
+ &exitcode, outhandle, errhandle, subpool));
/* TODO: Handle exit code == 2 (i.e. errors with diff) here */
Index: ./subversion/svnlook/main.c
===================================================================
--- ./subversion/svnlook/main.c
+++ ./subversion/svnlook/main.c Wed Jan 9 21:46:14 2002
@@ -34,7 +34,6 @@
#include "svn_fs.h"
#include "svn_repos.h"
#include "svn_time.h"
-#include "svn_private_config.h" /* for SVN_CLIENT_DIFF */
/*** Some convenience macros and types. ***/
@@ -469,9 +468,9 @@
if (orig_path && new_path)
{
- const char *args[5];
apr_file_t *outhandle;
apr_status_t apr_err;
+ int exitcode;
printf ("%s: %s\n",
((tmp_node->action == 'A') ? "Added" :
@@ -482,12 +481,6 @@
===============\n");
fflush (stdout);
- args[0] = SVN_CLIENT_DIFF;
- args[1] = "-u";
- args[2] = orig_path->data;
- args[3] = new_path->data;
- args[4] = NULL;
-
/* Get an apr_file_t representing stdout, which is where we'll have
the diff program print to. */
apr_err = apr_file_open_stdout (&outhandle, pool);
@@ -496,8 +489,9 @@
(apr_err, 0, NULL, pool,
"print_diff_tree: can't open handle to stdout");
- SVN_ERR(svn_io_run_cmd (".", SVN_CLIENT_DIFF, args, NULL, NULL,
- NULL, outhandle, NULL, pool));
+ SVN_ERR(svn_io_run_diff
+ (".", NULL, 0, NULL, orig_path->data, new_path->data, &exitcode,
+ outhandle, NULL, pool));
/* TODO: Handle exit code == 2 (i.e. diff error) here. */
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch
Posted by Greg Stein <gs...@lyra.org>.
On Tue, Jan 08, 2002 at 09:36:22PM -0500, Garrett Rooney wrote:
>...
> * subversion/libsvn_wc/get_editor.c
> (close_file): return an error when diff returns an unexpected exit
> code.
> * subversion/libsvn_client/diff.c
> (svn_client__diff_cmd): ditto
> * subversion/svnlook/main.c
> (print_diff_tree): ditto
Those "ditto" calls raise a yellow flag... It would seem to be nice to have
a function that knows about the vagaries of invoking diff, and just Do The
Right Thing. It could simplify a number of the params to get it called, too.
*shrug* Not familiar enough with those sections of code to really know...
Cheers,
-g
--
Greg Stein, http://www.lyra.org/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Tue, Jan 08, 2002 at 09:36:22PM -0500, Garrett Rooney wrote:
> On Tue, Jan 08, 2002 at 07:59:49PM -0500, Garrett Rooney wrote:
>
> > > > now the question is what to do about it. i have a patch that will
> > > > just handle this for SVN_CLIENT_DIFF. we can just check that diff
> > > > exited with either 0, 1, or 2 (the only exit codes it is supposed to
> > > > use, according to it's man page), and if it exits with something else,
> > > > we know there's a problem and we error out.
> > > >
> > > +1 for this approach. We should also be doing something similar when we run
> > > patch. In fact I beleive there are/were comments to the effect of
> > >
> > > /* ### need to do better handling of the exit status diff left us here. */
> >
> > ok, i'll put that patch together again and send it off as soon as the
> > recent diff breakage is fixed (no reason to send the patch and then
> > imediately have to recreate it if any of the files change...).
>
> here's the diff to handle errors calling diff. i looked for places
> that we're calling patch, but the only place we seem to use
> SVN_CLIENT_PATCH is in libsvn_wc/get-editor.c, and that's just
> creating a stringbuf. i couldn't find anywhere that we actually call
> it.
oh, and i forgot to mention, i was going to write a regression test
for this, but i can't think of a way to test it without actually
removing the diff binary or compiling a whole nother version of svn...
if anyone has a good idea of how to test this case, i'm all ears.
-garrett
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Tue, Jan 08, 2002 at 07:59:49PM -0500, Garrett Rooney wrote:
> > > now the question is what to do about it. i have a patch that will
> > > just handle this for SVN_CLIENT_DIFF. we can just check that diff
> > > exited with either 0, 1, or 2 (the only exit codes it is supposed to
> > > use, according to it's man page), and if it exits with something else,
> > > we know there's a problem and we error out.
> > >
> > +1 for this approach. We should also be doing something similar when we run
> > patch. In fact I beleive there are/were comments to the effect of
> >
> > /* ### need to do better handling of the exit status diff left us here. */
>
> ok, i'll put that patch together again and send it off as soon as the
> recent diff breakage is fixed (no reason to send the patch and then
> imediately have to recreate it if any of the files change...).
here's the diff to handle errors calling diff. i looked for places
that we're calling patch, but the only place we seem to use
SVN_CLIENT_PATCH is in libsvn_wc/get-editor.c, and that's just
creating a stringbuf. i couldn't find anywhere that we actually call
it.
* subversion/include/svn_error_codes.h
(SVN_ERR_EXTERNAL_PROGRAM): new error for when an external program
fails for some reason.
* subversion/libsvn_wc/get_editor.c
(close_file): return an error when diff returns an unexpected exit
code.
* subversion/libsvn_client/diff.c
(svn_client__diff_cmd): ditto
* subversion/svnlook/main.c
(print_diff_tree): ditto
Index: ./subversion/include/svn_error_codes.h
===================================================================
--- ./subversion/include/svn_error_codes.h
+++ ./subversion/include/svn_error_codes.h Tue Jan 8 21:14:51 2002
@@ -274,6 +274,9 @@
SVN_ERRDEF (SVN_ERR_REPOS_HOOK_FAILURE,
"A repository hook failed.")
+ SVN_ERRDEF (SVN_ERR_EXTERNAL_PROGRAM,
+ "Error calling external program")
+
SVN_ERRDEF (SVN_ERR_BERKELEY_DB,
"Berkeley DB error")
Index: ./subversion/libsvn_wc/get_editor.c
===================================================================
--- ./subversion/libsvn_wc/get_editor.c
+++ ./subversion/libsvn_wc/get_editor.c Tue Jan 8 21:15:08 2002
@@ -1245,6 +1245,7 @@
apr_proc_t diff_proc;
apr_procattr_t *diffproc_attr;
const char *diff_args[6];
+ int exitcode;
apr_file_t *received_diff_file;
svn_stringbuf_t *tmp_txtb_full_path
@@ -1318,12 +1319,17 @@
"close_file: error starting diff process");
/* Wait for the diff command to finish. */
- apr_err = apr_proc_wait (&diff_proc, NULL, NULL, APR_WAIT);
+ apr_err = apr_proc_wait
+ (&diff_proc, &exitcode, NULL, APR_WAIT);
if (APR_STATUS_IS_CHILD_NOTDONE (apr_err))
return svn_error_createf
(apr_err, 0, NULL, fb->pool,
"close_file: error waiting for diff process");
-
+
+ if (exitcode < 0 || exitcode > 2)
+ return svn_error_createf
+ (SVN_ERR_EXTERNAL_PROGRAM, 0, NULL, fb->pool,
+ "Error calling %s.", SVN_CLIENT_DIFF);
/* Write a log message to `patch' the working file and
cleanup... */
Index: ./subversion/libsvn_client/diff.c
===================================================================
--- ./subversion/libsvn_client/diff.c
+++ ./subversion/libsvn_client/diff.c Tue Jan 8 21:15:27 2002
@@ -119,6 +119,11 @@
SVN_ERR(svn_io_run_cmd (".", SVN_CLIENT_DIFF, args, &exitcode, &exitwhy, NULL,
outhandle, errhandle, subpool));
+ if (exitcode < 0 || exitcode > 2)
+ return svn_error_createf
+ (SVN_ERR_EXTERNAL_PROGRAM, 0, NULL, subpool,
+ "Error calling %s.", SVN_CLIENT_DIFF);
+
/* TODO: Handle exit code == 2 (i.e. errors with diff) here */
/* TODO: someday we'll need to worry about whether we're going to need to
Index: ./subversion/svnlook/main.c
===================================================================
--- ./subversion/svnlook/main.c
+++ ./subversion/svnlook/main.c Tue Jan 8 21:15:35 2002
@@ -472,6 +472,7 @@
const char *args[5];
apr_file_t *outhandle;
apr_status_t apr_err;
+ int exitcode;
printf ("%s: %s\n",
((tmp_node->action == 'A') ? "Added" :
@@ -496,8 +497,13 @@
(apr_err, 0, NULL, pool,
"print_diff_tree: can't open handle to stdout");
- SVN_ERR(svn_io_run_cmd (".", SVN_CLIENT_DIFF, args, NULL, NULL,
+ SVN_ERR(svn_io_run_cmd (".", SVN_CLIENT_DIFF, args, &exitcode, NULL,
NULL, outhandle, NULL, pool));
+
+ if (exitcode < 0 || exitcode > 2)
+ return svn_error_createf
+ (SVN_ERR_EXTERNAL_PROGRAM, 0, NULL, pool,
+ "Error running %s.", SVN_CLIENT_DIFF);
/* TODO: Handle exit code == 2 (i.e. diff error) here. */
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Philip Martin <ph...@codematters.co.uk>.
Garrett Rooney <ro...@electricjellyfish.net> writes:
> ok, i'll put that patch together again and send it off as soon as the
> recent diff breakage is fixed (no reason to send the patch and then
> imediately have to recreate it if any of the files change...).
They won't overlap, so a context diff will apply cleanly
--
Philip
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Tue, Jan 08, 2002 at 07:50:14PM -0500, Kevin Pilch-Bisson wrote:
> > which turns out to be 255, which i imagine it some kind of error code
> > for this sort of thing.
>
> WEXITSTATUS will return the least significant byte of the error as an int.
> Therefor 0xFFFFFFFFFFFF gets truncated to 0xFFFF which is the 255. As far as
> I know there is know way for apr to be able to portably be able to tell that
> an executable didn't run (other than to stat it first).
ahh, ok, that makes sense now.
> Just be happy there is a return code. I had to fight for it :)
well, thanks for fighting, it's better than nothing...
> > now the question is what to do about it. i have a patch that will
> > just handle this for SVN_CLIENT_DIFF. we can just check that diff
> > exited with either 0, 1, or 2 (the only exit codes it is supposed to
> > use, according to it's man page), and if it exits with something else,
> > we know there's a problem and we error out.
> >
> +1 for this approach. We should also be doing something similar when we run
> patch. In fact I beleive there are/were comments to the effect of
>
> /* ### need to do better handling of the exit status diff left us here. */
ok, i'll put that patch together again and send it off as soon as the
recent diff breakage is fixed (no reason to send the patch and then
imediately have to recreate it if any of the files change...).
> > that seems kind of ugly though, and it seems like there must be some
> > kind of facility in apr for checking for this condition, or if there
> > isn't, there should be.
> >
> > unfortunately, i can't find it, and if it isn't there now i'm not sure
> > how one should implement it.
> >
> Don't think there is one, and I'm not sure how it would be implemented other
> than stating to make sure the file is there and checking
> finfo.protection & APR_[UGO]EXECUTE.
i thought of that, but then you just get a race condition between your
stat and your exec.
i guess the only way we can deal with this kind of thing is to know
what kind of return values we should be getting and to assume an error
occured if we get anything else.
-garrett
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Kevin Pilch-Bisson <ke...@pilch-bisson.net>.
On Tue, Jan 08, 2002 at 06:44:46PM -0500, Garrett Rooney wrote:
> On Tue, Jan 08, 2002 at 01:06:08PM -0600, Karl Fogel wrote:
>
> > Ooooh, that's bad. Suspect something wrong with the error checking in
> > this part of libsvn_wc/get_editor.c, but not sure. Let us know what
> > you find, thanks for looking into this...
> >
> > [...]
> > apr_err = apr_proc_create (&diff_proc,
> > SVN_CLIENT_DIFF,
> > diff_args,
> > NULL,
> > diffproc_attr,
> > fb->pool);
> > if (! APR_STATUS_IS_SUCCESS (apr_err))
> > return svn_error_createf
> > (apr_err, 0, NULL, fb->pool,
> > "close_file: error starting diff process");
> >
> > /* Wait for the diff command to finish. */
> > apr_err = apr_proc_wait (&diff_proc, NULL, NULL, APR_WAIT);
> > if (APR_STATUS_IS_CHILD_NOTDONE (apr_err))
> > return svn_error_createf
> > (apr_err, 0, NULL, fb->pool,
> > "close_file: error waiting for diff process");
> > [...]
>
> ok, the problem is in this code, but the version of it in
> svn_io_run_cmd (for this case, although i imagine it will fail in the
> same manner elsewhere).
>
> when we run apr_proc_create, it forks off a process, which suceeds,
> so that suceeds just fine. that process tries to exec diff, which
> fails for obvious reasons. it then does an 'exit(-1)'. (this occurs
> in apr/threadproc/unix/proc.c for those of you playing along at home)
> when we do the apr_proc_wait, the APR_STATUS_OS_CHILD_NOTDONE will
> return false, because the child is done, it exited with a -1. now we
> don't always call apr_proc_wait with an exitcode parameter, but if we
> did (as we do in svn_io_run_cmd, but not in get_editor.c), we would
> recieve from apr the output of this line:
>
> *exitcode = WEXITSTATUS(exit_int);
>
> which turns out to be 255, which i imagine it some kind of error code
> for this sort of thing.
WEXITSTATUS will return the least significant byte of the error as an int.
Therefor 0xFFFFFFFFFFFF gets truncated to 0xFFFF which is the 255. As far as
I know there is know way for apr to be able to portably be able to tell that
an executable didn't run (other than to stat it first).
Just be happy there is a return code. I had to fight for it :)
>
> now the question is what to do about it. i have a patch that will
> just handle this for SVN_CLIENT_DIFF. we can just check that diff
> exited with either 0, 1, or 2 (the only exit codes it is supposed to
> use, according to it's man page), and if it exits with something else,
> we know there's a problem and we error out.
>
+1 for this approach. We should also be doing something similar when we run
patch. In fact I beleive there are/were comments to the effect of
/* ### need to do better handling of the exit status diff left us here. */
>
> that seems kind of ugly though, and it seems like there must be some
> kind of facility in apr for checking for this condition, or if there
> isn't, there should be.
>
> unfortunately, i can't find it, and if it isn't there now i'm not sure
> how one should implement it.
>
Don't think there is one, and I'm not sure how it would be implemented other
than stating to make sure the file is there and checking
finfo.protection & APR_[UGO]EXECUTE.
>
> in any case, i will be following an issue about this, as soon as i take
> a break and eat some dinner.
>
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kevin Pilch-Bisson http://www.pilch-bisson.net
"Historically speaking, the presences of wheels in Unix
has never precluded their reinvention." - Larry Wall
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Garrett Rooney <ro...@electricjellyfish.net>.
On Tue, Jan 08, 2002 at 01:06:08PM -0600, Karl Fogel wrote:
> Ooooh, that's bad. Suspect something wrong with the error checking in
> this part of libsvn_wc/get_editor.c, but not sure. Let us know what
> you find, thanks for looking into this...
>
> [...]
> apr_err = apr_proc_create (&diff_proc,
> SVN_CLIENT_DIFF,
> diff_args,
> NULL,
> diffproc_attr,
> fb->pool);
> if (! APR_STATUS_IS_SUCCESS (apr_err))
> return svn_error_createf
> (apr_err, 0, NULL, fb->pool,
> "close_file: error starting diff process");
>
> /* Wait for the diff command to finish. */
> apr_err = apr_proc_wait (&diff_proc, NULL, NULL, APR_WAIT);
> if (APR_STATUS_IS_CHILD_NOTDONE (apr_err))
> return svn_error_createf
> (apr_err, 0, NULL, fb->pool,
> "close_file: error waiting for diff process");
> [...]
ok, the problem is in this code, but the version of it in
svn_io_run_cmd (for this case, although i imagine it will fail in the
same manner elsewhere).
when we run apr_proc_create, it forks off a process, which suceeds,
so that suceeds just fine. that process tries to exec diff, which
fails for obvious reasons. it then does an 'exit(-1)'. (this occurs
in apr/threadproc/unix/proc.c for those of you playing along at home)
when we do the apr_proc_wait, the APR_STATUS_OS_CHILD_NOTDONE will
return false, because the child is done, it exited with a -1. now we
don't always call apr_proc_wait with an exitcode parameter, but if we
did (as we do in svn_io_run_cmd, but not in get_editor.c), we would
recieve from apr the output of this line:
*exitcode = WEXITSTATUS(exit_int);
which turns out to be 255, which i imagine it some kind of error code
for this sort of thing.
now the question is what to do about it. i have a patch that will
just handle this for SVN_CLIENT_DIFF. we can just check that diff
exited with either 0, 1, or 2 (the only exit codes it is supposed to
use, according to it's man page), and if it exits with something else,
we know there's a problem and we error out.
that seems kind of ugly though, and it seems like there must be some
kind of facility in apr for checking for this condition, or if there
isn't, there should be.
unfortunately, i can't find it, and if it isn't there now i'm not sure
how one should implement it.
in any case, i will be following an issue about this, as soon as i take
a break and eat some dinner.
-garrett
--
garrett rooney Unix was not designed to stop you from
rooneg@electricjellyfish.net doing stupid things, because that would
http://electricjellyfish.net/ stop you from doing clever things.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Karl Fogel <kf...@newton.ch.collab.net>.
Garrett Rooney <ro...@electricjellyfish.net> writes:
> the error messages given by configure are not as intuitive as they
> could be.... both the error for a bad version of patch and for a bad
> version of diff point you to both the ftp site for patch and the ftp
> site for diff, implying that you need to install both, even if only
> one of them is out of date.
>
> this patch clarifies the errors, and adds a pointer to the FreeBSD
> port for diffutils to the part that notes how FreeBSD uses a hacked
> version of diff.
Applied, thanks! (I removed the spurious "and" from the error message
in the GNU patch section.)
> also, while testing this i noticed that if one deletes the diff binary
> that subversion is compiled to use, it will silently fail when you use
> svn diff. i will investigate this, as it seems like it should be
> throwing some kind of error.
Ooooh, that's bad. Suspect something wrong with the error checking in
this part of libsvn_wc/get_editor.c, but not sure. Let us know what
you find, thanks for looking into this...
[...]
apr_err = apr_proc_create (&diff_proc,
SVN_CLIENT_DIFF,
diff_args,
NULL,
diffproc_attr,
fb->pool);
if (! APR_STATUS_IS_SUCCESS (apr_err))
return svn_error_createf
(apr_err, 0, NULL, fb->pool,
"close_file: error starting diff process");
/* Wait for the diff command to finish. */
apr_err = apr_proc_wait (&diff_proc, NULL, NULL, APR_WAIT);
if (APR_STATUS_IS_CHILD_NOTDONE (apr_err))
return svn_error_createf
(apr_err, 0, NULL, fb->pool,
"close_file: error waiting for diff process");
[...]
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Re: [Patch] configure.in and GNU diff/patch (was Re: r727 doesn't build w/ --disable-shared)
Posted by Justin Erenkrantz <je...@ebuilt.com>.
On Mon, Jan 07, 2002 at 07:14:15PM -0500, Garrett Rooney wrote:
> * configure.in
> (for GNU patch): clarify error message when a compatable version of
> patch cannot be found.
> (for non-broken GNU diff): clarify error message when a compatable
> version of diff cannot be found. Also expand the FreeBSD specific
> portion of the error with a pointer to the textproc/diffutils port,
> which provides the proper version of diff.
+1.
(I'm just getting SVN built on my box here or I'd commit.) -- justin
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org