NAME
parsecmd, cmderror, lookupcmd – parse device commands |
SYNOPSIS
Cmdbuf* parsecmd(char *a, int n) void cmderror(Cmdbuf *cb, char *s)
Cmdtab* lookupcmd(Cmdbuf *cb, Cmdtab *ctab, int nctab) |
DESCRIPTION
Parsecmd is an interface to tokenize (see getfields(2)), that
safely parses a command, with blank–separated fields, as might
be written to a device's ctl file. The buffer a and count n can
be those passed to the driver's write function. Parsecmd converts
the byte array (which might not be null–terminated) to a null–
terminated string, trimming any trailing new line, before invoking
tokenize to break the string into arguments, interpreting blank
and tab as field separators when they are not quoted (in the style
of rc(1)). It returns a pointer to a dynamically–allocated Cmdbuf
structure, which holds a copy of the string as modified by
parsefields, and the resulting fields; it is defined as follows:
Command strings may be turned into a (typically enumerated) integer
with lookupcmd. The catchall * matches any text. Unrecognized
commands, or commands given an unacceptable number of arguments
generate a call to error. The definition is as follows
|
SOURCE
/sys/src/9/port/parse.c |