📄 smbcomrename.c
字号:
#include "headers.h"SmbProcessResultsmbcomrename(SmbSession *s, SmbHeader *h, uchar *, SmbBuffer *b){ int rv; char *oldpath, *newpath; char *olddir, *newdir; char *oldname, *newname; uchar oldfmt, newfmt; Dir d; SmbProcessResult pr; if (h->wordcount != 1) return SmbProcessResultFormat; if (!smbbuffergetb(b, &oldfmt) || oldfmt != 0x04 || !smbbuffergetstring(b, h, SMB_STRING_PATH, &oldpath) || !smbbuffergetb(b, &newfmt) || newfmt != 0x04 || !smbbuffergetstring(b, h, SMB_STRING_PATH, &newpath)) return SmbProcessResultFormat; smblogprint(h->command, "smbcomrename: %s to %s\n", oldpath, newpath); smbpathsplit(oldpath, &olddir, &oldname); smbpathsplit(newpath, &newdir, &newname); if (strcmp(olddir, newdir) != 0) { smblogprint(h->command, "smbcomrename: directories differ\n"); goto noaccess; } memset(&d, 0xff, sizeof(d)); d.uid = d.gid = d.muid = nil; d.name = newname; rv = dirwstat(oldpath, &d); if (rv < 0) { smblogprint(h->command, "smbcomrename failed: %r\n"); noaccess: smbseterror(s, ERRDOS, ERRnoaccess); pr = SmbProcessResultError; } else pr = smbbufferputack(s->response, h, &s->peerinfo); free(oldpath); free(olddir); free(oldname); free(newpath); free(newdir); free(newname); return pr;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -