summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-06-19 21:13:59 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-06-19 21:13:59 +0000
commitb4900b132eb899671b6ea7ca9f185d493cf0c564 (patch)
tree48a5cc9c237f3e0030944584c0c9876ae91b9fdb /tools
parentf9fd58a44bbc7d9371ce39eb20eec16b0f1f7395 (diff)
downloadllvm-b4900b132eb899671b6ea7ca9f185d493cf0c564.tar.gz
llvm-b4900b132eb899671b6ea7ca9f185d493cf0c564.tar.bz2
llvm-b4900b132eb899671b6ea7ca9f185d493cf0c564.tar.xz
Remove last use of PathV1.h from Archive.h
Store the individual fields we need instead of a sys::FileStatus. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184353 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/llvm-ar/Archive.cpp21
-rw-r--r--tools/llvm-ar/Archive.h26
-rw-r--r--tools/llvm-ar/ArchiveInternals.h1
-rw-r--r--tools/llvm-ar/ArchiveReader.cpp10
-rw-r--r--tools/llvm-ar/ArchiveWriter.cpp6
-rw-r--r--tools/llvm-ar/llvm-ar.cpp1
6 files changed, 39 insertions, 26 deletions
diff --git a/tools/llvm-ar/Archive.cpp b/tools/llvm-ar/Archive.cpp
index 70fddcfe4d..c733652e58 100644
--- a/tools/llvm-ar/Archive.cpp
+++ b/tools/llvm-ar/Archive.cpp
@@ -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.
diff --git a/tools/llvm-ar/Archive.h b/tools/llvm-ar/Archive.h
index 2357b13d63..232a5c23d2 100644
--- a/tools/llvm-ar/Archive.h
+++ b/tools/llvm-ar/Archive.h
@@ -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
diff --git a/tools/llvm-ar/ArchiveInternals.h b/tools/llvm-ar/ArchiveInternals.h
index e906d7a059..7b73312a8f 100644
--- a/tools/llvm-ar/ArchiveInternals.h
+++ b/tools/llvm-ar/ArchiveInternals.h
@@ -16,6 +16,7 @@
#include "Archive.h"
#include "llvm/ADT/StringExtras.h"
+#include "llvm/Support/PathV1.h"
#include "llvm/Support/TimeValue.h"
#include <cstring>
diff --git a/tools/llvm-ar/ArchiveReader.cpp b/tools/llvm-ar/ArchiveReader.cpp
index 25f3c2fe7f..7b363a11dc 100644
--- a/tools/llvm-ar/ArchiveReader.cpp
+++ b/tools/llvm-ar/ArchiveReader.cpp
@@ -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;
diff --git a/tools/llvm-ar/ArchiveWriter.cpp b/tools/llvm-ar/ArchiveWriter.cpp
index 7b5574e0a2..5b74b26110 100644
--- a/tools/llvm-ar/ArchiveWriter.cpp
+++ b/tools/llvm-ar/ArchiveWriter.cpp
@@ -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;
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp
index 03bb36b116..85f3517b58 100644
--- a/tools/llvm-ar/llvm-ar.cpp
+++ b/tools/llvm-ar/llvm-ar.cpp
@@ -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"