From 61331aba7c7f2d75d59c3f30f1e2df7b32eb6b62 Mon Sep 17 00:00:00 2001 From: herbert Date: Wed, 2 Mar 2005 22:14:54 +1100 Subject: Invert return value of test_eaccess and rename it to test_st_mode. --- src/bltin/test.c | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) (limited to 'src/bltin') diff --git a/src/bltin/test.c b/src/bltin/test.c index e0e48c7..97ced57 100644 --- a/src/bltin/test.c +++ b/src/bltin/test.c @@ -157,7 +157,7 @@ static int getn(const char *); static int newerf(const char *, const char *); static int olderf(const char *, const char *); static int equalf(const char *, const char *); -static int test_eaccess(const struct stat64 *, int); +static int test_st_mode(const struct stat64 *, int); static int bash_group_member(gid_t); #ifndef SHELL @@ -348,11 +348,11 @@ filstat(char *nm, enum token mode) switch (mode) { case FILRD: - return test_eaccess(&s, R_OK) == 0; + return test_st_mode(&s, R_OK); case FILWR: - return test_eaccess(&s, W_OK) == 0; + return test_st_mode(&s, W_OK); case FILEX: - return test_eaccess(&s, X_OK) == 0; + return test_st_mode(&s, X_OK); case FILEXIST: return 1; case FILREG: @@ -484,34 +484,30 @@ equalf (const char *f1, const char *f2) b1.st_ino == b2.st_ino); } -/* Do the same thing access(2) does, but use the effective uid and gid, - and don't make the mistake of telling root that any file is - executable. */ +/* + * Similar to what access(2) does, but uses the effective uid and gid. + * Doesn't make the mistake of telling root that any file is executable. + * Returns non-zero if the file is accessible. + */ static int -test_eaccess(const struct stat64 *st, int mode) +test_st_mode(const struct stat64 *st, int mode) { int euid = geteuid(); if (euid == 0) { /* Root can read or write any file. */ if (mode != X_OK) - return (0); + return 1; /* Root can execute any file that has any one of the execute bits set. */ - if (st->st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) - return (0); - } - - if (st->st_uid == euid) + mode = S_IXUSR | S_IXGRP | S_IXOTH; + } else if (st->st_uid == euid) mode <<= 6; else if (bash_group_member(st->st_gid)) mode <<= 3; - if (st->st_mode & mode) - return (0); - - return (-1); + return st->st_mode & mode; } /* Return non-zero if GID is one that we have in our groups list. */ -- cgit 1.4.1 ollow)
Commit message (Expand)Author
2022-03-16Skip non-spacing when moving and deleting by "character"June McEnroe
2022-03-13Document using -S to connect over IPv4 or IPv6June McEnroe
2022-03-09Always refresh the screen with ^LChristian Kellermann
2022-03-05Update STANDARDS section authors, titles and URLsJune McEnroe
2022-03-02Show own nick on /nick without paramsJune McEnroe
2022-02-26Specify commands which depend on capsJune McEnroe
2022-02-26Only add available commands to completeJune McEnroe
2022-02-26Factor out commandAvailableJune McEnroe
2022-02-23Give examples of "general events" 2.1June McEnroe
2022-02-23Add missing unistd.h include in input.cJune McEnroe
2022-02-22Document the interfaceJune McEnroe
2022-02-20Clean up unimplemented editing mode stuffJune McEnroe
2022-02-20Save input buffer contentsJune McEnroe
2022-02-20Share a cut buffer between all edit buffersJune McEnroe
2022-02-20Assert return values in edit testsJune McEnroe
2022-02-20Move mbs out of struct Edit, use a global bufferJune McEnroe
2022-02-20Clear edit buffer before running commandJune McEnroe
2022-02-20Show indicator in status when window has pending inputJune McEnroe
2022-02-20Use separate edit buffers for each IDJune McEnroe
2022-02-20Make sure new cap is actually larger than new lengthJune McEnroe
2022-02-20Remove unused mbs.len field from struct EditJune McEnroe
2022-02-19Remove unneeded includes in ui.cJune McEnroe
2022-02-19Reimplement tab completeJune McEnroe
2022-02-19Handle errors from editFn, etc.June McEnroe
2022-02-19Reimplement text macrosJune McEnroe
2022-02-19Factor out input handling to input.cJune McEnroe
2022-02-19Factor out window management to window.cJune McEnroe
2022-02-19Enable -Wmissing-prototypesJune McEnroe
2022-02-19Fix edit.[ch] license notice additional permissionsJune McEnroe
2022-02-19Run line editing testsJune McEnroe
2022-02-18Implement new line editing "library"June McEnroe
2022-02-18Simplify cursor positioning in inputJune McEnroe
2022-02-18Fix M-f orderingJune McEnroe
2022-02-12Move sandman build to scripts/MakefileJune McEnroe
2022-02-12Use compat_readpassphrase.c on LinuxJune McEnroe
2022-02-12Copy RPP defines from oconfigureJune McEnroe