diff --git a/src/member_files/protocol.h b/src/member_files/protocol.h index 82b6d81a..77e021dc 100644 --- a/src/member_files/protocol.h +++ b/src/member_files/protocol.h @@ -30,8 +30,9 @@ int mf_avatar_file_valid(const char* file); #define MF_FILE 1 #define MF_DIRECTORY 2 +/* MF_REMOVE — системный макрос Win32; для удаления файла/каталога используем отдельное имя. */ enum mf_command { - MF_LIST = 1, MF_STAT, MF_READ, MF_BEGIN_WRITE, MF_WRITE, MF_COMMIT, MF_ABORT, MF_MKDIR, MF_RENAME, MF_REMOVE, + MF_LIST = 1, MF_STAT, MF_READ, MF_BEGIN_WRITE, MF_WRITE, MF_COMMIT, MF_ABORT, MF_MKDIR, MF_RENAME, MF_REMOVE_PATH, MF_STREAM_WRITE, MF_STREAM_READ, MF_STREAM_DATA, MF_STREAM_END, MF_STREAM_CANCEL, MF_QUOTA }; enum mf_status { diff --git a/src/member_files/storage.c b/src/member_files/storage.c index 3b2a7503..ac73f1a3 100644 --- a/src/member_files/storage.c +++ b/src/member_files/storage.c @@ -494,7 +494,7 @@ static int store_command(struct mf_storage* s, uint64_t group, uint64_t peer, co if (rc) return rc; uint8_t version[16]; store_version(s, &info, version); if ((!mf_zero(q->version, 16) && memcmp(q->version, version, 16)) || - ((q->command == MF_READ || q->command == MF_RENAME || q->command == MF_REMOVE || q->cursor) && mf_zero(q->version, 16))) + ((q->command == MF_READ || q->command == MF_RENAME || q->command == MF_REMOVE_PATH || q->cursor) && mf_zero(q->version, 16))) return MF_STALE; r->size = info.size; r->mtime = info.mtime; r->type = info.type; memcpy(r->version, version, 16); if (q->command == MF_STAT) return MF_OK; @@ -527,7 +527,7 @@ static int store_command(struct mf_storage* s, uint64_t group, uint64_t peer, co if (u->active && !strncmp(u->path, path, n) && (!u->path[n] || u->path[n] == '/')) return MF_BUSY; } store_invalidate(s); - if (q->command == MF_REMOVE) { + if (q->command == MF_REMOVE_PATH) { struct store_user* user = store_user_get(s, q->owner, 1); if (!user) return MF_IO_ERROR; rc = mf_disk_remove(&s->root, path, info.type == MF_DIRECTORY); @@ -580,7 +580,7 @@ void mf_storage_execute(struct mf_storage* s, uint64_t group, uint64_t peer, con (unsigned long long)q->request_id, mf_command_text(q->command), q->path, (unsigned long long)q->offset, (unsigned long long)q->size, (unsigned long long)(user ? user->used : 0), (unsigned long long)(user ? user->reserved : 0), (unsigned long long)s->quota); - int mutates = q->command == MF_COMMIT || q->command == MF_MKDIR || q->command == MF_RENAME || q->command == MF_REMOVE; + int mutates = q->command == MF_COMMIT || q->command == MF_MKDIR || q->command == MF_RENAME || q->command == MF_REMOVE_PATH; struct store_receipt* slot = NULL; uint8_t wire[MF_WIRE_MAX], fingerprint[32]; int n = mf_encode(q, wire, sizeof(wire));