Remove last use of PathV1.h from Archive.h

Store the individual fields we need instead of a sys::FileStatus.

llvm-svn: 184353
This commit is contained in:
Rafael Espindola 2013-06-19 21:13:59 +00:00
parent 7a639ea2a4
commit fca038907d
6 changed files with 39 additions and 26 deletions

View File

@ -29,7 +29,7 @@ using namespace llvm;
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())
@ -47,11 +47,11 @@ ArchiveMember::getMemberSize() const {
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
@ -117,10 +117,13 @@ bool ArchiveMember::replaceWith(StringRef newFile, std::string* ErrMsg) {
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.

View File

@ -20,7 +20,7 @@
#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>
@ -72,28 +72,28 @@ class ArchiveMember : public ilist_node<ArchiveMember> {
/// 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
@ -149,11 +149,15 @@ class ArchiveMember : public ilist_node<ArchiveMember> {
/// @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

View File

@ -16,6 +16,7 @@
#include "Archive.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/PathV1.h"
#include "llvm/Support/TimeValue.h"
#include <cstring>

View File

@ -175,13 +175,13 @@ Archive::parseMemberHeader(const char*& At, const char* End, std::string* error)
// 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;

View File

@ -172,7 +172,11 @@ bool Archive::addFileBefore(StringRef filePath, iterator where,
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;

View File

@ -19,6 +19,7 @@
#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"