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_posix/sys/src/cmd/aquarela/smbclientopen.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
#include "headers.h"
2
 
3
int
4
smbclientopen(SmbClient *c, ushort mode, char *name, uchar *errclassp, ushort *errorp,
5
	ushort *fidp, ushort *attrp, ulong *mtimep, ulong *sizep, ushort *accessallowedp, char **errmsgp)
6
{
7
	SmbBuffer *b;
8
	SmbHeader h;
9
	ulong bytecountfixup;
10
	long n;
11
	uchar *pdata;
12
	ushort bytecount;
13
 
14
	b = smbbuffernew(65535);
15
	h = c->protoh;
16
	h.tid = c->sharetid;
17
	h.command = SMB_COM_OPEN;
18
	h.wordcount = 2;
19
	smbbufferputheader(b, &h, &c->peerinfo);
20
	smbbufferputs(b, mode);
21
	smbbufferputs(b, 0);
22
	bytecountfixup = smbbufferwriteoffset(b);
23
	smbbufferputs(b, 0);
24
	smbbufferputb(b, 4);
25
	smbbufferputstring(b, &c->peerinfo, SMB_STRING_REVPATH, name);
26
	smbbufferfixuprelatives(b, bytecountfixup);
27
	nbsswrite(c->nbss, smbbufferreadpointer(b), smbbufferwriteoffset(b));
28
	smbbufferreset(b);
29
	n = nbssread(c->nbss, smbbufferwritepointer(b), smbbufferwritespace(b));
30
	if (n < 0) {
31
		smbstringprint(errmsgp, "read error: %r");
32
		smbbufferfree(&b);
33
		return 0;
34
	}
35
	smbbuffersetreadlen(b, n);
36
	if (!smbbuffergetandcheckheader(b, &h, h.command, 7, &pdata, &bytecount, errmsgp)) {
37
		smbbufferfree(&b);
38
		return 0;
39
	}
40
	if (h.errclass) {
41
		*errclassp = h.errclass;
42
		*errorp = h.error;
43
		smbbufferfree(&b);
44
		return 0;
45
	}
46
	*fidp = smbnhgets(pdata); pdata += 2;
47
	*attrp = smbnhgets(pdata); pdata += 2;
48
	*mtimep = smbnhgetl(pdata); pdata += 4;
49
	*sizep = smbnhgets(pdata); pdata += 4;
50
	*accessallowedp = smbnhgets(pdata);
51
	return 1;
52
}
53