unsigned
ArchiveMember::getMemberSize() const {
// Basically its the file size plus the header size
- unsigned result = info.fileSize + sizeof(ArchiveMemberHeader);
+ unsigned result = Size + sizeof(ArchiveMemberHeader);
// If it has a long filename, include the name length
if (hasLongFilename())
ArchiveMember::ArchiveMember()
: parent(0), path("--invalid--"), flags(0), data(0)
{
- info.user = sys::Process::GetCurrentUserId();
- info.group = sys::Process::GetCurrentGroupId();
- info.mode = 0777;
- info.fileSize = 0;
- info.modTime = sys::TimeValue::now();
+ User = sys::Process::GetCurrentUserId();
+ Group = sys::Process::GetCurrentGroupId();
+ Mode = 0777;
+ Size = 0;
+ ModTime = sys::TimeValue::now();
}
// This is the constructor that the Archive class uses when it is building or
signature = magic.c_str();
sys::PathWithStatus PWS(path);
const sys::FileStatus *FSinfo = PWS.getFileStatus(false, ErrMsg);
- if (FSinfo)
- info = *FSinfo;
- else
+ if (!FSinfo)
return true;
+ User = FSinfo->getUser();
+ Group = FSinfo->getGroup();
+ Mode = FSinfo->getMode();
+ ModTime = FSinfo->getTimestamp();
+ Size = FSinfo->getSize();
}
// Determine what kind of file it is.
#include "llvm/ADT/ilist.h"
#include "llvm/ADT/ilist_node.h"
#include "llvm/Support/Path.h"
-#include "llvm/Support/PathV1.h"
+#include "llvm/Support/TimeValue.h"
#include <map>
#include <set>
/// have any applicability on non-Unix systems but is a required component
/// of the "ar" file format.
/// @brief Get the user associated with this archive member.
- unsigned getUser() const { return info.getUser(); }
+ unsigned getUser() const { return User; }
/// The "group" is the owning group of the file per Unix security. This
/// may not have any applicability on non-Unix systems but is a required
/// component of the "ar" file format.
/// @brief Get the group associated with this archive member.
- unsigned getGroup() const { return info.getGroup(); }
+ unsigned getGroup() const { return Group; }
/// The "mode" specifies the access permissions for the file per Unix
/// security. This may not have any applicability on non-Unix systems but is
/// a required component of the "ar" file format.
/// @brief Get the permission mode associated with this archive member.
- unsigned getMode() const { return info.getMode(); }
+ unsigned getMode() const { return Mode; }
/// This method returns the time at which the archive member was last
/// modified when it was not in the archive.
/// @brief Get the time of last modification of the archive member.
- sys::TimeValue getModTime() const { return info.getTimestamp(); }
+ sys::TimeValue getModTime() const { return ModTime; }
/// @returns the size of the archive member in bytes.
/// @brief Get the size of the archive member.
- uint64_t getSize() const { return info.getSize(); }
+ uint64_t getSize() const { return Size; }
/// This method returns the total size of the archive member as it
/// appears on disk. This includes the file content, the header, the
/// @name Data
/// @{
private:
- Archive* parent; ///< Pointer to parent archive
- std::string path; ///< Path of file containing the member
- sys::FileStatus info; ///< Status info (size,mode,date)
- unsigned flags; ///< Flags about the archive member
- const char* data; ///< Data for the member
+ Archive *parent; ///< Pointer to parent archive
+ std::string path; ///< Path of file containing the member
+ uint32_t User;
+ uint32_t Group;
+ uint32_t Mode;
+ sys::TimeValue ModTime;
+ uint64_t Size;
+ unsigned flags; ///< Flags about the archive member
+ const char *data; ///< Data for the member
/// @}
/// @name Constructors
#include "Archive.h"
#include "llvm/ADT/StringExtras.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/TimeValue.h"
#include <cstring>
// Fill in fields of the ArchiveMember
member->parent = this;
member->path = pathname;
- member->info.fileSize = MemberSize;
- member->info.modTime.fromEpochTime(atoi(Hdr->date));
+ member->Size = MemberSize;
+ member->ModTime.fromEpochTime(atoi(Hdr->date));
unsigned int mode;
sscanf(Hdr->mode, "%o", &mode);
- member->info.mode = mode;
- member->info.user = atoi(Hdr->uid);
- member->info.group = atoi(Hdr->gid);
+ member->Mode = mode;
+ member->User = atoi(Hdr->uid);
+ member->Group = atoi(Hdr->gid);
member->flags = flags;
member->data = At;
delete mbr;
return true;
}
- mbr->info = *FSInfo;
+ mbr->User = FSInfo->getUser();
+ mbr->Group = FSInfo->getGroup();
+ mbr->Mode = FSInfo->getMode();
+ mbr->ModTime = FSInfo->getTimestamp();
+ mbr->Size = FSInfo->getSize();
unsigned flags = 0;
bool hasSlash = filePath.str().find('/') != std::string::npos;
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/raw_ostream.h"