GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  9P-CMDBUF (3)

NAME

Cmdbuf, parsecmd, respondcmderror, lookupcmd - control message parsing

CONTENTS

Synopsis
Description
Examples
Source
See Also

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(3)). It returns a Cmdbuf structure holding pointers to each field in the message.

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 Plan 9 kernel driver (/sys/src/9/*/dev*.c on Plan 9) is a good example.

SOURCE

/usr/local/plan9/src/lib9p/parse.c

SEE ALSO

9p(3)
Search for    or go to Top of page |  Section 3 |  Main Index


9P-CMDBUF (3) -->

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.