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)