[Cvs-nserver-commits] CVS: cvs-nserver/src acl.c,1.1.2.5,1.1.2.6 acl.h,1.1.2.4,1.1.2.5 annotate.c,1.
Brought to you by:
tyranny
From: Alexey M. <ty...@us...> - 2001-11-25 20:45:33
|
Update of /cvsroot/cvs-nserver/cvs-nserver/src In directory usw-pr-cvs1:/tmp/cvs-serv28869 Modified Files: Tag: NCLI-1-11-1 acl.c acl.h annotate.c commit.c diff.c history.c log.c patch.c tag.c update.c Log Message: Branches are now mostly considered on ACLs Index: acl.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/Attic/acl.c,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -u -d -r1.1.2.5 -r1.1.2.6 --- acl.c 2001/11/16 00:07:32 1.1.2.5 +++ acl.c 2001/11/25 20:45:30 1.1.2.6 @@ -32,13 +32,18 @@ #ifdef SERVER_SUPPORT int -grant_file_permission (const char *dir, const char *filename, +grant_file_permission (char * const dir, char * const branch, char * const filename, branch_permission perm, char *perm_string) { struct DIR_ACL *dir_acl; struct BRANCH_ACL *branch_acl; struct BRANCH_ACE *branch_ace; + char *xbranch = branch; + + if ((xbranch == NULL) || (xbranch[0] == '\0')) + xbranch = "trunk"; + if (!server_active) return 1; @@ -46,11 +51,11 @@ if (dir_acl == NULL) error(1, 0, "Error getting directory ACL for %s: %s", dir, strerror(errno)); - branch_acl = get_branch_acl(dir_acl, "trunk"); + branch_acl = get_branch_acl(dir_acl, xbranch); if (branch_acl == NULL) error(1, 0, "Error getting branch ACL for %s: %s", dir, strerror(errno)); - branch_ace = get_file_on_branch_ace(branch_acl, "trunk", filename); + branch_ace = get_file_on_branch_ace(branch_acl, filename); if (branch_ace == NULL) error(1, 0, "Error getting file ACE for %s: %s", filename, strerror(errno)); @@ -66,7 +71,7 @@ } int -grant_dir_permission (const char *dir, const char *filename, +grant_dir_permission (char * const dir, char * const filename, dir_permission perm, char *perm_string) { DIR_ACL *dir_acl; @@ -187,7 +192,7 @@ if (branch_acl == NULL) return -1; - file_ace = get_file_on_branch_ace(branch_acl, branch, filename); + file_ace = get_file_on_branch_ace(branch_acl, filename); if (file_ace == NULL) return -1; @@ -196,8 +201,8 @@ error(1, 0, "Invalid branch permissions '%s'", perm_string); set_branch_ace(file_ace, username, branch_perm); - if (!store_branch_acl(branch_acl)) - error(1, 0, "Error storing branch acl: %s", strerror(errno)); + if (!store_branch_acls(dir_acl)) + error(1, 0, "Error storing branch ACLs: %s", strerror(errno)); printf("Setting '%s' permissions for '%s' on file %s\n", perm_string, username, relative_name); Index: acl.h =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/Attic/acl.h,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -u -d -r1.1.2.4 -r1.1.2.5 --- acl.h 2001/11/16 00:07:33 1.1.2.4 +++ acl.h 2001/11/25 20:45:30 1.1.2.5 @@ -24,10 +24,10 @@ int acl (int argc, char **argv); int racl (int argc, char **argv); -int grant_file_permission(const char *dir, const char *filename, +int grant_file_permission(char * const dir, char * const branch, char * const filename, branch_permission perm, char *perm_string); -int grant_dir_permission(const char *dir, const char *filename, +int grant_dir_permission(char * const dir, char * const filename, branch_permission perm, char *perm_string); Index: annotate.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/annotate.c,v retrieving revision 1.1.1.1.4.3 retrieving revision 1.1.1.1.4.4 diff -u -d -r1.1.1.1.4.3 -r1.1.1.1.4.4 --- annotate.c 2001/09/27 00:28:35 1.1.1.1.4.3 +++ annotate.c 2001/11/25 20:45:30 1.1.1.1.4.4 @@ -255,8 +255,10 @@ { char *version; +/* printf("annotate_fileproc: tag == '%s'\n", tag); */ + #ifdef SERVER_SUPPORT - if (!grant_file_permission(finfo->repository, finfo->file, + if (!grant_file_permission(finfo->repository, tag, finfo->file, branch_perm_checkout, "annotate")) return 0; #endif Index: commit.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/commit.c,v retrieving revision 1.1.1.6.4.3 retrieving revision 1.1.1.6.4.4 diff -u -d -r1.1.1.6.4.3 -r1.1.1.6.4.4 --- commit.c 2001/09/27 00:28:35 1.1.1.6.4.3 +++ commit.c 2001/11/25 20:45:30 1.1.1.6.4.4 @@ -809,7 +809,7 @@ status = classify_file_internal (finfo, &vers); #ifdef SERVER_SUPPORT - if (!grant_file_permission(finfo->repository, finfo->file, + if (!grant_file_permission(finfo->repository, vers->tag, finfo->file, branch_perm_checkin, "checkin")) goto out; #endif Index: diff.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/diff.c,v retrieving revision 1.1.1.3.4.2 retrieving revision 1.1.1.3.4.3 diff -u -d -r1.1.1.3.4.2 -r1.1.1.3.4.3 --- diff.c 2001/09/27 00:28:35 1.1.1.3.4.2 +++ diff.c 2001/11/25 20:45:30 1.1.1.3.4.3 @@ -411,14 +411,14 @@ tmp = NULL; fname = NULL; + user_file_rev = 0; + vers = Version_TS (finfo, NULL, NULL, NULL, 1, 0); + #ifdef SERVER_SUPPORT - if (!grant_file_permission(finfo->repository, finfo->file, + if (!grant_file_permission(finfo->repository, vers->tag, finfo->file, branch_perm_checkout, "diff")) return 0; #endif - - user_file_rev = 0; - vers = Version_TS (finfo, NULL, NULL, NULL, 1, 0); if (diff_rev2 != NULL || diff_date2 != NULL) { Index: history.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/history.c,v retrieving revision 1.1.1.5.2.1.2.3 retrieving revision 1.1.1.5.2.1.2.4 diff -u -d -r1.1.1.5.2.1.2.3 -r1.1.1.5.2.1.2.4 --- history.c 2001/11/06 22:19:26 1.1.1.5.2.1.2.3 +++ history.c 2001/11/25 20:45:30 1.1.1.5.2.1.2.4 @@ -1211,7 +1211,7 @@ return (0); } #ifdef SERVER_SUPPORT - if (!grant_file_permission(hr->repos, hr->file, + if (!grant_file_permission(hr->repos, "trunk", hr->file, branch_perm_checkout, "history")) return 0; #endif Index: log.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/log.c,v retrieving revision 1.1.1.6.4.4 retrieving revision 1.1.1.6.4.5 diff -u -d -r1.1.1.6.4.4 -r1.1.1.6.4.5 --- log.c 2001/11/04 22:45:27 1.1.1.6.4.4 +++ log.c 2001/11/25 20:45:30 1.1.1.6.4.5 @@ -791,12 +791,6 @@ struct revlist *revlist; struct log_data_and_rcs log_data_and_rcs; -#ifdef SERVER_SUPPORT - if (!grant_file_permission(finfo->repository, finfo->file, - branch_perm_checkout, "log")) - return 0; -#endif - if ((rcsfile = finfo->rcs) == NULL) { /* no rcs file. What *do* we know about this file? */ @@ -820,6 +814,12 @@ return (1); } + +#ifdef SERVER_SUPPORT + if (!grant_file_permission(finfo->repository, rcsfile->branch, finfo->file, + branch_perm_checkout, "log")) + return 0; +#endif if (log_data->nameonly) { Index: patch.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/patch.c,v retrieving revision 1.1.1.3.4.3 retrieving revision 1.1.1.3.4.4 diff -u -d -r1.1.1.3.4.3 -r1.1.1.3.4.4 --- patch.c 2001/09/27 00:28:35 1.1.1.3.4.3 +++ patch.c 2001/11/25 20:45:30 1.1.1.3.4.4 @@ -399,19 +399,19 @@ line2 = NULL; line2_chars_allocated = 0; -#ifdef SERVER_SUPPORT - if (!grant_file_permission(finfo->repository, finfo->file, - branch_perm_checkout, "patch")) - return 0; -#endif - - /* find the parsed rcs file */ if ((rcsfile = finfo->rcs) == NULL) { ret = 1; goto out2; } + +#ifdef SERVER_SUPPORT + if (!grant_file_permission(finfo->repository, rcsfile->branch, finfo->file, + branch_perm_checkout, "patch")) + return 0; +#endif + if ((rcsfile->flags & VALID) && (rcsfile->flags & INATTIC)) isattic = 1; Index: tag.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/tag.c,v retrieving revision 1.1.1.5.4.3 retrieving revision 1.1.1.5.4.4 diff -u -d -r1.1.1.5.4.3 -r1.1.1.5.4.4 --- tag.c 2001/11/16 00:07:33 1.1.1.5.4.3 +++ tag.c 2001/11/25 20:45:30 1.1.1.5.4.4 @@ -265,11 +265,20 @@ error(1, errno, "Error getting information about module %s", argv[i]); - if (!module_tagging_granted(mod_acl, CVS_Username, symtag)) { - error(0, 0, "%s is not allowed to tag %s as %s", - CVS_Username, argv[i], symtag); - err++; - continue; + if (branch_mode) { + if (!module_branching_granted(mod_acl, CVS_Username, symtag)) { + error(0, 0, "%s is not allowed to create branch %s as %s", + CVS_Username, argv[i], symtag); + err++; + continue; + } + } else { + if (!module_tagging_granted(mod_acl, CVS_Username, symtag)) { + error(0, 0, "%s is not allowed to tag %s as %s", + CVS_Username, argv[i], symtag); + err++; + continue; + } } } #endif /* SERVER_SUPPORT */ Index: update.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/update.c,v retrieving revision 1.1.1.6.4.2 retrieving revision 1.1.1.6.4.3 diff -u -d -r1.1.1.6.4.2 -r1.1.1.6.4.3 --- update.c 2001/09/27 00:28:35 1.1.1.6.4.2 +++ update.c 2001/11/25 20:45:30 1.1.1.6.4.3 @@ -587,14 +587,14 @@ Ctype status; Vers_TS *vers; + status = Classify_File (finfo, tag, date, options, force_tag_match, + aflag, &vers, pipeout); + #ifdef SERVER_SUPPORT - if (!grant_file_permission(finfo->repository, finfo->file, + if (!grant_file_permission(finfo->repository, vers->tag, finfo->file, branch_perm_checkout, "update")) return 0; #endif - - status = Classify_File (finfo, tag, date, options, force_tag_match, - aflag, &vers, pipeout); /* Keep track of whether TAG is a branch tag. Note that if it is a branch tag in some files and a nonbranch tag |