summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aquarela/smbcomdelete.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/cmd/aquarela/smbcomdelete.c')
-rw-r--r--sys/src/cmd/aquarela/smbcomdelete.c76
1 files changed, 0 insertions, 76 deletions
diff --git a/sys/src/cmd/aquarela/smbcomdelete.c b/sys/src/cmd/aquarela/smbcomdelete.c
deleted file mode 100644
index 7d0eb99a9..000000000
--- a/sys/src/cmd/aquarela/smbcomdelete.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "headers.h"
-#include <String.h>
-
-int
-smbremovefile(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;
-}
-
-SmbProcessResult
-smbcomdelete(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;
-}