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 + -
显示快捷键?