Skip to content

Commit

Permalink
IO: remove support of FF_PATHTYPE_LINK
Browse files Browse the repository at this point in the history
  • Loading branch information
CarterLi committed Dec 18, 2023
1 parent e89d475 commit 4ae0c43
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 45 deletions.
42 changes: 36 additions & 6 deletions src/common/io/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,15 +75,45 @@ static inline bool ffReadFileBuffer(const char* fileName, FFstrbuf* buffer)
//Bit flags, combine with |
typedef enum FFPathType
{
FF_PATHTYPE_REGULAR = 1,
FF_PATHTYPE_LINK = 2,
FF_PATHTYPE_DIRECTORY = 4
FF_PATHTYPE_FILE = 1 << 0,
FF_PATHTYPE_DIRECTORY = 1 << 1,
FF_PATHTYPE_ANY = FF_PATHTYPE_FILE | FF_PATHTYPE_DIRECTORY,
} FFPathType;

#define FF_PATHTYPE_FILE (FF_PATHTYPE_REGULAR | FF_PATHTYPE_LINK)
#define FF_PATHTYPE_ANY (FF_PATHTYPE_FILE | FF_PATHTYPE_DIRECTORY)
static inline bool ffPathExists(const char* path, FFPathType pathType)
{
#ifdef _WIN32

DWORD attr = GetFileAttributesA(path);

if(attr == INVALID_FILE_ATTRIBUTES)
return false;

if(pathType & FF_PATHTYPE_FILE && !(attr & FILE_ATTRIBUTE_DIRECTORY))
return true;

if(pathType & FF_PATHTYPE_DIRECTORY && (attr & FILE_ATTRIBUTE_DIRECTORY))
return true;

#else

struct stat fileStat;
if(stat(path, &fileStat) != 0)
return false;

unsigned int mode = fileStat.st_mode & S_IFMT;

if(pathType & FF_PATHTYPE_FILE && mode == S_IFREG)
return true;

if(pathType & FF_PATHTYPE_DIRECTORY && mode == S_IFDIR)
return true;

#endif

return false;
}

bool ffPathExists(const char* path, FFPathType pathType);
bool ffPathExpandEnv(const char* in, FFstrbuf* out);

#define FF_IO_TERM_RESP_WAIT_MS 100 // #554
Expand Down
20 changes: 0 additions & 20 deletions src/common/io/io_unix.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,26 +103,6 @@ bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)
return ffAppendFDBuffer(fd, buffer);
}

bool ffPathExists(const char* path, FFPathType type)
{
struct stat fileStat;
if(stat(path, &fileStat) != 0)
return false;

unsigned int mode = fileStat.st_mode & S_IFMT;

if(type & FF_PATHTYPE_REGULAR && mode == S_IFREG)
return true;

if(type & FF_PATHTYPE_DIRECTORY && mode == S_IFDIR)
return true;

if(type & FF_PATHTYPE_LINK && mode == S_IFLNK)
return true;

return false;
}

bool ffPathExpandEnv(FF_MAYBE_UNUSED const char* in, FF_MAYBE_UNUSED FFstrbuf* out)
{
bool result = false;
Expand Down
20 changes: 1 addition & 19 deletions src/common/io/io_windows.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ bool ffAppendFDBuffer(HANDLE handle, FFstrbuf* buffer)
LARGE_INTEGER fileSize;
if(!GetFileSizeEx(handle, &fileSize))
fileSize.QuadPart = 0;

if (fileSize.QuadPart > 0)
{
// optimize for files has a fixed length,
Expand Down Expand Up @@ -87,24 +87,6 @@ bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)
return ffAppendFDBuffer(handle, buffer);
}

bool ffPathExists(const char* path, FFPathType type)
{
DWORD attr = GetFileAttributesA(path);
if(attr == INVALID_FILE_ATTRIBUTES)
return false;

if(type & FF_PATHTYPE_REGULAR && !(attr & FILE_ATTRIBUTE_DIRECTORY))
return true;

if(type & FF_PATHTYPE_DIRECTORY && (attr & FILE_ATTRIBUTE_DIRECTORY))
return true;

if(type & FF_PATHTYPE_LINK && (attr & FILE_ATTRIBUTE_REPARSE_POINT))
return true;

return false;
}

bool ffPathExpandEnv(const char* in, FFstrbuf* out)
{
DWORD length = ExpandEnvironmentStringsA(in, NULL, 0);
Expand Down

0 comments on commit 4ae0c43

Please sign in to comment.