Module Name: src
Committed By: christos
Date: Thu Mar 8 20:48:22 UTC 2012
Modified Files:
src/external/gpl2/xcvs/dist/src: add.c admin.c annotate.c commit.c
remove.c
Log Message:
add acl support
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/gpl2/xcvs/dist/src/add.c \
src/external/gpl2/xcvs/dist/src/annotate.c \
src/external/gpl2/xcvs/dist/src/remove.c
cvs rdiff -u -r1.4 -r1.5 src/external/gpl2/xcvs/dist/src/admin.c
cvs rdiff -u -r1.3 -r1.4 src/external/gpl2/xcvs/dist/src/commit.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl2/xcvs/dist/src/add.c
diff -u src/external/gpl2/xcvs/dist/src/add.c:1.2 src/external/gpl2/xcvs/dist/src/add.c:1.3
--- src/external/gpl2/xcvs/dist/src/add.c:1.2 Fri Apr 10 07:20:29 2009
+++ src/external/gpl2/xcvs/dist/src/add.c Thu Mar 8 15:48:22 2012
@@ -401,6 +401,25 @@ add (int argc, char **argv)
}
else
{
+/* cvsacl patch */
+#ifdef SERVER_SUPPORT
+ if (use_cvs_acl /* && server_active */)
+ {
+ if (!access_allowed (finfo.file, repository,
+ vers->tag, 6, NULL, NULL, 1))
+ {
+ if (stop_at_first_permission_denied)
+ error (1, 0, "permission denied for %s",
+ Short_Repository (finfo.repository));
+ else
+ error (0, 0, "permission denied for %s/%s",
+ Short_Repository (finfo.repository),
+ finfo.file);
+
+ return (0);
+ }
+ }
+#endif
/* There is a user file, so build the entry for it */
if (build_entry (repository, finfo.file, vers->options,
message, entries, vers->tag) != 0)
@@ -675,6 +694,25 @@ add (int argc, char **argv)
&& isdir (finfo.file)
&& !wrap_name_has (finfo.file, WRAP_TOCVS))
{
+
+/* cvsacl patch */
+#ifdef SERVER_SUPPORT
+ if (use_cvs_acl /* && server_active */)
+ {
+ if (!access_allowed (NULL, repository, NULL, 6, NULL, NULL, 1))
+ {
+ if (stop_at_first_permission_denied)
+ error (1, 0, "permission denied for %s",
+ Short_Repository (finfo.repository));
+ else
+ error (0, 0, "permission denied for %s/%s",
+ Short_Repository (finfo.repository), finfo.file);
+
+ return (0);
+ }
+ }
+#endif
+
err += add_directory (&finfo);
}
else
Index: src/external/gpl2/xcvs/dist/src/annotate.c
diff -u src/external/gpl2/xcvs/dist/src/annotate.c:1.2 src/external/gpl2/xcvs/dist/src/annotate.c:1.3
--- src/external/gpl2/xcvs/dist/src/annotate.c:1.2 Fri Apr 10 07:20:29 2009
+++ src/external/gpl2/xcvs/dist/src/annotate.c Thu Mar 8 15:48:22 2012
@@ -267,6 +267,25 @@ annotate_fileproc (void *callerdat, stru
if (version == NULL)
return 0;
+/* cvsacl patch */
+#ifdef SERVER_SUPPORT
+ if (use_cvs_acl /* && server_active */)
+ {
+ if (!access_allowed (finfo->file, finfo->repository, version, 5,
+ NULL, NULL, 1))
+ {
+ if (stop_at_first_permission_denied)
+ error (1, 0, "permission denied for %s",
+ Short_Repository (finfo->repository));
+ else
+ error (0, 0, "permission denied for %s/%s",
+ Short_Repository (finfo->repository), finfo->file);
+
+ return (0);
+ }
+ }
+#endif
+
/* Distinguish output for various files if we are processing
several files. */
cvs_outerr ("\nAnnotations for ", 0);
Index: src/external/gpl2/xcvs/dist/src/remove.c
diff -u src/external/gpl2/xcvs/dist/src/remove.c:1.2 src/external/gpl2/xcvs/dist/src/remove.c:1.3
--- src/external/gpl2/xcvs/dist/src/remove.c:1.2 Fri Apr 10 07:20:30 2009
+++ src/external/gpl2/xcvs/dist/src/remove.c Thu Mar 8 15:48:22 2012
@@ -241,6 +241,25 @@ cannot remove file `%s' which has a stic
{
char *fname;
+/* cvsacl patch */
+#ifdef SERVER_SUPPORT
+ if (use_cvs_acl /* && server_active */)
+ {
+ if (!access_allowed (finfo->file, finfo->repository, vers->tag, 7,
+ NULL, NULL, 1))
+ {
+ if (stop_at_first_permission_denied)
+ error (1, 0, "permission denied for %s",
+ Short_Repository (finfo->repository));
+ else
+ error (0, 0, "permission denied for %s/%s",
+ Short_Repository (finfo->repository), finfo->file);
+
+ return (0);
+ }
+ }
+#endif
+
/* Re-register it with a negative version number. */
fname = Xasprintf ("-%s", vers->vn_user);
Register (finfo->entries, finfo->file, fname, vers->ts_rcs,
Index: src/external/gpl2/xcvs/dist/src/admin.c
diff -u src/external/gpl2/xcvs/dist/src/admin.c:1.4 src/external/gpl2/xcvs/dist/src/admin.c:1.5
--- src/external/gpl2/xcvs/dist/src/admin.c:1.4 Sat Sep 5 08:50:33 2009
+++ src/external/gpl2/xcvs/dist/src/admin.c Thu Mar 8 15:48:22 2012
@@ -690,6 +690,25 @@ admin_fileproc (void *callerdat, struct
vers = Version_TS (finfo, NULL, NULL, NULL, 0, 0);
+/* cvsacl patch */
+#ifdef SERVER_SUPPORT
+ if (use_cvs_acl /* && server_active */)
+ {
+ if (!access_allowed (finfo->file, finfo->repository, NULL, 2,
+ NULL, NULL, 1))
+ {
+ if (stop_at_first_permission_denied)
+ error (1, 0, "permission denied for %s",
+ Short_Repository (finfo->repository));
+ else
+ error (0, 0, "permission denied for %s/%s",
+ Short_Repository (finfo->repository), finfo->file);
+
+ return (0);
+ }
+ }
+#endif
+
version = vers->vn_user;
if (version != NULL && strcmp (version, "0") == 0)
{
Index: src/external/gpl2/xcvs/dist/src/commit.c
diff -u src/external/gpl2/xcvs/dist/src/commit.c:1.3 src/external/gpl2/xcvs/dist/src/commit.c:1.4
--- src/external/gpl2/xcvs/dist/src/commit.c:1.3 Fri Apr 10 07:20:29 2009
+++ src/external/gpl2/xcvs/dist/src/commit.c Thu Mar 8 15:48:22 2012
@@ -1379,6 +1379,34 @@ commit_fileproc (void *callerdat, struct
return 0;
ci = p->data;
+
+/* cvsacl patch */
+#ifdef SERVER_SUPPORT
+ if (use_cvs_acl /* && server_active */)
+ {
+ int whichperm;
+ if (ci->status == T_MODIFIED)
+ whichperm = 3;
+ else if (ci->status == T_ADDED)
+ whichperm = 6;
+ else if (ci->status == T_REMOVED)
+ whichperm = 7;
+
+ if (!access_allowed (finfo->file, finfo->repository, ci->tag, whichperm,
+ NULL, NULL, 1))
+ {
+ if (stop_at_first_permission_denied)
+ error (1, 0, "permission denied for %s",
+ Short_Repository (finfo->repository));
+ else
+ error (0, 0, "permission denied for %s/%s",
+ Short_Repository (finfo->repository), finfo->file);
+
+ return (0);
+ }
+ }
+#endif
+
if (ci->status == T_MODIFIED)
{
if (finfo->rcs == NULL)