* Implement getStatusInfo for getting stat(2) like information

* Implement createTemporaryFile for mkstemp(3) functionality
* Fix isBytecodeFile to accept llvc magic # (compressed) as bytecode.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17654 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2004-11-09 20:26:31 +00:00
parent 31391b6792
commit 9195f37c5f
3 changed files with 108 additions and 10 deletions

View File

@ -16,6 +16,7 @@
#include <string>
#include <vector>
#include "llvm/System/TimeValue.h"
namespace llvm {
namespace sys {
@ -306,6 +307,24 @@ namespace sys {
/// @brief Get the base name of the path
std::string getBasename() const;
/// This structure provides basic file system information about a file.
/// The structure is filled in by the getStatusInfo method.
/// @brief File status structure
struct StatusInfo {
StatusInfo() : modTime(0,0) { fileSize=0; mode=0; user=0; group=0; }
size_t fileSize; ///< Size of the file in bytes
TimeValue modTime; ///< Time of file's modification
uint64_t mode; ///< Mode of the file, if applicable
uint64_t user; ///< User ID of owner, if applicable
uint64_t group; ///< Group ID of owner, if applicable
};
/// This function returns status information about the file.
/// @returns nothing
/// @throws std::string if an error occurs.
/// @brief Get file status.
void getStatusInfo(StatusInfo& stat) const;
/// @returns a c string containing the path name.
/// @brief Returns the path as a C string.
const char* const c_str() const { return path.c_str(); }
@ -425,6 +444,17 @@ namespace sys {
/// @brief Create the file this Path refers to.
bool createFile();
/// This is like createFile except that it creates a temporary file. A
/// unique temporary file name is generated based on the contents of
/// \p this before the call. The new name is assigned to \p this and the
/// file is created. Note that this will both change the Path object
/// *and* create the corresponding file. The path of \p this will have
/// six characters added to it (per mkstemp(3)) that ensure the file
/// name is unique.
/// @throws std::string if there is an error
/// @brief Create a temporary file
bool createTemporaryFile();
/// This method attempts to destroy the directory named by the last in
/// the Path name. If \p remove_contents is false, an attempt will be
/// made to remove just the directory that this Path object refers to