111928Sdlw /* 2*12142Sdlw char id_chmod[] = "@(#)chmod_.c 1.2"; 311928Sdlw * 411928Sdlw * chmod - change file mode bits 511928Sdlw * 611928Sdlw * synopsis: 711928Sdlw * integer function chmod (fname, mode) 811928Sdlw * character*(*) fname, mode 911928Sdlw */ 1011928Sdlw 1111928Sdlw #include "../libI77/f_errno.h" 12*12142Sdlw #include <sys/param.h> 13*12142Sdlw #ifndef MAXPATHLEN 14*12142Sdlw #define MAXPATHLEN 128 15*12142Sdlw #endif 1611928Sdlw 1711928Sdlw long chmod_(name, mode, namlen, modlen) 1811928Sdlw char *name, *mode; 1911928Sdlw long namlen, modlen; 2011928Sdlw { 21*12142Sdlw char nambuf[MAXPATHLEN]; 2211928Sdlw char modbuf[32]; 2311928Sdlw int retcode; 2411928Sdlw 2511928Sdlw if (namlen >= sizeof nambuf || modlen >= sizeof modbuf) 2611928Sdlw return((long)(errno=F_ERARG)); 2711928Sdlw g_char(name, namlen, nambuf); 2811928Sdlw g_char(mode, modlen, modbuf); 2911928Sdlw if (nambuf[0] == '\0') 3011928Sdlw return((long)(errno=ENOENT)); 3111928Sdlw if (modbuf[0] == '\0') 3211928Sdlw return((long)(errno=F_ERARG)); 3311928Sdlw if (fork()) 3411928Sdlw { 3511928Sdlw if (wait(&retcode) == -1) 3611928Sdlw return((long)errno); 3711928Sdlw return((long)retcode); 3811928Sdlw } 3911928Sdlw else 4011928Sdlw execl("/bin/chmod", "chmod", modbuf, nambuf, (char *)0); 4111928Sdlw } 42