shithub: pain

ref: 1b81533742fa32d4ba26f7fcacb942becfd89c50
dir: /fs.c/

View raw version
#include <u.h>
#include <libc.h>
#include <auth.h>
#include <fcall.h>
#include <thread.h>
#include <9p.h>
#include <draw.h>
#include <mouse.h>

#include "dat.h"
#include "fns.h"

static void fsopen(Req * req);
static void fsread(Req * req);
static void fswrite(Req * req);
static void fswstat(Req * req);
static void fscreate(Req * req);
static void fsdestroyfid(Fid * req);
static void fsstart(Srv * srv);
static void fsdetroyfile(File * f);

static char srvpath[128] = {0};

static Srv fs = {
	.open =			fsopen,
	.read =			fsread,
	.write = 		fswrite,
	.wstat = 		fswstat,
	.create = 		fscreate,
	.destroyfid = 	fsdestroyfid,
	.start = 		fsstart,
};

static void fsopen(Req * req) {
	respond(req, nil);
}
static void fsread(Req * req) {
	respond(req,nil);
}
static void fswrite(Req * req) {
	respond(req,nil);
}
static void fswstat(Req * req) {
	respond(req,nil);
}
static void fscreate(Req * req) {
	respond(req,nil);
}
static void fsdestroyfid(Fid * req) {
	USED(req);
}
static void fsstart(Srv * srv) {
	USED(srv);
}
static void fsdestroyfile(File * f) {
	USED(f);
}

void
fsclose(void)
{
	if (srvpath[0] == 0)
		remove(srvpath);
	srvpath[0] = 0;
}

int
fsinit(char * srvname)
{
	int rc;

	fs.tree = alloctree(nil, nil, DMDIR|0755, fsdestroyfile);
	if (fs.tree == nil) {
		return -1;
	}

	snprint(srvpath, sizeof(srvpath), "/srv/%s", srvname);
	remove(srvpath);

	rc = postsrv(&fs, srvname);
	if (rc == 0) {
		exits(nil);
	} else
		return rc;
}