[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Cvs-cvs] ccvs/src ChangeLog admin.c checkout.c commit.c ...
From: |
Derek Robert Price |
Subject: |
[Cvs-cvs] ccvs/src ChangeLog admin.c checkout.c commit.c ... |
Date: |
Fri, 12 Sep 2008 19:55:32 +0000 |
CVSROOT: /cvsroot/cvs
Module name: ccvs
Changes by: Derek Robert Price <dprice> 08/09/12 19:55:31
Modified files:
src : ChangeLog admin.c checkout.c commit.c cvs.h
edit.c fileattr.c history.c import.c lock.c
logmsg.c main.c parseinfo.c parseinfo.h rcs.c
root.c sanity.sh server.c sign.c subr.c subr.h
tag.c verify.c
Log message:
* cvs.h [PIOPT_ALL] (CALLPROC, Parse_Info): Move defs and protos to...
* parseinfo.h: ...similarly named entities here.
* subr.h (format_cmdline_walklist_closure): Store file and line number
for error messages.
(format_cmdline): Update prototype with file and line number.
* admin.c (postadmin_proc), commit.c (precommit_proc), edit.c
(notify_proc), fileattr.c (postwatch_proc), logmsg.c (rcsinfo_proc,
do_editor, verifymsg_proc, do_verify, Update_Logfile, logfile_write,
update_logfile_proc), parseinfo.c (Parse_Info), server.c
(prepost_proxy_proc, template_proc, server_template), subr.c
(format_cmdline), tag.c (pretag_proc, posttag_proc: Accept file & line
number and use in error messages.
* sign.c (gen_signature)i, verify.c (verify_signature): Pass dummy file
and line to format_cmdline().
* checkout.c, history.c, import.c, lock.c, main.c, root.c:
#include "parseinfo.h".
* sanity.sh: Update to compensate for new error messages.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/ChangeLog?cvsroot=cvs&r1=1.3576&r2=1.3577
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/admin.c?cvsroot=cvs&r1=1.121&r2=1.122
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/checkout.c?cvsroot=cvs&r1=1.151&r2=1.152
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/commit.c?cvsroot=cvs&r1=1.281&r2=1.282
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/cvs.h?cvsroot=cvs&r1=1.355&r2=1.356
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/edit.c?cvsroot=cvs&r1=1.104&r2=1.105
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/fileattr.c?cvsroot=cvs&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/history.c?cvsroot=cvs&r1=1.104&r2=1.105
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/import.c?cvsroot=cvs&r1=1.189&r2=1.190
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/lock.c?cvsroot=cvs&r1=1.126&r2=1.127
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/logmsg.c?cvsroot=cvs&r1=1.111&r2=1.112
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/main.c?cvsroot=cvs&r1=1.277&r2=1.278
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/parseinfo.c?cvsroot=cvs&r1=1.94&r2=1.95
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/parseinfo.h?cvsroot=cvs&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/rcs.c?cvsroot=cvs&r1=1.393&r2=1.394
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/root.c?cvsroot=cvs&r1=1.136&r2=1.137
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/sanity.sh?cvsroot=cvs&r1=1.1200&r2=1.1201
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/server.c?cvsroot=cvs&r1=1.482&r2=1.483
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/sign.c?cvsroot=cvs&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/subr.c?cvsroot=cvs&r1=1.168&r2=1.169
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/subr.h?cvsroot=cvs&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/tag.c?cvsroot=cvs&r1=1.155&r2=1.156
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/verify.c?cvsroot=cvs&r1=1.9&r2=1.10
Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/ChangeLog,v
retrieving revision 1.3576
retrieving revision 1.3577
diff -u -b -r1.3576 -r1.3577
--- ChangeLog 12 Sep 2008 19:46:45 -0000 1.3576
+++ ChangeLog 12 Sep 2008 19:55:09 -0000 1.3577
@@ -1,5 +1,23 @@
2008-09-12 Derek R. Price <address@hidden>
+ * cvs.h [PIOPT_ALL] (CALLPROC, Parse_Info): Move defs and protos to...
+ * parseinfo.h: ...similarly named entities here.
+ * subr.h (format_cmdline_walklist_closure): Store file and line number
+ for error messages.
+ (format_cmdline): Update prototype with file and line number.
+ * admin.c (postadmin_proc), commit.c (precommit_proc), edit.c
+ (notify_proc), fileattr.c (postwatch_proc), logmsg.c (rcsinfo_proc,
+ do_editor, verifymsg_proc, do_verify, Update_Logfile, logfile_write,
+ update_logfile_proc), parseinfo.c (Parse_Info), server.c
+ (prepost_proxy_proc, template_proc, server_template), subr.c
+ (format_cmdline), tag.c (pretag_proc, posttag_proc: Accept file & line
+ number and use in error messages.
+ * sign.c (gen_signature)i, verify.c (verify_signature): Pass dummy file
+ and line to format_cmdline().
+ * checkout.c, history.c, import.c, lock.c, main.c, root.c:
+ #include "parseinfo.h".
+ * sanity.sh: Update to compensate for new error messages.
+
* rcs.c (rcsbuf_open): Some cleanup.
* rcs.c: Move mmap cruft into a library header.
Index: admin.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/admin.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -b -r1.121 -r1.122
--- admin.c 12 Sep 2007 18:27:06 -0000 1.121
+++ admin.c 12 Sep 2008 19:55:15 -0000 1.122
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -19,9 +19,10 @@
# include <config.h>
#endif
-/* CVS headers. */
+/* CVS */
#include "ignore.h"
#include "lock.h"
+#include "parseinfo.h"
#include "recurse.h"
#include "repos.h"
#include "wrapper.h"
@@ -158,12 +159,14 @@
* callback proc to run a script when admin finishes.
*/
static int
-postadmin_proc (const char *repository, const char *filter, void *closure)
+postadmin_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
{
char *cmdline;
const char *srepos = Short_Repository (repository);
- TRACE (TRACE_FUNCTION, "postadmin_proc (%s, %s)", repository, filter);
+ TRACE (TRACE_FUNCTION, "postadmin_proc (%s, %s, %s, %d)",
+ repository, filter, file, line);
/* %c = cvs_cmd_name
* %R = referrer
@@ -179,7 +182,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
+ file, line, filter,
"c", "s", cvs_cmd_name,
#ifdef SERVER_SUPPORT
"R", "s", referrer ? referrer->original : "NONE",
@@ -191,7 +194,8 @@
if (!cmdline || !strlen (cmdline))
{
if (cmdline) free (cmdline);
- error (0, 0, "postadmin proc resolved to the empty string!");
+ error (0, 0, "%s:%d: postadmin proc resolved to the empty string!",
+ file, line);
return 1;
}
Index: checkout.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/checkout.c,v
retrieving revision 1.151
retrieving revision 1.152
diff -u -b -r1.151 -r1.152
--- checkout.c 12 Sep 2007 18:27:06 -0000 1.151
+++ checkout.c 12 Sep 2008 19:55:21 -0000 1.152
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -43,8 +43,9 @@
# include <config.h>
#endif
-/* CVS headers. */
+/* CVS */
#include "ignore.h"
+#include "parseinfo.h"
#include "recurse.h"
#include "repos.h"
#include "wrapper.h"
Index: commit.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/commit.c,v
retrieving revision 1.281
retrieving revision 1.282
diff -u -b -r1.281 -r1.282
--- commit.c 9 Sep 2008 17:44:37 -0000 1.281
+++ commit.c 12 Sep 2008 19:55:23 -0000 1.282
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -34,6 +34,7 @@
#include "ignore.h"
#include "lock.h"
#include "logmsg.h"
+#include "parseinfo.h"
#include "recurse.h"
#include "repos.h"
#include "wrapper.h"
@@ -63,9 +64,6 @@
static int findmaxrev (Node * p, void *closure);
static int lock_RCS (const char *user, RCSNode *rcs, const char *rev,
const char *repository);
-static int precommit_list_to_args_proc (Node * p, void *closure);
-static int precommit_proc (const char *repository, const char *filter,
- void *closure);
static int remove_file (struct file_info *finfo, char *tag,
char *message);
static void fixaddfile (const char *rcs);
@@ -1294,7 +1292,8 @@
* Callback proc for pre-commit checking
*/
static int
-precommit_proc (const char *repository, const char *filter, void *closure)
+precommit_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
{
char *newfilter = NULL;
char *cmdline;
@@ -1305,10 +1304,10 @@
if (!strchr (filter, '%'))
{
error (0, 0,
- "warning: commitinfo line contains no format strings:\n"
- " \"%s\"\n"
- "Appending defaults (\" %%r/%%p %%s\"), but please be aware
that this usage is\n"
- "deprecated.", filter);
+"%s:%d: warning: commitinfo line contains no format strings.\n"
+"Appending defaults (%s), but please be aware that this usage is\n"
+"deprecated.",
+ file, line, quote (" %r/%p %s"));
newfilter = Xasprintf ("%s %%r/%%p %%s", filter);
filter = newfilter;
}
@@ -1323,7 +1322,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
+ file, line, filter,
"c", "s", cvs_cmd_name,
#ifdef SERVER_SUPPORT
"R", "s", referrer ? referrer->original : "NONE",
@@ -1339,7 +1338,8 @@
if (!cmdline || !strlen (cmdline))
{
if (cmdline) free (cmdline);
- error (0, 0, "precommit proc resolved to the empty string!");
+ error (0, 0, "%s:%d: precommit proc resolved to the empty string!",
+ file, line);
return 1;
}
Index: cvs.h
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/cvs.h,v
retrieving revision 1.355
retrieving revision 1.356
diff -u -b -r1.355 -r1.356
--- cvs.h 12 Sep 2007 13:07:33 -0000 1.355
+++ cvs.h 12 Sep 2008 19:55:26 -0000 1.356
@@ -275,9 +275,6 @@
-/* Option flags for Parse_Info() */
-#define PIOPT_ALL 1 /* accept "all" keyword */
-
extern const char *program_name, *program_path, *cvs_cmd_name;
extern char *Editor;
extern int cvsadmin_root;
@@ -316,7 +313,7 @@
/* This header needs the LOGMSG_* defns above. */
-#include "parseinfo.h"
+//#include "parseinfo.h"
/* This structure holds the global configuration data. */
extern struct config *config;
@@ -381,11 +378,6 @@
char *entries_time (time_t unixtime);
time_t unix_time_stamp (const char *file);
-typedef int (*CALLPROC) (const char *repository, const char *value,
- void *closure);
-int Parse_Info (const char *infofile, const char *repository,
- CALLPROC callproc, int opt, void *closure);
-
typedef RETSIGTYPE (*SIGCLEANUPPROC) (int);
int SIG_register (int sig, SIGCLEANUPPROC sigcleanup);
Index: edit.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/edit.c,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -b -r1.104 -r1.105
--- edit.c 25 Jan 2008 07:17:33 -0000 1.104
+++ edit.c 12 Sep 2008 19:55:26 -0000 1.105
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Free Software Foundation, Inc.
+ * Copyright (C) 2008 The Free Software Foundation, Inc.
*
* Implementation for "cvs edit", "cvs watch on", and related commands
*
@@ -21,14 +21,16 @@
/* Verify interface. */
#include "edit.h"
-/* GNULIB headers. */
+/* GNULIB */
+#include "quote.h"
#include "yesno.h"
-/* CVS headers. */
+/* CVS */
#include "base.h"
#include "fileattr.h"
#include "ignore.h"
#include "lock.h"
+#include "parseinfo.h"
#include "recurse.h"
#include "repos.h"
#include "watch.h"
@@ -859,7 +861,8 @@
static int
-notify_proc (const char *repository, const char *filter, void *closure)
+notify_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
{
char *cmdline;
FILE *pipefp;
@@ -875,7 +878,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
+ file, line, filter,
"c", "s", cvs_cmd_name,
#ifdef SERVER_SUPPORT
"R", "s", referrer ? referrer->original : "NONE",
@@ -887,14 +890,17 @@
if (!cmdline || !strlen (cmdline))
{
if (cmdline) free (cmdline);
- error (0, 0, "pretag proc resolved to the empty string!");
+ error (0, 0, "%s:%d: pretag proc resolved to the empty string!",
+ file, line);
return 1;
}
pipefp = run_popen (cmdline, "w");
if (pipefp == NULL)
{
- error (0, errno, "cannot write entry to notify filter: %s", cmdline);
+ error (0, errno,
+ "%s:%d: cannot write entry to notify filter: %s",
+ file, line, quote (cmdline));
free (cmdline);
return 1;
}
Index: fileattr.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/fileattr.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- fileattr.c 12 Sep 2007 18:27:07 -0000 1.40
+++ fileattr.c 12 Sep 2008 19:55:26 -0000 1.41
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Free Software Foundation, Inc.
+ * Copyright (C) 2008 The Free Software Foundation, Inc.
*
* Implementation for file attribute munging features.
*
@@ -21,7 +21,8 @@
/* Verify interface. */
#include "fileattr.h"
-/* CVS headers. */
+/* CVS */
+#include "parseinfo.h"
#include "repos.h"
#include "cvs.h"
@@ -519,12 +520,14 @@
* callback proc to run a script when fileattrs are updated.
*/
static int
-postwatch_proc (const char *repository, const char *filter, void *closure)
+postwatch_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
{
char *cmdline;
const char *srepos = Short_Repository (repository);
- TRACE (TRACE_FUNCTION, "postwatch_proc (%s, %s)", repository, filter);
+ TRACE (TRACE_FUNCTION, "postwatch_proc (%s, %s, %s, %d)",
+ repository, filter, file, line);
/* %c = command name
* %p = shortrepos
@@ -539,7 +542,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
+ file, line, filter,
"c", "s", cvs_cmd_name,
#ifdef SERVER_SUPPORT
"R", "s", referrer ? referrer->original : "NONE",
@@ -551,7 +554,8 @@
if (!cmdline || !strlen (cmdline))
{
if (cmdline) free (cmdline);
- error (0, 0, "postwatch proc resolved to the empty string!");
+ error (0, 0, "%s:%d: postwatch proc resolved to the empty string!",
+ file, line);
return 1;
}
Index: history.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/history.c,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -b -r1.104 -r1.105
--- history.c 20 Dec 2007 16:09:25 -0000 1.104
+++ history.c 12 Sep 2008 19:55:26 -0000 1.105
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 1994-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1994-2008 The Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,12 +19,13 @@
/* Verify interface. */
#include "history.h"
-/* GNULIB headers. */
+/* GNULIB */
#include "save-cwd.h"
-/* CVS headers. */
+/* CVS */
#include "ignore.h"
#include "lock.h"
+#include "parseinfo.h"
#include "repos.h"
#include "cvs.h"
Index: import.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/import.c,v
retrieving revision 1.189
retrieving revision 1.190
diff -u -b -r1.189 -r1.190
--- import.c 20 Dec 2007 16:09:25 -0000 1.189
+++ import.c 12 Sep 2008 19:55:26 -0000 1.190
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -26,15 +26,16 @@
# include <config.h>
#endif
-/* GNULIB headers. */
+/* GNULIB */
#include "base64.h"
#include "lstat.h"
#include "save-cwd.h"
-/* CVS headers. */
+/* CVS */
#include "ignore.h"
#include "lock.h"
#include "logmsg.h"
+#include "parseinfo.h"
#include "wrapper.h"
#include "cvs.h"
Index: lock.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/lock.c,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -b -r1.126 -r1.127
--- lock.c 20 Dec 2007 16:09:25 -0000 1.126
+++ lock.c 12 Sep 2008 19:55:27 -0000 1.127
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -77,7 +77,8 @@
/* Verify API */
#include "lock.h"
-/* CVS headers. */
+/* CVS */
+#include "parseinfo.h"
#include "recurse.h"
#include "repos.h"
Index: logmsg.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/logmsg.c,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -b -r1.111 -r1.112
--- logmsg.c 12 Sep 2007 18:27:07 -0000 1.111
+++ logmsg.c 12 Sep 2008 19:55:28 -0000 1.112
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -19,7 +19,11 @@
/* Verify interface. */
#include "logmsg.h"
-/* CVS Headers. */
+/* GNULIB */
+#include "quote.h"
+
+/* CVS */
+#include "parseinfo.h"
#include "repos.h"
#include "cvs.h"
@@ -28,16 +32,8 @@
static int find_type (Node * p, void *closure);
static int fmt_proc (Node * p, void *closure);
-static int logfile_write (const char *repository, const char *filter,
- const char *message, FILE * logfp, List * changes);
static int logmsg_list_to_args_proc (Node *p, void *closure);
-static int rcsinfo_proc (const char *repository, const char *template,
- void *closure );
-static int update_logfile_proc (const char *repository, const char *filter,
- void *closure);
static void setup_tmpfile (FILE * xfp, char *xprefix, List * changes);
-static int verifymsg_proc (const char *repository, const char *script,
- void *closure );
static FILE *fp;
static Ctype type;
@@ -185,9 +181,59 @@
(void) fprintf (fp, "%s ", p->key);
col += strlen (p->key) + 1;
}
+ return 0;
+}
+
+
+
+/*
+ * callback proc for Parse_Info for rcsinfo templates this routine basically
+ * copies the matching template onto the end of the tempfile we are setting
+ * up
+ */
+/* ARGSUSED */
+static int
+rcsinfo_proc (const char *repository, const char *template,
+ const char *file, int line, void *closure)
+{
+ static char *last_template;
+ FILE *tfp;
+
+ /* nothing to do if the last one included is the same as this one */
+ if (last_template && STREQ (last_template, template))
+ return (0);
+ if (last_template)
+ free (last_template);
+ last_template = xstrdup (template);
+
+ if ((tfp = CVS_FOPEN (template, "r")) != NULL)
+ {
+ char *line = NULL;
+ size_t line_chars_allocated = 0;
+
+ while (getline (&line, &line_chars_allocated, tfp) >= 0)
+ (void) fputs (line, fp);
+ if (ferror (tfp))
+ error (0, errno, "%s:%d: warning: cannot read %s",
+ file, line, quote (template));
+ if (fclose (tfp) < 0)
+ error (0, errno,
+ "%s:%d: warning: cannot close %s",
+ file, line, quote (template));
+ if (line)
+ free (line);
return (0);
+ }
+ else
+ {
+ error (0, errno, "%s:%d: Couldn't open rcsinfo template file %s",
+ file, line, quote (template));
+ return 1;
+ }
}
+
+
/*
* Builds a temporary file using setup_tmpfile() and invokes the user's
* editor on the file. The header garbage in the resultant file is then
@@ -236,9 +282,9 @@
(void) fprintf (fp, "\n");
}
- if (repository != NULL)
+ if (repository)
/* tack templates on if necessary */
- (void) Parse_Info (CVSROOTADM_RCSINFO, repository, rcsinfo_proc,
+ Parse_Info (CVSROOTADM_RCSINFO, repository, rcsinfo_proc,
PIOPT_ALL, NULL);
else
{
@@ -403,6 +449,141 @@
free (fname);
}
+
+
+/* This routine is called by Parse_Info. It runs the
+ * message verification script.
+ */
+static int
+verifymsg_proc (const char *repository, const char *script,
+ const char *file, int line, void *closure)
+{
+ char *verifymsg_script;
+#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
+ char *newscript = NULL;
+#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ struct verifymsg_proc_data *vpd = closure;
+ const char *srepos = Short_Repository (repository);
+
+#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
+ if (!strchr (script, '%'))
+ {
+ error (0, 0,
+"%s:%d: warning: verifymsg line doesn't contain any format strings.\n"
+"Appending default format string (%s), but please be aware that this usage\n"
+"is deprecated.",
+ file, line, quote ("%1"));
+ script = newscript = Xasprintf ("%s %%l", script);
+ }
+#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+
+ /* If we don't already have one, open a temporary file, write the message
+ * to the temp file, and close the file.
+ *
+ * We do this here so that we only create the file when there is a
+ * verifymsg script specified and we only create it once when there is
+ * more than one verifymsg script specified.
+ */
+ if (vpd->fname == NULL)
+ {
+ FILE *fp;
+ if ((fp = cvs_temp_file (&(vpd->fname))) == NULL)
+ error (1, errno, "%s:%d: cannot create temporary file %s",
+ file, line, quote (vpd->fname));
+
+ if (vpd->message != NULL)
+ fputs (vpd->message, fp);
+ if (vpd->message == NULL ||
+ (vpd->message)[0] == '\0' ||
+ (vpd->message)[strlen (vpd->message) - 1] != '\n')
+ putc ('\n', fp);
+ if (fclose (fp) == EOF)
+ error (1, errno, "%s:%d: error closing temporary file %s",
+ file, line, quote (vpd->fname));
+
+ if (config->RereadLogAfterVerify == LOGMSG_REREAD_STAT)
+ {
+ /* Remember the status of the temp file for later */
+ if (stat (vpd->fname, &(vpd->pre_stbuf)) != 0)
+ error (1, errno, "%s:%d: cannot stat temp file %s",
+ file, line, quote (vpd->fname));
+
+ /*
+ * See if we need to sleep before running the verification
+ * script to avoid time-stamp races.
+ */
+ sleep_past (vpd->pre_stbuf.st_mtime);
+ }
+ } /* if (vpd->fname == NULL) */
+
+ /*
+ * Cast any NULL arguments as appropriate pointers as this is an
+ * stdarg function and we need to be certain the caller gets what
+ * is expected.
+ */
+ verifymsg_script = format_cmdline (
+#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
+ false, srepos,
+#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ file, line, script,
+ "c", "s", cvs_cmd_name,
+#ifdef SERVER_SUPPORT
+ "R", "s", referrer
+ ? referrer->original : "NONE",
+#endif /* SERVER_SUPPORT */
+ "p", "s", srepos,
+ "r", "s",
+ current_parsed_root->directory,
+ "l", "s", vpd->fname,
+ "sV", ",", vpd->changes,
+ logmsg_list_to_args_proc, (void *) NULL,
+ (char *) NULL);
+
+#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
+ if (newscript) free (newscript);
+#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+
+ if (!verifymsg_script || !strlen (verifymsg_script))
+ {
+ if (verifymsg_script) free (verifymsg_script);
+ verifymsg_script = NULL;
+ error (0, 0, "%s:%d: verifymsg proc resolved to the empty string!",
+ file, line);
+ return 1;
+ }
+
+ run_setup (verifymsg_script);
+
+ free (verifymsg_script);
+
+ /* FIXME - because run_exec can return negative values and Parse_Info adds
+ * the values of each call to this function to get a total error, we are
+ * calling abs on the value of run_exec to ensure two errors do not sum to
+ * zero.
+ *
+ * The only REALLY obnoxious thing about this, I guess, is that a -1 return
+ * code from run_exec can mean we failed to call the process for some
+ * reason and should care about errno or that the process we called
+ * returned -1 and the value of errno is undefined. In other words,
+ * run_exec should probably be rewritten to have two return codes. one
+ * which is its own exit status and one which is the child process's. So
+ * there. :P
+ *
+ * Once run_exec is returning two error codes, we should probably be
+ * failing here with an error message including errno when we get the
+ * return code which means we care about errno, in case you missed that
+ * little tidbit.
+ *
+ * I do happen to know we just fail for a non-zero value anyway and I
+ * believe the docs actually state that if the verifymsg_proc returns a
+ * "non-zero" value we will fail.
+ */
+ return abs (run_exec (RUN_TTY, RUN_TTY, RUN_TTY,
+ RUN_NORMAL | RUN_SIGIGNORE));
+}
+
+
+
/* Runs the user-defined verification script as part of the commit or import
process. This verification is meant to be run whether or not the user
included the -m attribute. unlike the do_editor function, this is
@@ -540,47 +721,6 @@
/*
- * callback proc for Parse_Info for rcsinfo templates this routine basically
- * copies the matching template onto the end of the tempfile we are setting
- * up
- */
-/* ARGSUSED */
-static int
-rcsinfo_proc (const char *repository, const char *template, void *closure)
-{
- static char *last_template;
- FILE *tfp;
-
- /* nothing to do if the last one included is the same as this one */
- if (last_template && STREQ (last_template, template))
- return (0);
- if (last_template)
- free (last_template);
- last_template = xstrdup (template);
-
- if ((tfp = CVS_FOPEN (template, "r")) != NULL)
- {
- char *line = NULL;
- size_t line_chars_allocated = 0;
-
- while (getline (&line, &line_chars_allocated, tfp) >= 0)
- (void) fputs (line, fp);
- if (ferror (tfp))
- error (0, errno, "warning: cannot read %s", template);
- if (fclose (tfp) < 0)
- error (0, errno, "warning: cannot close %s", template);
- if (line)
- free (line);
- return (0);
- }
- else
- {
- error (0, errno, "Couldn't open rcsinfo template file %s", template);
- return (1);
- }
-}
-
-/*
* Uses setup_tmpfile() to pass the updated message on directly to any
* logfile programs that have a regular expression match for the checked in
* directory in the source repository. The log information is fed into the
@@ -594,43 +734,184 @@
-void
-Update_Logfile (const char *repository, const char *xmessage, FILE *xlogfp,
- List *xchanges)
+/*
+ * Writes some stuff to the logfile "filter" and returns the status of the
+ * filter program.
+ */
+static int
+logfile_write (const char *repository, const char *filter,
+ const char *file, int line, const char *message,
+ FILE *logfp, List *changes)
{
- struct ulp_data ud;
+ char *cmdline;
+ FILE *pipefp;
+ char *cp;
+ int c;
+ int pipestatus;
+ const char *srepos = Short_Repository (repository);
- /* nothing to do if the list is empty */
- if (xchanges == NULL || xchanges->list->next == xchanges->list)
- return;
+ assert (repository);
- /* set up vars for update_logfile_proc */
- ud.message = xmessage;
- ud.logfp = xlogfp;
- ud.changes = xchanges;
+ /* The user may specify a format string as part of the filter.
+ Originally, `%s' was the only valid string. The string that
+ was substituted for it was:
- /* call Parse_Info to do the actual logfile updates */
- (void) Parse_Info (CVSROOTADM_LOGINFO, repository, update_logfile_proc,
- PIOPT_ALL, &ud);
-}
+ <repository-name> <file1> <file2> <file3> ...
+ Each file was either a new directory/import (T_TITLE), or a
+ added (T_ADDED), modified (T_MODIFIED), or removed (T_REMOVED)
+ file.
+ It is desirable to preserve that behavior so lots of commitlog
+ scripts won't die when they get this new code. At the same
+ time, we'd like to pass other information about the files (like
+ version numbers, statuses, or checkin times).
-/*
- * callback proc to actually do the logfile write from Update_Logfile
- */
-static int
-update_logfile_proc (const char *repository, const char *filter, void *closure)
-{
- struct ulp_data *udp = closure;
- TRACE (TRACE_FUNCTION, "update_logfile_proc(%s,%s)", repository, filter);
- return logfile_write (repository, filter, udp->message, udp->logfp,
- udp->changes);
-}
+ The solution is to allow a format string that allows us to
+ specify those other pieces of information. The format string
+ will be composed of `%' followed by a single format character,
+ or followed by a set of format characters surrounded by `{' and
+ `}' as separators. The format characters are:
+ s = file name
+ a = file action (status)
+ V = old version number (pre-checkin)
+ v = new version number (post-checkin)
+ For example, valid format strings are:
-/* static int
+ %{}
+ %s
+ %{s}
+ %{sVv}
+
+ There's no reason that more items couldn't be added (like
+ modification date or file status [added, modified, updated,
+ etc.]) -- the code modifications would be minimal (logmsg.c
+ (title_proc) and commit.c (check_fileproc)).
+
+ The output will be a string of tokens separated by spaces. For
+ backwards compatibility, the the first token will be the
+ repository name. The rest of the tokens will be
+ comma-delimited lists of the information requested in the
+ format string. For example, if `/u/src/master' is the
+ repository, `%{sVv}' is the format string, and three files
+ (ChangeLog, Makefile, foo.c) were modified, the output might
+ be:
+
+ /u/src/master ChangeLog,1.1,1.2 Makefile,1.3,1.4 foo.c,1.12,1.13
+
+ Why this duplicates the old behavior when the format string is
+ `%s' is left as an exercise for the reader. */
+
+ /* %c = cvs_cmd_name
+ * %p = shortrepos
+ * %r = repository
+ * %{saVv} = file name, file action (status)
+ old revision (precommit), new revision (postcommit)
+ */
+ /*
+ * Cast any NULL arguments as appropriate pointers as this is an
+ * stdarg function and we need to be certain the caller gets what
+ * is expected.
+ */
+ cmdline = format_cmdline (
+#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
+ !config->UseNewInfoFmtStrings, srepos,
+#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ file, line, filter,
+ "c", "s", cvs_cmd_name,
+#ifdef SERVER_SUPPORT
+ "R", "s", referrer ? referrer->original : "NONE",
+#endif /* SERVER_SUPPORT */
+ "p", "s", srepos,
+ "r", "s", current_parsed_root->directory,
+ "saTVv", ",", changes,
+ logmsg_list_to_args_proc, (void *) NULL,
+ (char *) NULL);
+ if (!cmdline || !strlen (cmdline))
+ {
+ if (cmdline) free (cmdline);
+ error (0, 0, "%s:%d: logmsg proc resolved to the empty string!",
+ file, line);
+ return 1;
+ }
+
+ if ((pipefp = run_popen (cmdline, "w")) == NULL)
+ {
+ if (!noexec)
+ error (0, 0, "%s:%d: cannot write entry to log filter: %s",
+ file, line, quote (cmdline));
+ free (cmdline);
+ return 1;
+ }
+ (void) fprintf (pipefp, "Update of %s\n", repository);
+ (void) fprintf (pipefp, "In directory %s:", hostname);
+ cp = xgetcwd ();
+ if (cp == NULL)
+ fprintf (pipefp, "<cannot get working directory: %s>\n\n",
+ strerror (errno));
+ else
+ {
+ fprintf (pipefp, "%s\n\n", cp);
+ free (cp);
+ }
+
+ setup_tmpfile (pipefp, "", changes);
+ (void) fprintf (pipefp, "Log Message:\n%s\n", (message) ? message : "");
+ if (logfp)
+ {
+ (void) fprintf (pipefp, "Status:\n");
+ rewind (logfp);
+ while ((c = getc (logfp)) != EOF)
+ (void) putc (c, pipefp);
+ }
+ free (cmdline);
+ pipestatus = pclose (pipefp);
+ return ((pipestatus == -1) || (pipestatus == 127)) ? 1 : 0;
+}
+
+
+
+/*
+ * callback proc to actually do the logfile write from Update_Logfile
+ */
+static int
+update_logfile_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
+{
+ struct ulp_data *udp = closure;
+ TRACE (TRACE_FUNCTION, "update_logfile_proc (%s, %s, %s, %d)",
+ repository, filter, file, line);
+ return logfile_write (repository, filter, file, line,
+ udp->message, udp->logfp, udp->changes);
+}
+
+
+
+void
+Update_Logfile (const char *repository, const char *xmessage, FILE *xlogfp,
+ List *xchanges)
+{
+ struct ulp_data ud;
+
+ /* nothing to do if the list is empty */
+ if (xchanges == NULL || xchanges->list->next == xchanges->list)
+ return;
+
+ /* set up vars for update_logfile_proc */
+ ud.message = xmessage;
+ ud.logfp = xlogfp;
+ ud.changes = xchanges;
+
+ /* call Parse_Info to do the actual logfile updates */
+ Parse_Info (CVSROOTADM_LOGINFO, repository, update_logfile_proc,
+ PIOPT_ALL, &ud);
+}
+
+
+
+/* static int
* logmsg_list_to_args_proc( Node *p, void *closure )
* This function is intended to be passed into walklist() with a list of tags
* (nodes in the same format as pretag_list_proc() accepts - p->key = tagname
@@ -765,267 +1046,3 @@
*c->d = d;
return 0;
}
-
-
-
-/*
- * Writes some stuff to the logfile "filter" and returns the status of the
- * filter program.
- */
-static int
-logfile_write (const char *repository, const char *filter, const char *message,
- FILE *logfp, List *changes)
-{
- char *cmdline;
- FILE *pipefp;
- char *cp;
- int c;
- int pipestatus;
- const char *srepos = Short_Repository (repository);
-
- assert (repository);
-
- /* The user may specify a format string as part of the filter.
- Originally, `%s' was the only valid string. The string that
- was substituted for it was:
-
- <repository-name> <file1> <file2> <file3> ...
-
- Each file was either a new directory/import (T_TITLE), or a
- added (T_ADDED), modified (T_MODIFIED), or removed (T_REMOVED)
- file.
-
- It is desirable to preserve that behavior so lots of commitlog
- scripts won't die when they get this new code. At the same
- time, we'd like to pass other information about the files (like
- version numbers, statuses, or checkin times).
-
- The solution is to allow a format string that allows us to
- specify those other pieces of information. The format string
- will be composed of `%' followed by a single format character,
- or followed by a set of format characters surrounded by `{' and
- `}' as separators. The format characters are:
-
- s = file name
- a = file action (status)
- V = old version number (pre-checkin)
- v = new version number (post-checkin)
-
- For example, valid format strings are:
-
- %{}
- %s
- %{s}
- %{sVv}
-
- There's no reason that more items couldn't be added (like
- modification date or file status [added, modified, updated,
- etc.]) -- the code modifications would be minimal (logmsg.c
- (title_proc) and commit.c (check_fileproc)).
-
- The output will be a string of tokens separated by spaces. For
- backwards compatibility, the the first token will be the
- repository name. The rest of the tokens will be
- comma-delimited lists of the information requested in the
- format string. For example, if `/u/src/master' is the
- repository, `%{sVv}' is the format string, and three files
- (ChangeLog, Makefile, foo.c) were modified, the output might
- be:
-
- /u/src/master ChangeLog,1.1,1.2 Makefile,1.3,1.4 foo.c,1.12,1.13
-
- Why this duplicates the old behavior when the format string is
- `%s' is left as an exercise for the reader. */
-
- /* %c = cvs_cmd_name
- * %p = shortrepos
- * %r = repository
- * %{saVv} = file name, file action (status)
- old revision (precommit), new revision (postcommit)
- */
- /*
- * Cast any NULL arguments as appropriate pointers as this is an
- * stdarg function and we need to be certain the caller gets what
- * is expected.
- */
- cmdline = format_cmdline (
-#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
- !config->UseNewInfoFmtStrings, srepos,
-#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
- "c", "s", cvs_cmd_name,
-#ifdef SERVER_SUPPORT
- "R", "s", referrer ? referrer->original : "NONE",
-#endif /* SERVER_SUPPORT */
- "p", "s", srepos,
- "r", "s", current_parsed_root->directory,
- "saTVv", ",", changes,
- logmsg_list_to_args_proc, (void *) NULL,
- (char *) NULL);
- if (!cmdline || !strlen (cmdline))
- {
- if (cmdline) free (cmdline);
- error (0, 0, "logmsg proc resolved to the empty string!");
- return 1;
- }
-
- if ((pipefp = run_popen (cmdline, "w")) == NULL)
- {
- if (!noexec)
- error (0, 0, "cannot write entry to log filter: %s", cmdline);
- free (cmdline);
- return 1;
- }
- (void) fprintf (pipefp, "Update of %s\n", repository);
- (void) fprintf (pipefp, "In directory %s:", hostname);
- cp = xgetcwd ();
- if (cp == NULL)
- fprintf (pipefp, "<cannot get working directory: %s>\n\n",
- strerror (errno));
- else
- {
- fprintf (pipefp, "%s\n\n", cp);
- free (cp);
- }
-
- setup_tmpfile (pipefp, "", changes);
- (void) fprintf (pipefp, "Log Message:\n%s\n", (message) ? message : "");
- if (logfp)
- {
- (void) fprintf (pipefp, "Status:\n");
- rewind (logfp);
- while ((c = getc (logfp)) != EOF)
- (void) putc (c, pipefp);
- }
- free (cmdline);
- pipestatus = pclose (pipefp);
- return ((pipestatus == -1) || (pipestatus == 127)) ? 1 : 0;
-}
-
-
-
-/* This routine is called by Parse_Info. It runs the
- * message verification script.
- */
-static int
-verifymsg_proc (const char *repository, const char *script, void *closure)
-{
- char *verifymsg_script;
-#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
- char *newscript = NULL;
-#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- struct verifymsg_proc_data *vpd = closure;
- const char *srepos = Short_Repository (repository);
-
-#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
- if (!strchr (script, '%'))
- {
- error (0, 0,
- "warning: verifymsg line doesn't contain any format strings:\n"
- " \"%s\"\n"
- "Appending default format string (\" %%l\"), but be aware that
this usage is\n"
- "deprecated.", script);
- script = newscript = Xasprintf ("%s %%l", script);
- }
-#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
-
- /* If we don't already have one, open a temporary file, write the message
- * to the temp file, and close the file.
- *
- * We do this here so that we only create the file when there is a
- * verifymsg script specified and we only create it once when there is
- * more than one verifymsg script specified.
- */
- if (vpd->fname == NULL)
- {
- FILE *fp;
- if ((fp = cvs_temp_file (&(vpd->fname))) == NULL)
- error (1, errno, "cannot create temporary file %s", vpd->fname);
-
- if (vpd->message != NULL)
- fputs (vpd->message, fp);
- if (vpd->message == NULL ||
- (vpd->message)[0] == '\0' ||
- (vpd->message)[strlen (vpd->message) - 1] != '\n')
- putc ('\n', fp);
- if (fclose (fp) == EOF)
- error (1, errno, "%s", vpd->fname);
-
- if (config->RereadLogAfterVerify == LOGMSG_REREAD_STAT)
- {
- /* Remember the status of the temp file for later */
- if (stat (vpd->fname, &(vpd->pre_stbuf)) != 0)
- error (1, errno, "cannot stat temp file %s", vpd->fname);
-
- /*
- * See if we need to sleep before running the verification
- * script to avoid time-stamp races.
- */
- sleep_past (vpd->pre_stbuf.st_mtime);
- }
- } /* if (vpd->fname == NULL) */
-
- /*
- * Cast any NULL arguments as appropriate pointers as this is an
- * stdarg function and we need to be certain the caller gets what
- * is expected.
- */
- verifymsg_script = format_cmdline (
-#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
- false, srepos,
-#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- script,
- "c", "s", cvs_cmd_name,
-#ifdef SERVER_SUPPORT
- "R", "s", referrer
- ? referrer->original : "NONE",
-#endif /* SERVER_SUPPORT */
- "p", "s", srepos,
- "r", "s",
- current_parsed_root->directory,
- "l", "s", vpd->fname,
- "sV", ",", vpd->changes,
- logmsg_list_to_args_proc, (void *) NULL,
- (char *) NULL);
-
-#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
- if (newscript) free (newscript);
-#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
-
- if (!verifymsg_script || !strlen (verifymsg_script))
- {
- if (verifymsg_script) free (verifymsg_script);
- verifymsg_script = NULL;
- error (0, 0, "verifymsg proc resolved to the empty string!");
- return 1;
- }
-
- run_setup (verifymsg_script);
-
- free (verifymsg_script);
-
- /* FIXME - because run_exec can return negative values and Parse_Info adds
- * the values of each call to this function to get a total error, we are
- * calling abs on the value of run_exec to ensure two errors do not sum to
- * zero.
- *
- * The only REALLY obnoxious thing about this, I guess, is that a -1 return
- * code from run_exec can mean we failed to call the process for some
- * reason and should care about errno or that the process we called
- * returned -1 and the value of errno is undefined. In other words,
- * run_exec should probably be rewritten to have two return codes. one
- * which is its own exit status and one which is the child process's. So
- * there. :P
- *
- * Once run_exec is returning two error codes, we should probably be
- * failing here with an error message including errno when we get the
- * return code which means we care about errno, in case you missed that
- * little tidbit.
- *
- * I do happen to know we just fail for a non-zero value anyway and I
- * believe the docs actually state that if the verifymsg_proc returns a
- * "non-zero" value we will fail.
- */
- return abs (run_exec (RUN_TTY, RUN_TTY, RUN_TTY,
- RUN_NORMAL | RUN_SIGIGNORE));
-}
Index: main.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/main.c,v
retrieving revision 1.277
retrieving revision 1.278
diff -u -b -r1.277 -r1.278
--- main.c 28 Jan 2008 05:32:59 -0000 1.277
+++ main.c 12 Sep 2008 19:55:28 -0000 1.278
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -22,16 +22,17 @@
# include <config.h>
#endif
-/* GNULIB Headers. */
+/* GNULIB */
#include "closeout.h"
#include "setenv.h"
#include "strftime.h"
#include "xgethostname.h"
-/* CVS Headers. */
+/* CVS */
#include "command_line_opt.h"
#include "gpg.h"
#include "lock.h"
+#include "parseinfo.h"
#include "sign.h"
#include "verify.h"
Index: parseinfo.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/parseinfo.c,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -b -r1.94 -r1.95
--- parseinfo.c 11 Mar 2008 00:33:11 -0000 1.94
+++ parseinfo.c 12 Sep 2008 19:55:28 -0000 1.95
@@ -173,7 +173,8 @@
expand_path (value, current_parsed_root->directory,
true, infofile, line_number)))
{
- err += callproc (repository, expanded_value, closure);
+ err += callproc (repository, expanded_value,
+ infofile, line_number, closure);
free (expanded_value);
}
else
@@ -201,7 +202,8 @@
true, infofile, line_number);
if (expanded_value)
{
- err += callproc (repository, expanded_value, closure);
+ err += callproc (repository, expanded_value,
+ infofile, line_number, closure);
free (expanded_value);
}
else
@@ -221,7 +223,8 @@
true, infofile, line_number);
if (expanded_value)
{
- err += callproc (repository, expanded_value, closure);
+ err += callproc (repository, expanded_value,
+ infofile, line_number, closure);
free (expanded_value);
}
else
Index: parseinfo.h
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/parseinfo.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- parseinfo.h 28 Aug 2007 17:33:14 -0000 1.9
+++ parseinfo.h 12 Sep 2008 19:55:29 -0000 1.10
@@ -94,6 +94,20 @@
+/* Option flags for Parse_Info(). */
+#define PIOPT_ALL 1 /* accept "all" keyword */
+
+
+
+/* Callback proc for Parse_Info(). */
+typedef int (*CALLPROC) (const char *repository, const char *value,
+ const char *filename, int linenum, void *closure);
+
+
+
+/* Function prototypes. */
+int Parse_Info (const char *infofile, const char *repository,
+ CALLPROC callproc, int opt, void *closure);
bool parse_error (const char *, unsigned int);
struct config *parse_config (const char *, const char *);
void free_config (struct config *data);
Index: rcs.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/rcs.c,v
retrieving revision 1.393
retrieving revision 1.394
diff -u -b -r1.393 -r1.394
--- rcs.c 12 Sep 2008 19:46:46 -0000 1.393
+++ rcs.c 12 Sep 2008 19:55:29 -0000 1.394
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -22,16 +22,18 @@
/* Verify interface. */
#include "rcs.h"
-/* GNULIB headers. */
+/* GNULIB */
#include "base64.h"
-/* CVS headers. */
+/* CVS */
#include "edit.h"
+#include "getpagesize.h"
#include "gpg.h"
#include "hardlink.h"
#ifdef HAVE_MMAP
# include "mman.h"
#endif
+#include "parseinfo.h"
#include "repos.h"
#include "sign.h"
Index: root.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/root.c,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -b -r1.136 -r1.137
--- root.c 10 Sep 2008 16:43:54 -0000 1.136
+++ root.c 12 Sep 2008 19:55:29 -0000 1.137
@@ -1,7 +1,7 @@
/*
* Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -29,6 +29,7 @@
#include "quote.h"
/* CVS */
+#include "parseinfo.h"
#include "repos.h"
#include "stack.h"
Index: sanity.sh
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/sanity.sh,v
retrieving revision 1.1200
retrieving revision 1.1201
diff -u -b -r1.1200 -r1.1201
--- sanity.sh 12 Sep 2008 15:43:12 -0000 1.1200
+++ sanity.sh 12 Sep 2008 19:55:29 -0000 1.1201
@@ -20113,8 +20113,7 @@
new revision: 1\.[0-9]*; previous revision: 1\.[0-9]*
$SPROG commit: Rebuilding administrative file database
$SPROG commit: loginfo:[0-9]*: no such user variable \${=MYENV}
-$SPROG \[commit aborted\]: Unknown format character in info file ('').
-Info files are the hook files, verifymsg, taginfo, commitinfo, etc\."
+$SPROG \[commit aborted\]: loginfo:[0-9]*: Unknown format character (\`')\."
cd ..
modify_repo mkdir $CVSROOT_DIRNAME/first-dir
@@ -20301,124 +20300,169 @@
"${SPROG}"' add: scheduling file `file1'\'' for addition
'"${SPROG}"' add: use .'"${SPROG}"' commit. to add this file permanently'
echo "cvs -s OTHER=not-this -s MYENV=env-" >>$HOME/.cvsrc
- dotest info-intfmt-6b "${testcvs} -q -s OTHER=value ci -m add-it" \
-"${TESTDIR}/$CVSROOTDIR/third-dir/file1,v <-- file1
+ dotest info-intfmt-6b "$testcvs -q -s OTHER=value ci -m add-it" \
+"$TESTDIR/$CVSROOTDIR/third-dir/file1,v <-- file1
initial revision: 1\.1
-${SPROG} commit: loginfo:[0-9]*: no such user variable \${=ZEE}
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\."
+$SPROG commit: loginfo:[0-9]*: no such user variable \${=ZEE}
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\."
echo line0 >>file1
- dotest info-intfmt-6c "${testcvs} -q -sOTHER=foo ci -m mod-it" \
+ dotest info-intfmt-6c "$testcvs -q -sOTHER=foo ci -m mod-it" \
"$TESTDIR/$CVSROOTDIR/third-dir/file1,v <-- file1
new revision: 1\.2; previous revision: 1\.1
-${SPROG} commit: loginfo:[0-9]*: no such user variable \${=ZEE}
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\."
+$SPROG commit: loginfo:[0-9]*: no such user variable \${=ZEE}
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\."
echo line1 >>file1
- dotest info-intfmt-7 "${testcvs} -q -s OTHER=value -s ZEE=z ci -m
mod-it" \
+ dotest info-intfmt-7 "$testcvs -q -s OTHER=value -s ZEE=z ci -m
mod-it" \
"$TESTDIR/$CVSROOTDIR/third-dir/file1,v <-- file1
new revision: 1\.3; previous revision: 1\.2
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\."
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\."
rm file1
dotest info-intfmt-8 "${testcvs} -q rm -f file1" \
"${SPROG} remove: use .${SPROG} commit. to remove this file permanently"
- dotest info-intfmt-8a "${testcvs} -q ci -m remove-it" \
+ dotest info-intfmt-8a "$testcvs -q ci -m remove-it" \
"$TESTDIR/$CVSROOTDIR/third-dir/file1,v <-- file1
new revision: delete; previous revision: 1\.3
-${SPROG} commit: loginfo:[0-9]*: no such user variable \${=ZEE}
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\."
+$SPROG commit: loginfo:[0-9]*: no such user variable \${=ZEE}
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\."
echo "resurrected file1" >file1
dotest info-8b "$testcvs add file1" \
"$SPROG add: Re-adding file \`file1' after dead revision 1\.4\.
$SPROG add: use \`$SPROG commit' to add this file permanently"
- dotest info-8c "${testcvs} -q ci -m add-it" \
+ dotest info-8c "$testcvs -q ci -m add-it" \
"$TESTDIR/$CVSROOTDIR/third-dir/file1,v <-- file1
new revision: 1.5; previous revision: 1\.4
-${SPROG} commit: loginfo:[0-9]*: no such user variable \${=ZEE}
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\.
-${SPROG} commit: Using deprecated info format strings\. Convert your scripts
to use
-the new argument format and remove '1's from your info file format strings\."
+$SPROG commit: loginfo:[0-9]*: no such user variable \${=ZEE}
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\.
+$SPROG commit: loginfo:[0-9]*: Using deprecated info format strings\. Convert
your
+scripts to use the new argument format and remove '1's from your info file
+format strings\."
cd ..
dotest info-intfmt-9 "cat $TESTDIR/testlog"
"xenv-valueyz=${username}=$TESTDIR/$CVSROOTDIR="
@@ -20964,16 +21008,14 @@
and set UseNewInfoFmtStrings=yes in CVSROOT/config\. After that, convert
individual command lines and scripts to handle the new format at your
leisure\."
- dotest taginfo-6 "${testcvs} -q tag tag1" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-6 "$testcvs -q tag tag1" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\.
T file1"
- dotest taginfo-7 "${testcvs} -q tag -b br" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-7 "$testcvs -q tag -b br" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\.
T file1"
dotest taginfo-8 "$testcvs -q update -r br" 'U file1'
@@ -20989,70 +21031,61 @@
and set UseNewInfoFmtStrings=yes in CVSROOT/config\. After that, convert
individual command lines and scripts to handle the new format at your
leisure\."
- dotest taginfo-10 "${testcvs} -q tag -F -c brtag" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-10 "$testcvs -q tag -F -c brtag" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\.
T file1"
- dotest_fail taginfo-11 "${testcvs} -q tag rejectme" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest_fail taginfo-11 "$testcvs -q tag rejectme" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\.
-${SPROG} tag: Pre-tag check failed
-${SPROG} \[tag aborted\]: correct the above errors first!"
+$SPROG tag: Pre-tag check failed
+$SPROG \[tag aborted\]: correct the above errors first!"
# When we are using taginfo to allow/disallow, it would be
# convenient to be able to use "cvs -n tag" to test whether
# the allow/disallow functionality is working as expected.
- dotest taginfo-12 "${testcvs} -nq tag rejectme" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-12 "$testcvs -nq tag rejectme" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\.
T file1"
# But when taginfo is used for logging, it is a pain for -n
# to call taginfo, since taginfo doesn't know whether -n was
# specified or not.
- dotest taginfo-13 "${testcvs} -nq tag would-be-tag" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-13 "$testcvs -nq tag would-be-tag" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\.
T file1"
# Deleting: the cases are basically either the tag existed,
# or it didn't exist.
- dotest taginfo-14 "${testcvs} -q tag -d tag1" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-14 "$testcvs -q tag -d tag1" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\.
D file1"
- dotest taginfo-15 "${testcvs} -q tag -d tag1" \
-"${SPROG} tag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-15 "$testcvs -q tag -d tag1" \
+"$SPROG tag: taginfo:[0-9]*: warning: taginfo line contains no format strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\."
# Likewise with rtag.
- dotest taginfo-16 "${testcvs} -q rtag tag1 first-dir" \
-"${SPROG} rtag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-16 "$testcvs -q rtag tag1 first-dir" \
+"$SPROG rtag: taginfo:[0-9]*: warning: taginfo line contains no format
strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\."
- dotest taginfo-17 "${testcvs} -q rtag -d tag1 first-dir" \
-"${SPROG} rtag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-17 "$testcvs -q rtag -d tag1 first-dir" \
+"$SPROG rtag: taginfo:[0-9]*: warning: taginfo line contains no format
strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\."
- dotest taginfo-18 "${testcvs} -q rtag -d tag1 first-dir" \
-"${SPROG} rtag: warning: taginfo line contains no format strings:
- \"${TESTDIR}/1/loggit\"
-Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
+ dotest taginfo-18 "$testcvs -q rtag -d tag1 first-dir" \
+"$SPROG rtag: taginfo:[0-9]*: warning: taginfo line contains no format
strings\.
+Filling in old defaults (\` %t %o %p %{sv}'), but please be aware that this
usage is deprecated\."
# The "br" example should be passing 1.1.2 or 1.1.0.2.
@@ -29059,11 +29092,10 @@
fi
echo more stuff >> a-lock
dotest_fail_sort reserved-13b "$testcvs ci -m '' a-lock" \
-" \"$TESTDIR/lockme\"
-Appending defaults (\" %r/%p %s\"), but please be aware that this usage is
+"Appending defaults (\` %r/%p %s'), but please be aware that this usage is
$SPROG \[commit aborted\]: correct above errors first!
$SPROG commit: Pre-commit check failed
-$SPROG commit: warning: commitinfo line contains no format strings:
+$SPROG commit: commitinfo:[0-9]*: warning: commitinfo line contains no format
strings\.
deprecated\.
fred has file a-lock locked for version 1\.1"
# OK, now test "cvs admin -l" in the case where someone
@@ -29078,9 +29110,8 @@
1\.1 unlocked
done"
dotest reserved-15 "$testcvs -q ci -m success a-lock" \
-"$SPROG commit: warning: commitinfo line contains no format strings:
- \"$TESTDIR/lockme\"
-Appending defaults (\" %r/%p %s\"), but please be aware that this usage is
+"$SPROG commit: commitinfo:[0-9]*: warning: commitinfo line contains no format
strings\.
+Appending defaults (\` %r/%p %s'), but please be aware that this usage is
deprecated\.
$CVSROOT_DIRNAME/first-dir/a-lock,v <-- a-lock
new revision: 1\.2; previous revision: 1\.1"
@@ -29095,9 +29126,8 @@
dotest reserved-18 "$testcvs -q update -r br a-lock" 'U a-lock'
echo edit it >>a-lock
dotest reserved-19 "${testcvs} -q ci -m modify a-lock" \
-"$SPROG commit: warning: commitinfo line contains no format strings:
- \"$TESTDIR/lockme\"
-Appending defaults (\" %r/%p %s\"), but please be aware that this usage is
+"$SPROG commit: commitinfo:[0-9]*: warning: commitinfo line contains no format
strings\.
+Appending defaults (\` %r/%p %s'), but please be aware that this usage is
deprecated\.
$CVSROOT_DIRNAME/first-dir/a-lock,v <-- a-lock
new revision: 1\.2\.2\.1; previous revision: 1\.2"
@@ -29105,10 +29135,9 @@
# undo commitinfo changes
cd ../CVSROOT
echo '# vanilla commitinfo' >commitinfo
- dotest reserved-cleanup-1 "${testcvs} -q ci -m back commitinfo" \
-"$SPROG commit: warning: commitinfo line contains no format strings:
- \"$TESTDIR/lockme\"
-Appending defaults (\" %r/%p %s\"), but please be aware that this usage is
+ dotest reserved-cleanup-1 "$testcvs -q ci -m back commitinfo" \
+"$SPROG commit: commitinfo:[0-9]*: warning: commitinfo line contains no format
strings\.
+Appending defaults (\` %r/%p %s'), but please be aware that this usage is
deprecated\.
$CVSROOT_DIRNAME/CVSROOT/commitinfo,v <-- commitinfo
new revision: 1\.3; previous revision: 1\.2
Index: server.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/server.c,v
retrieving revision 1.482
retrieving revision 1.483
diff -u -b -r1.482 -r1.483
--- server.c 12 Sep 2007 19:38:04 -0000 1.482
+++ server.c 12 Sep 2008 19:55:30 -0000 1.483
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Free Software Foundation, Inc.
+ * Copyright (C) 2008 The Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -19,13 +19,14 @@
/* Validate API. */
#include "server.h"
-/* GNULIB headers. */
+/* GNULIB */
#include "getnline.h"
+#include "quote.h"
#include "setenv.h"
#include "vasnprintf.h"
#include "wait.h"
-/* CVS headers. */
+/* CVS */
#include "base.h"
#include "buffer.h"
#include "command_line_opt.h"
@@ -34,6 +35,7 @@
#include "gpg.h"
#include "ignore.h"
#include "lock.h"
+#include "parseinfo.h"
#include "repos.h"
#include "watch.h"
#include "wrapper.h"
@@ -2400,7 +2402,8 @@
* callback proc to run a script when admin finishes.
*/
static int
-prepost_proxy_proc (const char *repository, const char *filter, void *closure)
+prepost_proxy_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
{
char *cmdline;
bool *pre = closure;
@@ -2409,8 +2412,8 @@
* %p = shortrepos
* %r = repository
*/
- TRACE (TRACE_FUNCTION, "prepost_proxy_proc (%s, %s, %s)", repository,
- filter, *pre ? "pre" : "post");
+ TRACE (TRACE_FUNCTION, "prepost_proxy_proc (%s, %s, %s, %d, %s)",
+ repository, filter, file, line, *pre ? "pre" : "post");
/*
* Cast any NULL arguments as appropriate pointers as this is an
@@ -2421,7 +2424,7 @@
# ifdef SUPPORT_OLD_INFO_FMT_STRINGS
0, ".",
# endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
+ file, line, filter,
"c", "s", cvs_cmd_name,
"R", "s", referrer ? referrer->original : "NONE",
"p", "s", ".",
@@ -2431,11 +2434,14 @@
if (!cmdline || !strlen (cmdline))
{
+ const char *type;
if (cmdline) free (cmdline);
if (*pre)
- error (0, 0, "preadmin proc resolved to the empty string!");
+ type = "preadmin";
else
- error (0, 0, "postadmin proc resolved to the empty string!");
+ type = "postadmin";
+ error (0, 0, "%s:%d: %s proc resolved to the empty string!",
+ file, line, type);
return 1;
}
@@ -5473,7 +5479,8 @@
};
static int
-template_proc (const char *repository, const char *template, void *closure)
+template_proc (const char *repository, const char *template,
+ const char *file, int line, void *closure)
{
FILE *fp;
char buf[1024];
@@ -5491,12 +5498,14 @@
fp = CVS_FOPEN (template, "rb");
if (fp == NULL)
{
- error (0, errno, "Couldn't open rcsinfo template file %s", template);
+ error (0, errno, "%s:%d: Couldn't open rcsinfo template file %s",
+ file, line, quote (template));
return 1;
}
if (fstat (fileno (fp), &sb) < 0)
{
- error (0, errno, "cannot stat rcsinfo template file %s", template);
+ error (0, errno, "%s:%d: cannot stat rcsinfo template file %s",
+ file, line, quote (template));
return 1;
}
sprintf (buf, "%ld\n", (long) sb.st_size);
@@ -5507,14 +5516,16 @@
buf_output (protocol, buf, n);
if (ferror (fp))
{
- error (0, errno, "cannot read rcsinfo template file %s", template);
+ error (0, errno, "%s:%d: cannot read rcsinfo template file %s",
+ file, line, quote (template));
(void) fclose (fp);
return 1;
}
}
buf_send_counted (protocol);
if (fclose (fp) < 0)
- error (0, errno, "cannot close rcsinfo template file %s", template);
+ error (0, errno, "%s:%d: cannot close rcsinfo template file %s",
+ file, line, quote (template));
return 0;
}
@@ -5558,7 +5569,7 @@
struct template_proc_data data;
data.update_dir = update_dir;
data.repository = repository;
- (void) Parse_Info (CVSROOTADM_RCSINFO, repository, template_proc,
+ Parse_Info (CVSROOTADM_RCSINFO, repository, template_proc,
PIOPT_ALL, &data);
}
Index: sign.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/sign.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- sign.c 12 Sep 2007 17:27:24 -0000 1.13
+++ sign.c 12 Sep 2008 19:55:30 -0000 1.14
@@ -282,7 +282,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- get_sign_template (),
+ "sign template", 1, get_sign_template (),
"@", ",", get_sign_args (),
sign_args_list_to_args_proc, (void *) NULL,
"r", "s", current_parsed_root->directory,
Index: subr.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/subr.c,v
retrieving revision 1.168
retrieving revision 1.169
diff -u -b -r1.168 -r1.169
--- subr.c 9 Sep 2008 16:55:24 -0000 1.168
+++ subr.c 12 Sep 2008 19:55:31 -0000 1.169
@@ -33,6 +33,7 @@
#include "filenamecat.h"
#include "mkdir-p.h"
#include "mreadlink.h"
+#include "quote.h"
#include "savewd.h"
#include "vasnprintf.h"
@@ -1114,11 +1115,11 @@
* disposing of this string.
*/
char *
+format_cmdline (
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
-format_cmdline (bool oldway, const char *srepos, const char *format, ...)
-#else /* SUPPORT_OLD_INFO_FMT_STRINGS */
-format_cmdline (const char *format, ...)
+ bool oldway, const char *srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ const char *file, int line, const char *format, ...)
{
va_list args; /* our input function args */
char *buf; /* where we store our output string */
@@ -1655,10 +1656,11 @@
s++;
if (!oldway)
{
- /* FIXME - add FILE && LINE */
error (0, 0,
-"Using deprecated info format strings. Convert your scripts to use\n"
-"the new argument format and remove '1's from your info file format strings.");
+"%s:%d: Using deprecated info format strings. Convert your\n"
+"scripts to use the new argument format and remove '1's from your info file\n"
+"format strings.",
+ file, line);
}
}
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
@@ -1689,15 +1691,11 @@
* - we had an empty fmt string or didn't find a list
* terminator ('}')
*/
- /* FIXME - this wants a file name and line number in a bad
- * way.
- */
error(1, 0,
-"unterminated format string encountered in command spec.\n"
-"This error is likely to have been caused by an invalid line in a hook
script\n"
-"spec (see taginfo, loginfo, verifymsginfo, etc. in the Cederqvist). Most\n"
-"likely the offending line would end with a '%%' character or contain a
string\n"
-"beginning \"%%{\" and no closing '}' before the end of the line.");
+"%s:%d: unterminated format string encountered in command spec.\n"
+"Most likely this line would end with a '%%' character or contain a string\n"
+"beginning %s and have no closing %s before the end of the line.",
+ file, line, quote ("%{"), quote ("}"));
}
if (list)
{
@@ -1749,6 +1747,8 @@
{
/* process the rest of the format string as a list */
struct format_cmdline_walklist_closure c;
+ c.file = file;
+ c.line = line;
c.format = q;
c.buf = &buf;
c.length = &length;
@@ -1771,8 +1771,16 @@
char *outstr;
if (strlen(q) > 1)
{
+ int i;
+ char *bad = Xasprintf ("%%{%s}", q);
+ char *good = xmalloc (2 * strlen (q) + 1);
+ for (i=0; i<strlen(q); i++)
+ { good[2*i] = '%'; good[2*i+1] = q[i]; }
+ good[2*i] = '\0';
error (1, 0,
-"Multiple non-list variables are not allowed in a single format string.");
+"%s:%d: Multiple non-list variables prohibited in a single format string.\n"
+"(use %s, not %s)",
+ file, line, quote (good), quote (bad));
}
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
if (onearg)
@@ -1844,12 +1852,9 @@
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
else /* no key */
{
- /* print an error message to the user
- * FIXME - this should have a file and line number!!! */
- error (1, 0,
-"Unknown format character in info file ('%s').\n"
-"Info files are the hook files, verifymsg, taginfo, commitinfo, etc.",
- q);
+ /* print an error message to the user. */
+ error (1, 0, "%s:%d: Unknown format character (%s).",
+ file, line, quote (q));
}
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
/* always add quotes in the deprecated onearg case - for
@@ -1875,7 +1880,7 @@
/* FIXME - we shouldn't need this - Parse_Info should be handling
* multiple lines...
*/
- error (1, 0, "unterminated quote in format string: %s", format);
+ error (1, 0, "%s:%d: unterminated quote in format string", file, line);
}
dellist (&pflist);
Index: subr.h
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/subr.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- subr.h 9 Sep 2008 17:44:37 -0000 1.21
+++ subr.h 12 Sep 2008 19:55:31 -0000 1.22
@@ -74,6 +74,8 @@
*/
struct format_cmdline_walklist_closure
{
+ const char *file; /* The trigger file being processed. */
+ int line; /* The line number in the trigger being processed. */
const char *format; /* the format string the user passed us */
char **buf; /* *dest = our NUL terminated and possibly too
short
* destination string
@@ -92,11 +94,11 @@
};
char *cmdlinequote (char quotes, char *s);
char *cmdlineescape (char quotes, char *s);
+char *format_cmdline (
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
-char *format_cmdline (bool oldway, const char *srepos, const char *format,
...);
-#else /* SUPPORT_OLD_INFO_FMT_STRINGS */
-char *format_cmdline (const char *format, ...);
+ bool oldway, const char *srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
+ const char *file, int line, const char *format, ...);
/* Many, many CVS calls to xstrdup depend on it to return NULL when its
* argument is NULL.
Index: tag.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/tag.c,v
retrieving revision 1.155
retrieving revision 1.156
diff -u -b -r1.155 -r1.156
--- tag.c 20 Dec 2007 16:09:26 -0000 1.155
+++ tag.c 12 Sep 2008 19:55:31 -0000 1.156
@@ -1,7 +1,7 @@
/*
- * Copyright (C) 1986-2007 The Free Software Foundation, Inc.
+ * Copyright (C) 1986-2008 The Free Software Foundation, Inc.
*
- * Portions Copyright (C) 1998-2007 Derek Price,
+ * Portions Copyright (C) 1998-2008 Derek Price,
* Ximbiot LLC <http://ximbiot.com>,
* and others.
*
@@ -29,6 +29,8 @@
#include "classify.h"
#include "ignore.h"
#include "lock.h"
+#include "parseinfo.h"
+#include "quote.h"
#include "recurse.h"
#include "repos.h"
@@ -43,8 +45,6 @@
static int check_filesdoneproc (void *callerdat, int err,
const char *repos, const char *update_dir,
List *entries);
-static int pretag_proc (const char *_repository, const char *_filter,
- void *_closure);
static void masterlist_delproc (Node *_p);
static void tag_delproc (Node *_p);
static int pretag_list_to_args_proc (Node *_p, void *_closure);
@@ -329,7 +329,8 @@
* of its callbacks having returned an error.
*/
static int
-posttag_proc (const char *repository, const char *filter, void *closure)
+posttag_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
{
char *cmdline;
const char *srepos = Short_Repository (repository);
@@ -356,7 +357,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
+ file, line, filter,
"t", "s", ppd->symtag,
"o", "s", ppd->delete_flag
? "del" : ppd->force_tag_move ? "mov" : "add",
@@ -375,7 +376,8 @@
if (!cmdline || !strlen (cmdline))
{
if (cmdline) free (cmdline);
- error (0, 0, "pretag proc resolved to the empty string!");
+ error (0, 0, "%s:%d: pretag proc resolved to the empty string!",
+ file, line);
return 1;
}
@@ -414,8 +416,7 @@
ppd.delete_flag = delete_flag;
ppd.force_tag_move = force_tag_move;
ppd.symtag = symtag;
- Parse_Info (CVSROOTADM_POSTTAG, repository, posttag_proc,
- PIOPT_ALL, &ppd);
+ Parse_Info (CVSROOTADM_POSTTAG, repository, posttag_proc, PIOPT_ALL, &ppd);
return err;
}
@@ -692,38 +693,6 @@
-static int
-check_filesdoneproc (void *callerdat, int err, const char *repos,
- const char *update_dir, List *entries)
-{
- int n;
- Node *p;
- List *tlist;
- struct pretag_proc_data ppd;
-
- p = findnode (mtlist, update_dir);
- if (p != NULL)
- tlist = ((struct master_lists *) p->data)->tlist;
- else
- tlist = NULL;
- if (tlist == NULL || tlist->list->next == tlist->list)
- return err;
-
- ppd.tlist = tlist;
- ppd.delete_flag = delete_flag;
- ppd.force_tag_move = force_tag_move;
- ppd.symtag = symtag;
- if ((n = Parse_Info (CVSROOTADM_TAGINFO, repos, pretag_proc, PIOPT_ALL,
- &ppd)) > 0)
- {
- error (0, 0, "Pre-tag check failed");
- err += n;
- }
- return err;
-}
-
-
-
/*
* called from Parse_Info, this routine processes a line that came out
* of a taginfo file and turns it into a command and executes it.
@@ -736,7 +705,8 @@
* of its callbacks having returned an error.
*/
static int
-pretag_proc (const char *repository, const char *filter, void *closure)
+pretag_proc (const char *repository, const char *filter,
+ const char *file, int line, void *closure)
{
char *newfilter = NULL;
char *cmdline;
@@ -746,15 +716,13 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
if (!strchr (filter, '%'))
{
+ const char *default_format = " %t %o %p %{sv}";
error (0,0,
- "warning: taginfo line contains no format strings:\n"
- " \"%s\"\n"
- "Filling in old defaults ('%%t %%o %%p %%{sv}'), but please be
aware that this\n"
- "usage is deprecated.", filter);
- newfilter = xmalloc (strlen (filter) + 16);
- strcpy (newfilter, filter);
- strcat (newfilter, " %t %o %p %{sv}");
- filter = newfilter;
+"%s:%d: warning: taginfo line contains no format strings.\n"
+"Filling in old defaults (%s), but please be aware that this\n"
+"usage is deprecated.",
+ file, line, quote (default_format));
+ filter = newfilter = Xasprintf ("%s%s", filter, default_format);
}
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
@@ -779,7 +747,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- filter,
+ file, line, filter,
"t", "s", ppd->symtag,
"o", "s", ppd->delete_flag ? "del" :
ppd->force_tag_move ? "mov" : "add",
@@ -800,7 +768,8 @@
if (!cmdline || !strlen (cmdline))
{
if (cmdline) free (cmdline);
- error (0, 0, "pretag proc resolved to the empty string!");
+ error (0, 0, "%s:%d: pretag proc resolved to the empty string!",
+ file, line);
return 1;
}
@@ -827,6 +796,38 @@
+static int
+check_filesdoneproc (void *callerdat, int err, const char *repos,
+ const char *update_dir, List *entries)
+{
+ int n;
+ Node *p;
+ List *tlist;
+ struct pretag_proc_data ppd;
+
+ p = findnode (mtlist, update_dir);
+ if (p != NULL)
+ tlist = ((struct master_lists *) p->data)->tlist;
+ else
+ tlist = NULL;
+ if (tlist == NULL || tlist->list->next == tlist->list)
+ return err;
+
+ ppd.tlist = tlist;
+ ppd.delete_flag = delete_flag;
+ ppd.force_tag_move = force_tag_move;
+ ppd.symtag = symtag;
+ if ((n = Parse_Info (CVSROOTADM_TAGINFO, repos, pretag_proc, PIOPT_ALL,
+ &ppd)) > 0)
+ {
+ error (0, 0, "Pre-tag check failed");
+ err += n;
+ }
+ return err;
+}
+
+
+
static void
masterlist_delproc (Node *p)
{
Index: verify.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/verify.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- verify.c 12 Sep 2007 17:27:24 -0000 1.9
+++ verify.c 12 Sep 2008 19:55:31 -0000 1.10
@@ -401,7 +401,7 @@
#ifdef SUPPORT_OLD_INFO_FMT_STRINGS
false, srepos,
#endif /* SUPPORT_OLD_INFO_FMT_STRINGS */
- get_verify_template (),
+ "verify template", 1, get_verify_template (),
"@", ",", get_verify_args (),
verify_args_list_to_args_proc, (void *) NULL,
"r", "s", current_parsed_root->directory,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Cvs-cvs] ccvs/src ChangeLog admin.c checkout.c commit.c ...,
Derek Robert Price <=