Sections:

All contributions in this site reflect the authors' opinions and they are not necessarily endorsed by, or reflect the beliefs of, anarchyinthetubes, as neither do most of the opinions in other sites.

/sys/doc/ Documentation archive

[manual index][section index]

NAME

parsecmd - parse device commands

SYNOPSIS

Cmdbuf* parsecmd(char *a, int n)

DESCRIPTION

Parsecmd is an interface to tokenize (see getfields(10.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 sh(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:

typedef
struct Cmdbuf
{
	char	buf[128];
	char	*f[16];
	int	nf;
} Cmdbuf;

The array f holds the field pointers; nf gives the number of fields. Cmdbuf is allocated by smalloc (see malloc(10.2)), and the caller is responsible for freeing it using free.

SOURCE

/os/port/parse.c
/emu/port/dev.c

PARSECMD(10.2) Rev:  Tue Jan 29 13:11:34 GMT 2008
original page
cat.4l77.com