Skip to content

Commit

Permalink
ref
Browse files Browse the repository at this point in the history
  • Loading branch information
dnzbk committed Apr 11, 2024
1 parent 685b6c0 commit 5531cd1
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 28 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ project(

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|AppleClang")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g0 -pthread -g -Weverything -Wno-c++98-compat" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g0 -pthread -g -DDEBUG -Weverything -Wno-c++98-compat" CACHE STRING "" FORCE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "-O0 -g0 -pthread -g -Wall -Wextra" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS "-O0 -g0 -pthread -g -DDEBUG -Wall -Wextra" CACHE STRING "" FORCE)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "/Od /Zi /MTd /MP /W4 /EHs /DDEBUG /D_DEBUG /DWIN32 /wd4800 /wd4267" CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} winmm.lib Dbghelp.lib libcpmtd.lib" CACHE STRING "" FORCE)
Expand Down
6 changes: 4 additions & 2 deletions daemon/postprocess/Unpack.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -734,14 +734,16 @@ bool UnpackController::Cleanup()
}

#ifndef WIN32
FileSystem::SetFilePermissionsWithUmask(dstFile.Str(), g_Options->GetUMask());
// Fixing file or directory permissions overridden by the unpacker
FileSystem::SetFileOrDirPermissionsWithUMask(dstFile.Str(), g_Options->GetUMask());
#endif

extractedFiles.push_back(filename);
}

#ifndef WIN32
FileSystem::SetFilePermissionsWithUmask(destDir, g_Options->GetUMask());
// Fixing directory permissions overridden by the unpacker
FileSystem::SetDirPermissionsWithUMask(destDir, g_Options->GetUMask());
#endif

}
Expand Down
68 changes: 45 additions & 23 deletions daemon/util/FileSystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -959,37 +959,59 @@ void FileSystem::FixExecPermission(const char* filename)
}
}

void FileSystem::SetFilePermissionsWithUmask(const char* filename, int umask)
bool FileSystem::SetFileOrDirPermissionsWithUMask(const char* filename, int umask)
{
struct stat buffer;
mode_t permissions = 0;

if (stat(filename, &buffer) != 0)
int ec = stat(filename, &buffer);
if (ec != 0)
{
info("%s", "Couldn't stat");
return;
}

if (S_ISDIR(buffer.st_mode) == 0)
{
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
permissions = mode & ~umask;
}
else
{
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
permissions = mode & ~umask;
#ifdef DEBUG
debug("Failed to read information for %s. Errno: %i", filename, ec);
#endif

return false;
}

info("%s %o %s %s", "Setting permissons ", permissions, "on", filename);
if (chmod(filename, permissions) == 0)
if (S_ISDIR(buffer.st_mode))
{
info("%s", "Success");
}
else
return SetDirPermissionsWithUMask(filename, umask);
}

return SetFilePermissionsWithUMask(filename, umask);
}

bool FileSystem::SetFilePermissionsWithUMask(const char* filepath, int umask)
{
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; // 0666
return SetPermissionsWithUMask(filepath, mode, umask);
}

bool FileSystem::SetDirPermissionsWithUMask(const char* filename, int umask)
{
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO; // 0777
return SetPermissionsWithUMask(filename, mode, umask);
}

bool FileSystem::SetPermissionsWithUMask(const char* filename, mode_t mode, int umask)
{
mode_t permissions = mode & ~umask;
int ec = chmod(filename, permissions);
if (ec == 0)
{
error("%s", "Failure");
}

#ifdef DEBUG
debug("Permissions %o was set for %s", permissions, filename);
#endif

return true;
}

#ifdef DEBUG
debug("Failed to set permissions for %s. Errno %i", filename, ec);
#endif

return false;
}
#endif

Expand Down
5 changes: 4 additions & 1 deletion daemon/util/FileSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ class FileSystem
#ifndef WIN32
static CString ExpandHomePath(const char* filename);
static void FixExecPermission(const char* filename);
static void SetFilePermissionsWithUmask(const char* filename, int umask);
static bool SetFileOrDirPermissionsWithUMask(const char* filename, int umask);
static bool SetFilePermissionsWithUMask(const char* filename, int umask);
static bool SetDirPermissionsWithUMask(const char* filename, int umask);
static bool SetPermissionsWithUMask(const char* filename, mode_t mode, int umask);
#endif
static CString ExpandFileName(const char* filename);
static CString GetExeFileName(const char* argv0);
Expand Down

0 comments on commit 5531cd1

Please sign in to comment.