mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-29 10:32:47 +00:00
Added the MakeFileReadable() method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8327 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9adeccc552
commit
66622be46a
@ -51,4 +51,21 @@ std::string getUniqueFilename(const std::string &FilenameBase);
|
||||
/// In case of failure, the file's access attributes are unspecified.
|
||||
///
|
||||
bool MakeFileExecutable (const std::string & Filename);
|
||||
|
||||
///
|
||||
/// Method: MakeFileReadable()
|
||||
///
|
||||
/// Description:
|
||||
/// This method turns on whatever access attributes are needed to make the
|
||||
/// specified file readable.
|
||||
///
|
||||
/// Return value:
|
||||
/// True - The operation succeeded.
|
||||
/// False - The operation failed.
|
||||
///
|
||||
/// Notes:
|
||||
/// In case of failure, the file's access attributes are unspecified.
|
||||
///
|
||||
bool MakeFileReadable (const std::string & Filename);
|
||||
|
||||
#endif
|
||||
|
@ -51,4 +51,21 @@ std::string getUniqueFilename(const std::string &FilenameBase);
|
||||
/// In case of failure, the file's access attributes are unspecified.
|
||||
///
|
||||
bool MakeFileExecutable (const std::string & Filename);
|
||||
|
||||
///
|
||||
/// Method: MakeFileReadable()
|
||||
///
|
||||
/// Description:
|
||||
/// This method turns on whatever access attributes are needed to make the
|
||||
/// specified file readable.
|
||||
///
|
||||
/// Return value:
|
||||
/// True - The operation succeeded.
|
||||
/// False - The operation failed.
|
||||
///
|
||||
/// Notes:
|
||||
/// In case of failure, the file's access attributes are unspecified.
|
||||
///
|
||||
bool MakeFileReadable (const std::string & Filename);
|
||||
|
||||
#endif
|
||||
|
@ -147,3 +147,57 @@ MakeFileExecutable (const std::string & Filename)
|
||||
return true;
|
||||
}
|
||||
|
||||
///
|
||||
/// Method: MakeFileReadable ()
|
||||
///
|
||||
/// Description:
|
||||
/// This method makes the specified filename readable by giving it
|
||||
/// read permission. It respects the umask value of the process, and it
|
||||
/// does not enable any unnecessary access bits.
|
||||
///
|
||||
/// Algorithm:
|
||||
/// o Get file's current permissions.
|
||||
/// o Get the process's current umask.
|
||||
/// o Take the set of all read bits and disable those found in the umask.
|
||||
/// o Add the remaining permissions to the file's permissions.
|
||||
///
|
||||
bool
|
||||
MakeFileReadable (const std::string & Filename)
|
||||
{
|
||||
// Permissions masking value of the user
|
||||
mode_t mask;
|
||||
|
||||
// Permissions currently enabled on the file
|
||||
struct stat fstat;
|
||||
|
||||
//
|
||||
// Grab the umask value from the operating system. We want to use it when
|
||||
// changing the file's permissions.
|
||||
//
|
||||
// Note:
|
||||
// Umask() is one of those annoying system calls. You have to call it
|
||||
// to get the current value and then set it back.
|
||||
//
|
||||
mask = umask (0x777);
|
||||
umask (mask);
|
||||
|
||||
//
|
||||
// Go fetch the file's current permission bits. We want to *add* execute
|
||||
// access to the file.
|
||||
//
|
||||
if ((stat (Filename.c_str(), &fstat)) == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// Make the file executable...
|
||||
//
|
||||
if ((chmod(Filename.c_str(), (fstat.st_mode | (0444 & ~mask)))) == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -147,3 +147,57 @@ MakeFileExecutable (const std::string & Filename)
|
||||
return true;
|
||||
}
|
||||
|
||||
///
|
||||
/// Method: MakeFileReadable ()
|
||||
///
|
||||
/// Description:
|
||||
/// This method makes the specified filename readable by giving it
|
||||
/// read permission. It respects the umask value of the process, and it
|
||||
/// does not enable any unnecessary access bits.
|
||||
///
|
||||
/// Algorithm:
|
||||
/// o Get file's current permissions.
|
||||
/// o Get the process's current umask.
|
||||
/// o Take the set of all read bits and disable those found in the umask.
|
||||
/// o Add the remaining permissions to the file's permissions.
|
||||
///
|
||||
bool
|
||||
MakeFileReadable (const std::string & Filename)
|
||||
{
|
||||
// Permissions masking value of the user
|
||||
mode_t mask;
|
||||
|
||||
// Permissions currently enabled on the file
|
||||
struct stat fstat;
|
||||
|
||||
//
|
||||
// Grab the umask value from the operating system. We want to use it when
|
||||
// changing the file's permissions.
|
||||
//
|
||||
// Note:
|
||||
// Umask() is one of those annoying system calls. You have to call it
|
||||
// to get the current value and then set it back.
|
||||
//
|
||||
mask = umask (0x777);
|
||||
umask (mask);
|
||||
|
||||
//
|
||||
// Go fetch the file's current permission bits. We want to *add* execute
|
||||
// access to the file.
|
||||
//
|
||||
if ((stat (Filename.c_str(), &fstat)) == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
// Make the file executable...
|
||||
//
|
||||
if ((chmod(Filename.c_str(), (fstat.st_mode | (0444 & ~mask)))) == -1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user