#include "uucp.h" #include #include /******* * expfile(file) expand file name * char *file; * * return codes: none */ expfile(file) char *file; { char *fpart; char user[20], *up; char full[100]; int uid; switch(file[0]) { case '/': return; case '~': for (fpart = file + 1, up = user; *fpart != '\0' && *fpart != '/'; fpart++) *up++ = *fpart; *up = '\0'; if (gninfo(user, &uid, full) != 0) { strcpy(full, Spool); } strcat(full, fpart); strcpy(file, full); return; default: strcpy(full, Wrkdir); strcat(full, "/"); strcat(full, file); strcpy(file, full); return; } } /*** * isdir(name) check if directory name * char *name; * * return codes: 0 - not directory | 1 - is directory */ isdir(name) char *name; { int ret; struct stat s; ret = stat(name, &s); if (ret < 0) return(0); if ((s.st_mode & S_IFMT) == S_IFDIR) return(1); return(0); } /*** * mkdirs(name) make all necessary directories * char *name; * * return 0 | FAIL */ mkdirs(name) char *name; { int ret; char cmd[100], dir[100], *p; for (p = dir + 1;; p++) { strcpy(dir, name); if ((p = index(p, '/')) == NULL) return(0); *p = '\0'; if (isdir(dir)) continue; sprintf(cmd, "mkdir %s", dir); DEBUG(4, "mkdir - %s\n", dir); ret = shio(cmd, NULL, NULL, User); if (ret != 0) return(FAIL); } }