/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcFile/src/FcFile_Filesystem.h
103 строки
3 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef __FCFILE_FILESYSTEM_H__ #define __FCFILE_FILESYSTEM_H__ #if defined(__gnu_linux__) #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> typedef char TCHAR; FCFILEDEF FcFile_Error_t FcFile_Filesystem_createFolder(const char directory[]) { struct stat st = {0}; if (stat(directory, &st) == -1) { errno = 0; if (mkdir(directory, 0755) == -1) { switch (errno) { case EACCES: return FCFILE_ERROR_POSIX_EACCES; case EDQUOT: return FCFILE_ERROR_POSIX_EDQUOT; case EFAULT: return FCFILE_ERROR_POSIX_EFAULT; case EINVAL: return FCFILE_ERROR_POSIX_EINVAL; case ELOOP: return FCFILE_ERROR_POSIX_ELOOP; case EMLINK: return FCFILE_ERROR_POSIX_EMLINK; case ENAMETOOLONG: return FCFILE_ERROR_POSIX_ENAMETOOLONG; case ENOENT: return FCFILE_ERROR_POSIX_ENOENT; case ENOMEM: return FCFILE_ERROR_POSIX_ENOMEM; case ENOSPC: return FCFILE_ERROR_POSIX_ENOSPC; case ENOTDIR: return FCFILE_ERROR_POSIX_ENOTDIR; case EPERM: return FCFILE_ERROR_POSIX_EPERM; case EROFS: return FCFILE_ERROR_POSIX_EROFS; case EBADF: return FCFILE_ERROR_POSIX_EBADF; } } } return FCFILE_ERROR_NOERROR; /*switch (st.st_mode & S_IFMT) { case S_IFBLK: return FCFILE_POSIX_BlockDevice; case S_IFCHR: return FCFILE_POSIX_CharacterDevice; case S_IFDIR: return FCFILE_POSIX_Directory; case S_IFIFO: return FCFILE_POSIX_FIFO_PIPE; case S_IFLNK: return FCFILE_POSIX_Symlink; case S_IFREG: return FCFILE_POSIX_RegularFile; case S_IFSOCK: return FCFILE_POSIX_Socket; default: return FCFILE_POSIX_Unknown; }*/ } #elif defined(_WIN32) || defined(_WIN64) #ifdef _MSC_VER #ifndef _UNICODE #define _UNICODE #endif #ifndef UNICODE #define UNICODE #endif #endif //_MSC_VER #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include <tchar.h> #include <windows.h> FCFILEDEF FcFile_Error_t FcFile_Filesystem_createFolder(const TCHAR directory[]) { if (CreateDirectory(directory, NULL)) { return FCFILE_ERROR_NOERROR; } switch (GetLastError()) { case ERROR_ALREADY_EXISTS: return FCFILE_ERROR_WINAPI_EXISTS; case ERROR_PATH_NOT_FOUND: return FCFILE_ERROR_WINAPI_PATH_NOT_FOUND; default: return FCFILE_ERROR_WINAPI_UNKNOWN; } } #elif __ANDROID__ typedef char TCHAR; #else #error Not Supported! #endif #endif