1*80ee5cbfSDavid du Colombier #include <u.h> 2*80ee5cbfSDavid du Colombier #include <libc.h> 3*80ee5cbfSDavid du Colombier 4*80ee5cbfSDavid du Colombier /* 5*80ee5cbfSDavid du Colombier * /adm/users is 6*80ee5cbfSDavid du Colombier * id:user/group:head member:other members 7*80ee5cbfSDavid du Colombier * 8*80ee5cbfSDavid du Colombier * /etc/{passwd,group} 9*80ee5cbfSDavid du Colombier * name:x:nn:other stuff 10*80ee5cbfSDavid du Colombier */ 11*80ee5cbfSDavid du Colombier 12*80ee5cbfSDavid du Colombier static int isnumber(char *s); 13*80ee5cbfSDavid du Colombier sniff(Biobuf * b)14*80ee5cbfSDavid du Colombiersniff(Biobuf *b) 15*80ee5cbfSDavid du Colombier { 16*80ee5cbfSDavid du Colombier read first line of file into p; 17*80ee5cbfSDavid du Colombier 18*80ee5cbfSDavid du Colombier nf = getfields(p, f, nelem(f), ":"); 19*80ee5cbfSDavid du Colombier if(nf < 4) 20*80ee5cbfSDavid du Colombier return nil; 21*80ee5cbfSDavid du Colombier 22*80ee5cbfSDavid du Colombier if(isnumber(f[0]) && !isnumber(f[2])) 23*80ee5cbfSDavid du Colombier return _plan9; 24*80ee5cbfSDavid du Colombier 25*80ee5cbfSDavid du Colombier if(!isnumber(f[0]) && isnumber(f[2])) 26*80ee5cbfSDavid du Colombier return _unix; 27*80ee5cbfSDavid du Colombier 28*80ee5cbfSDavid du Colombier return nil; 29*80ee5cbfSDavid du Colombier } 30*80ee5cbfSDavid du Colombier 31*80ee5cbfSDavid du Colombier 32*80ee5cbfSDavid du Colombier int isnumber(char * s)33*80ee5cbfSDavid du Colombierisnumber(char *s) 34*80ee5cbfSDavid du Colombier { 35*80ee5cbfSDavid du Colombier char *q; 36*80ee5cbfSDavid du Colombier 37*80ee5cbfSDavid du Colombier strtol(s, &q, 10); 38*80ee5cbfSDavid du Colombier return *q == '\0'; 39*80ee5cbfSDavid du Colombier } 40*80ee5cbfSDavid du Colombier 41*80ee5cbfSDavid du Colombier /* EOF */ 42