smbcomdir.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 50 行

C
50
字号
#include "headers.h"SmbProcessResultsmbcomcheckdirectory(SmbSession *s, SmbHeader *h, uchar *, SmbBuffer *b){	char *path;	Dir *d;	uchar fmt;	SmbProcessResult pr;	SmbTree *t;	char *fullpath = nil;	if (!smbcheckwordcount("comcheckdirectory", h, 0))		return SmbProcessResultFormat;	if (!smbbuffergetb(b, &fmt)		|| fmt != 4		|| !smbbuffergetstring(b, h, SMB_STRING_PATH, &path))		return SmbProcessResultFormat;	t = smbidmapfind(s->tidmap, h->tid);	if (t == nil) {		smbseterror(s, ERRSRV, ERRinvtid);		return SmbProcessResultError;	}		smbstringprint(&fullpath, "%s%s", t->serv->path, path);smblogprintif(1, "smbcomcheckdirectory: statting %s\n", fullpath);	d = dirstat(fullpath);	if (d == nil || (d->mode & DMDIR) == 0) {		smbseterror(s, ERRDOS, ERRbadpath);		pr = SmbProcessResultError;		goto done;	}	if (access(fullpath, AREAD) < 0) {		smbseterror(s, ERRDOS, ERRbadpath);		pr = SmbProcessResultError;		goto done;	}	pr = smbbufferputack(s->response, h, &s->peerinfo) ? SmbProcessResultReply : SmbProcessResultMisc;done:	free(fullpath);	free(path);	free(d);	return pr;}

⌨️ 快捷键说明

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