9PCMDBUF man page on Plan9

Printed from http://www.polarhome.com/service/man/?qf=9PCMDBUF&af=0&tf=2&of=Plan9

9PCMDBUF(2)							   9PCMDBUF(2)

NAME
       Cmdbuf, parsecmd, respondcmderror, lookupcmd - control message parsing

SYNOPSIS
       #include <u.h>
       #include <libc.h>
       #include <fcall.h>
       #include <thread.h>
       #include <9p.h>

       typedef struct Cmdbuf
       {
	   char	   *buf;
	   char	   **f;
	   int	   nf;
       } Cmdbuf;

       typedef struct Cmdtab
       {
	   int	   index;
	   char	   *cmd;
	   int	   narg;
       };

       Cmdbuf	   *parsecmd(char *p, int n)
       Cmdtab	   *lookupcmd(Cmdbuf *cb, Cmdtab *tab, int ntab)
       void	   respondcmderror(Req *r, Cmdbuf *cb, char *fmt, ...)

DESCRIPTION
       These  data structures and functions provide parsing of textual control
       messages.

       Parsecmd treats the n bytes at p (which need not be NUL-terminated)  as
       a  UTF  string  and  splits  it	using tokenize (see getfields(2)).  It
       returns a Cmdbuf structure holding pointers to each field in  the  mes‐
       sage.  It is the caller's responsibility to free this structure when it
       is no longer needed.

       Lookupcmd walks through the array ctab, which has ntab entries, looking
       for  the	 first Cmdtab that matches the parsed command.	(If the parsed
       command is empty, lookupcmd returns nil immediately.)  A Cmdtab matches
       the  command  if	 cmd is equal to cb->f[0] or if cmd is Once a matching
       Cmdtab has been found, if narg is not zero,  then  the  parsed  command
       must  have  exactly  narg fields (including the command string itself).
       If the command has the wrong number  of	arguments,  lookupcmd  returns
       nil.   Otherwise,  it  returns  a  pointer  to  the  Cmdtab  entry.  If
       lookupcmd does not find a matching command  at  all,  it	 returns  nil.
       Whenever lookupcmd returns nil, it sets the system error string.

       Respondcmderror	resoponds to request r with an error of the form `fmt:
       cmd,' where fmt is the formatted string and cmd is a reconstruction  of
       the parsed command.  Fmt is often simply %r .

EXAMPLES
       This  interface	is  not	 used  in  any distributed 9P servers.	It was
       lifted  from  the  Plan	 9   kernel.	Almost	 any   kernel	driver
       (/sys/src/9/*/dev*.c) is a good example.

SOURCE
       /sys/src/lib9p/parse.c

SEE ALSO
       9p(2)

								   9PCMDBUF(2)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server Plan9

List of man pages available for Plan9

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net