dumbfs.c

来自「A part of LFS.This is a server software.」· C语言 代码 · 共 87 行

C
87
字号
/* $Id: dumbfs.C,v 1.8 2001/10/08 04:14:49 dm Exp $ */#include "classfscli.h"#include "nfsserv.h"#include "nfstrans.h"#include "rxx.h"str origpath;str mntname;ptr<sfsuclnt> c;ptr<nfsserv_udp> nfss_udp = New refcounted<nfsserv_udp>;ptr<nfsserv_fixup> nfss = New refcounted<nfsserv_fixup> (nfss_udp);static voidreply (nfscall *nc, clnt_stat stat){  if (stat) {    warn << "NFS server: " << stat << "\n";    nc->reject (SYSTEM_ERR);    return;  }  attrvec av;  nfs3_getattrinfo (&av, nc->proc (), nc->getvoidarg (), nc->getvoidres ());  for (attrinfo *ap = av.base (); ap < av.lim (); ap++)    if (ap->fattr && ap->fattr->type == NF3REG) // Regular files      if (ap->wattr)	warn << "size: " << ap->wattr->size << " -> "	     << ap->fattr->size << "\n";  nc->reply (nc->getvoidres ());}voiddispatch (nfscall *nc){  c->call (nc->proc (), nc->getvoidarg (), nc->getvoidres (),	   wrap (reply, nc));}static voidmounted (int err){  if (err)    fatal << "classfsd reports: " << strerror (err) << "\n";}static voidgotcli (ptr<sfsuclnt> suc, str err){  if (!suc)    fatal << err << "\n";  c = suc;  nfss->setcb (wrap (dispatch));  classmount (nfss_udp->getfd (), c->rootfh.data, mntname, wrap (mounted));}static voidusage (){  warnx << "usage: " << progname << " /path [name]\n";  exit (1);}/* Regular expression to get last component of a path */static rxx basenamerx ("([^/]+)/*$");intmain (int argc, char **argv){  setprogname (argv[0]);  if (argc < 2 || argc > 3)    usage ();  origpath = argv[1];  if (argc == 3)    mntname = argv[2];  else if (basenamerx.search (origpath))    mntname = basenamerx[1];  else    usage ();  sfsuclnt::alloc (origpath, wrap (gotcli));  amain ();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?