Remove last use of PathV1.h from Archive.h
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 19 Jun 2013 21:13:59 +0000 (21:13 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 19 Jun 2013 21:13:59 +0000 (21:13 +0000)
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

tools/llvm-ar/Archive.cpp
tools/llvm-ar/Archive.h
tools/llvm-ar/ArchiveInternals.h
tools/llvm-ar/ArchiveReader.cpp
tools/llvm-ar/ArchiveWriter.cpp
tools/llvm-ar/llvm-ar.cpp

index 70fddcfe4d2450f6264c13e0a7ab978e49040269..c733652e58ab7aa00b9502cc9fcc4cadbb8007bf 100644 (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.
index 2357b13d6300c1ad187eda19943f765e6b48198e..232a5c23d2a488493dbad0c8495125235a7af226 100644 (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
index e906d7a059993fb2abd61f3ddfa8a36a88b9b819..7b73312a8faf962dfdbac71636963033f85b82f5 100644 (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>
 
index 25f3c2fe7fff0f837c91fa7bd750887a748523e4..7b363a11dc12f763a3e163da596b7f116ac66e5a 100644 (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;
 
index 7b5574e0a2552d6b986d55a3dc30fa0fa49a0c6d..5b74b26110263e4218281d964cdd7da15d3151a7 100644 (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;
index 03bb36b116ef4397cd92d728cf5576817c99eb97..85f3517b58ad7f416c85d329a1c961bde0ebe66b 100644 (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"