Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_fixcpp/sys/src/cmd/webfsget.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* Example of how to use webfs */
2
#include <u.h>
3
#include <libc.h>
4
 
5
void
6
xfer(int from, int to)
7
{
8
	char buf[12*1024];
9
	int n;
10
 
11
	while((n = read(from, buf, sizeof buf)) > 0)
12
		if(write(to, buf, n) < 0)
13
			sysfatal("write failed: %r");
14
	if(n < 0)
15
		sysfatal("read failed: %r");
16
}
17
 
18
void
19
usage(void)
20
{
21
	fprint(2, "usage: webfsget [-b baseurl] [-m mtpt] [-p postbody] url\n");
22
	exits("usage");
23
}
24
 
25
void
26
main(int argc, char **argv)
27
{
28
	int conn, ctlfd, fd, n;
29
	char buf[128], *base, *mtpt, *post, *url;
30
 
31
	mtpt = "/mnt/web";
32
	post = nil;
33
	base = nil;
34
	ARGBEGIN{
35
	default:
36
		usage();
37
	case 'b':
38
		base = EARGF(usage());
39
		break;
40
	case 'm':
41
		mtpt = EARGF(usage());
42
		break;
43
	case 'p':
44
		post = EARGF(usage());
45
		break;
46
	}ARGEND;
47
 
48
	if (argc != 1) 
49
		usage();
50
 
51
	url = argv[0];
52
 
53
	snprint(buf, sizeof buf, "%s/clone", mtpt);
54
	if((ctlfd = open(buf, ORDWR)) < 0)
55
		sysfatal("couldn't open %s: %r", buf);
56
	if((n = read(ctlfd, buf, sizeof buf-1)) < 0)
57
		sysfatal("reading clone: %r");
58
	if(n == 0)
59
		sysfatal("short read on clone");
60
	buf[n] = '\0';
61
	conn = atoi(buf);
62
 
63
	if(base)
64
		if(fprint(ctlfd, "baseurl %s", base) < 0)
65
			sysfatal("baseurl ctl write: %r");
66
 
67
	if(fprint(ctlfd, "url %s", url) <= 0)
68
		sysfatal("get ctl write: %r");
69
 
70
	if(post){
71
		snprint(buf, sizeof buf, "%s/%d/postbody", mtpt, conn);
72
		if((fd = open(buf, OWRITE)) < 0)
73
			sysfatal("open %s: %r", buf);
74
		if(write(fd, post, strlen(post)) < 0)
75
			sysfatal("post write failed: %r");
76
		close(fd);
77
	}
78
 
79
	snprint(buf, sizeof buf, "%s/%d/body", mtpt, conn);
80
	if((fd = open(buf, OREAD)) < 0)
81
		sysfatal("open %s: %r", buf);
82
 
83
	xfer(fd, 1);
84
	exits(nil);
85
}