⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbcomdelete.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "headers.h"#include <String.h>intsmbremovefile(SmbTree *t, char *dir, char *name){	String *s;	int rv;	s = s_new();	s_append(s, t->serv->path);	s_append(s, "/");	if (dir) {		s_append(s, dir);		s_append(s, "/");	}	s_append(s, name);	rv = remove(s_to_c(s));	s_free(s);	return rv;}SmbProcessResultsmbcomdelete(SmbSession *s, SmbHeader *h, uchar *pdata, SmbBuffer *b){	SmbProcessResult pr;	ushort sattr;	uchar fmt;	char *pattern = nil;	char *dir = nil;	char *name = nil;	Reprog *r = nil;	SmbTree *t;	int x, count;	SmbDirCache *dc = nil;	if (h->wordcount != 1)		return SmbProcessResultFormat;	sattr = smbnhgets(pdata);	if (!smbbuffergetb(b, &fmt) || fmt != 0x04		|| !smbbuffergetstring(b, h, SMB_STRING_PATH, &pattern))		return SmbProcessResultFormat;	smblogprint(SMB_COM_DELETE, "searchattributes: 0x%.4ux\npattern:%s\n", sattr, pattern);	smbpathsplit(pattern, &dir, &name);	t = smbidmapfind(s->tidmap, h->tid);	if (t == nil) {		smbseterror(s, ERRSRV, ERRinvtid);		pr = SmbProcessResultError;		goto done;	}	dc = smbmkdircache(t, dir);	if (dc == nil) {		pr = SmbProcessResultMisc;		goto done;	}	r = smbmkrep(name);	count = 0;	for (x = 0; x < dc->n; x++) {		if (!smbmatch(dc->buf[x].name, r))			continue;		if (smbremovefile(t, dir, dc->buf[x].name) == 0)			count++;	}	if (count == 0) {		smbseterror(s, ERRDOS, ERRnoaccess);		pr = SmbProcessResultError;	}	else		pr = smbbufferputack(s->response,h, &s->peerinfo);done:	free(pattern);	free(dir);	free(name);	smbdircachefree(&dc);	free(r);	return pr;}

⌨️ 快捷键说明

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