1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 * 6 * @(#)chmod_.c 5.1 06/07/85 7 */ 8 9 /* 10 * chmod - change file mode bits 11 * 12 * synopsis: 13 * integer function chmod (fname, mode) 14 * character*(*) fname, mode 15 */ 16 17 #include "../libI77/f_errno.h" 18 #include <sys/param.h> 19 #ifndef MAXPATHLEN 20 #define MAXPATHLEN 128 21 #endif 22 23 long chmod_(name, mode, namlen, modlen) 24 char *name, *mode; 25 long namlen, modlen; 26 { 27 char nambuf[MAXPATHLEN]; 28 char modbuf[32]; 29 int retcode; 30 31 if (namlen >= sizeof nambuf || modlen >= sizeof modbuf) 32 return((long)(errno=F_ERARG)); 33 g_char(name, namlen, nambuf); 34 g_char(mode, modlen, modbuf); 35 if (nambuf[0] == '\0') 36 return((long)(errno=ENOENT)); 37 if (modbuf[0] == '\0') 38 return((long)(errno=F_ERARG)); 39 if (fork()) 40 { 41 if (wait(&retcode) == -1) 42 return((long)errno); 43 return((long)retcode); 44 } 45 else 46 execl("/bin/chmod", "chmod", modbuf, nambuf, (char *)0); 47 } 48