Last change
on this file since 683 was 683, checked in by ansari, 26 years ago |
Compilation Mac pour CodeWarrior PRO 5
|
File size:
821 bytes
|
Rev | Line | |
---|
[683] | 1 | /* $Id: access.c,v 1.1 1999-12-10 17:11:18 ansari Exp $ */
|
---|
| 2 |
|
---|
| 3 | #include <string.h>
|
---|
| 4 | #include <errno.h>
|
---|
| 5 | #include "unixmac.h"
|
---|
| 6 |
|
---|
| 7 | /*
|
---|
| 8 | * If mode includes check for write permission,
|
---|
| 9 | * and file is locked, return -1 (failure).
|
---|
| 10 | */
|
---|
| 11 |
|
---|
| 12 | #define LOCKBIT 0x1
|
---|
| 13 |
|
---|
| 14 | int
|
---|
| 15 | access(char* path, int mode)
|
---|
| 16 | {
|
---|
| 17 | CInfoPBRec cipbr;
|
---|
| 18 | HFileInfo *fpb = (HFileInfo*)&cipbr;
|
---|
| 19 | DirInfo *dpb = (DirInfo*)&cipbr;
|
---|
| 20 | short err;
|
---|
| 21 | char name[FILENAME_MAX];
|
---|
| 22 |
|
---|
| 23 | strncpy(name, path, sizeof(name)-1);
|
---|
| 24 | c2pstr(name);
|
---|
| 25 | dpb->ioDrDirID= 0L;
|
---|
| 26 | fpb->ioNamePtr= (unsigned char*)name;
|
---|
| 27 | fpb->ioVRefNum= 0;
|
---|
| 28 | fpb->ioFDirIndex= 0;
|
---|
| 29 | fpb->ioFVersNum= 0;
|
---|
| 30 | err= PBGetCatInfo(&cipbr, FALSE);
|
---|
| 31 | if (err != noErr) {
|
---|
| 32 | errno = ENOENT;
|
---|
| 33 | return -1;
|
---|
| 34 | }
|
---|
| 35 | /* check for write-permission = not locked */
|
---|
| 36 | if ((mode & 02) && (fpb->ioFlAttrib & LOCKBIT)) {
|
---|
| 37 | errno = EACCES;
|
---|
| 38 | return -1;
|
---|
| 39 | }
|
---|
| 40 | return 0;
|
---|
| 41 | }
|
---|
| 42 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.