Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#include <u.h>
#include <libc.h>

int
getfields(char *str, char **args, int max, int mflag, char *set)
{
        Rune r;
        int nr, intok, narg;

        if(max <= 0)
                return 0;

        narg = 0;
        args[narg] = str;
        if(!mflag)
                narg++;
        intok = 0;
        for(;; str += nr) {
                nr = chartorune(&r, str);
                if(r == 0)
                        break;
                if(utfrune(set, r)) {
                        if(narg >= max)
                                break;
                        *str = 0;
                        intok = 0;
                        args[narg] = str + nr;
                        if(!mflag)
                                narg++;
                } else {
                        if(!intok && mflag)
                                narg++;
                        intok = 1;
                }
        }
        return narg;
}