|  | /* | 
|  | * This file is part of the UCB release of Plan 9. It is subject to the license | 
|  | * terms in the LICENSE file found in the top-level directory of this | 
|  | * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No | 
|  | * part of the UCB release of Plan 9, including this file, may be copied, | 
|  | * modified, propagated, or distributed except according to the terms contained | 
|  | * in the LICENSE file. | 
|  | */ | 
|  | #include <string.h> | 
|  |  | 
|  | /* currently only used in arp.c; so we don't do the full monty. */ | 
|  | int getfields(char *str, char **args, int max, int mflag, char *set) | 
|  | { | 
|  | int nr, intok, narg; | 
|  |  | 
|  | if (max <= 0) | 
|  | return 0; | 
|  |  | 
|  | narg = 0; | 
|  | args[narg] = str; | 
|  | if (!mflag) | 
|  | narg++; | 
|  | intok = 0; | 
|  | for (;; str++) { | 
|  | nr = *str; | 
|  | if (nr == 0) | 
|  | break; | 
|  | if (index(set, nr)) { | 
|  | if (narg >= max) | 
|  | break; | 
|  | *str = 0; | 
|  | intok = 0; | 
|  | args[narg] = str + 1; | 
|  | if (!mflag) | 
|  | narg++; | 
|  | } else { | 
|  | if (!intok && mflag) | 
|  | narg++; | 
|  | intok = 1; | 
|  | } | 
|  | } | 
|  | return narg; | 
|  | } |