[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Cvs-cvs] Changes to ccvs/src/sign.c [signed-commits]
From: |
Derek Robert Price |
Subject: |
[Cvs-cvs] Changes to ccvs/src/sign.c [signed-commits] |
Date: |
Sun, 16 Oct 2005 16:45:25 -0400 |
Index: ccvs/src/sign.c
diff -u ccvs/src/sign.c:1.1.2.2 ccvs/src/sign.c:1.1.2.3
--- ccvs/src/sign.c:1.1.2.2 Sat Oct 15 01:39:25 2005
+++ ccvs/src/sign.c Sun Oct 16 20:45:19 2005
@@ -35,6 +35,7 @@
#include "xalloc.h"
/* CVS headers. */
+#include "filesubr.h"
#include "root.h"
#include "run.h"
#include "stack.h"
@@ -110,10 +111,13 @@
* server_support Whether the server supports signed files.
*/
bool
-get_sign_commits (bool server_support)
+get_sign_commits (bool server_active, bool server_support)
{
sign_state tmp;
+ /* Only sign commits from the client (and in local mode). */
+ if (server_active) return false;
+
if (sign_commits == SIGN_DEFAULT)
tmp = current_parsed_root->sign;
else
@@ -226,9 +230,36 @@
+char *
+get_sigfile_name (const char *fn)
+{
+ return Xasprintf ("%s%s%s", BAKPREFIX, fn, ".sig");
+}
+
+
+
+bool
+have_sigfile (bool server_active, const char *fn)
+{
+ char *sfn;
+ bool retval;
+
+ /* Sig files are only created on the server. Optimize. */
+ if (!server_active) return false;
+
+ sfn = get_sigfile_name (fn);
+ if (isreadable (sfn)) retval = true;
+ else retval = false;
+
+ free (sfn);
+ return retval;
+}
+
+
+
/* Generate a signature and return it in allocated memory. */
char *
-get_signature (const char *srepos, const char *filename, bool bin, size_t *len)
+gen_signature (const char *srepos, const char *filename, bool bin, size_t *len)
{
char *cmdline;
FILE *pipefp;
@@ -256,8 +287,8 @@
get_sign_template (),
"a", ",", get_sign_args (),
sign_args_list_to_args_proc, (void *) NULL,
- "p", "s", srepos,
"r", "s", current_parsed_root->directory,
+ "p", "s", srepos,
"t", "s", bin ? NULL : get_sign_textmode (),
"s", "s", filename,
(char *) NULL);
@@ -301,4 +332,33 @@
*len = sigoff;
return sigbuf;
+}
+
+
+
+/* Read a signature from a file and return it in allocated memory. */
+static char *
+read_signature (const char *fn, bool bin, size_t *len)
+{
+ char *sfn = get_sigfile_name (fn);
+ char *data = NULL;
+ size_t datasize;
+
+ get_file (sfn, sfn, bin ? "rb" : "r", &data, &datasize, len);
+
+ free (sfn);
+ return data;
+}
+
+
+
+/* Generate a signature or read one from the sigfile and return it in
+ * allocated memory.
+ */
+char *
+get_signature (bool server_active, const char *srepos, const char *filename,
+ bool bin, size_t *len)
+{
+ if (server_active) return read_signature (filename, bin, len);
+ /* else */ return gen_signature (srepos, filename, bin, len);
}