| Last change
 on this file since 3891 was             683, checked in by ansari, 26 years ago | 
        
          | 
Compilation Mac pour CodeWarrior PRO 5
 | 
        
          | File size:
            821 bytes | 
      
      
| Line |  | 
|---|
| 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.