home *** CD-ROM | disk | FTP | other *** search
- /* imode.c */
- /********************************************************************
- * Function : give file name and permission; return true or false
- * Author : Istvan Mohos, 1987 --- in the Public Domain
- *********************************************************************/
-
- #include "i.h"
-
- int
- imode(fname, perm)
- char *fname, *perm;
- {
- struct stat sbuf;
- int realmode;
- int pval = 0;
- int mult = 1;
- register char *pp;
-
- if (BADCHARP(fname))
- return(ierror("imode: invalid file name"));
- if (BADCHARP(perm))
- return(ierror("imode: invalid permission string"));
-
- for (pp = perm; *pp++;);
- for (--pp; --pp >= perm; mult <<= 3) {
- switch(*pp) {
- default:
- return(ierror("imode: invalid permission string"));
- case 48:
- break;
- case 49:
- case 50:
- case 51:
- case 52:
- case 53:
- case 54:
- case 55:
- pval += (*pp - '0') * mult;
- break;
- }
- }
- if (!pval | pval > 0xffff)
- return(ierror("imode: invalid permission value"));
- if (stat(fname, &sbuf) == -1)
- return(ierror("imode: stat"));
-
- realmode = (int)sbuf.st_mode;
- if ((realmode & pval) == pval)
- return(1); /* TRUE; perm OK */
-
- return(0); /* FALSE; perm mismatch */
- }
-