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