getfields.c - 9base - revived minimalist port of Plan 9 userland to Unix
 (HTM) git clone git://git.suckless.org/9base
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       getfields.c (501B)
       ---
            1 #include <lib9.h>
            2 
            3 int
            4 getfields(char *str, char **args, int max, int mflag, char *set)
            5 {
            6         Rune r;
            7         int nr, intok, narg;
            8 
            9         if(max <= 0)
           10                 return 0;
           11 
           12         narg = 0;
           13         args[narg] = str;
           14         if(!mflag)
           15                 narg++;
           16         intok = 0;
           17         for(;; str += nr) {
           18                 nr = chartorune(&r, str);
           19                 if(r == 0)
           20                         break;
           21                 if(utfrune(set, r)) {
           22                         if(narg >= max)
           23                                 break;
           24                         *str = 0;
           25                         intok = 0;
           26                         args[narg] = str + nr;
           27                         if(!mflag)
           28                                 narg++;
           29                 } else {
           30                         if(!intok && mflag)
           31                                 narg++;
           32                         intok = 1;
           33                 }
           34         }
           35         return narg;
           36 }