1 /* 2 * Copyright (c) 1995 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)vfslist.c 8.1 (Berkeley) 05/08/95"; 10 #endif /* not lint */ 11 12 #include <stdlib.h> 13 #include <string.h> 14 #include <unistd.h> 15 16 int checkvfsname __P((const char *, const char **)); 17 const char **makevfslist __P((char *)); 18 static int skipvfs; 19 20 int 21 checkvfsname(vfsname, vfslist) 22 const char *vfsname; 23 const char **vfslist; 24 { 25 26 if (vfslist == NULL) 27 return (0); 28 while (*vfslist != NULL) { 29 if (strcmp(vfsname, *vfslist) == 0) 30 return (skipvfs); 31 ++vfslist; 32 } 33 return (!skipvfs); 34 } 35 36 const char ** 37 makevfslist(fslist) 38 char *fslist; 39 { 40 const char **av; 41 int i; 42 char *nextcp; 43 44 if (fslist == NULL) 45 return (NULL); 46 if (fslist[0] == 'n' && fslist[1] == 'o') { 47 fslist += 2; 48 skipvfs = 1; 49 } 50 for (i = 0, nextcp = fslist; *nextcp; nextcp++) 51 if (*nextcp == ',') 52 i++; 53 if ((av = malloc((size_t)(i + 2) * sizeof(char *))) == NULL) { 54 warn(NULL); 55 return (NULL); 56 } 57 nextcp = fslist; 58 i = 0; 59 av[i++] = nextcp; 60 while ((nextcp = strchr(nextcp, ',')) != NULL) { 61 *nextcp++ = '\0'; 62 av[i++] = nextcp; 63 } 64 av[i++] = NULL; 65 return (av); 66 } 67