mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Add missing getters. They will be used in llvm-ar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185937 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2012593f18
commit
9941bdd1fe
@ -17,6 +17,7 @@
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/Object/Binary.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
|
||||
namespace llvm {
|
||||
@ -35,6 +36,11 @@ struct ArchiveMemberHeader {
|
||||
|
||||
/// Members are not larger than 4GB.
|
||||
uint32_t getSize() const;
|
||||
|
||||
sys::fs::perms getAccessMode() const;
|
||||
sys::TimeValue getLastModified() const;
|
||||
unsigned getUID() const;
|
||||
unsigned getGID() const;
|
||||
};
|
||||
|
||||
class Archive : public Binary {
|
||||
@ -67,6 +73,14 @@ public:
|
||||
|
||||
error_code getName(StringRef &Result) const;
|
||||
StringRef getRawName() const { return getHeader()->getName(); }
|
||||
sys::TimeValue getLastModified() const {
|
||||
return getHeader()->getLastModified();
|
||||
}
|
||||
unsigned getUID() const { return getHeader()->getUID(); }
|
||||
unsigned getGID() const { return getHeader()->getGID(); }
|
||||
sys::fs::perms getAccessMode() const {
|
||||
return getHeader()->getAccessMode();
|
||||
}
|
||||
/// \return the size of the archive member without the header or padding.
|
||||
uint64_t getSize() const { return Data.size() - StartOfFile; }
|
||||
|
||||
|
@ -61,6 +61,38 @@ uint32_t ArchiveMemberHeader::getSize() const {
|
||||
return Ret;
|
||||
}
|
||||
|
||||
sys::fs::perms ArchiveMemberHeader::getAccessMode() const {
|
||||
unsigned Ret;
|
||||
if (StringRef(AccessMode, sizeof(AccessMode)).rtrim(" ").getAsInteger(8, Ret))
|
||||
llvm_unreachable("Access mode is not an octal number.");
|
||||
return static_cast<sys::fs::perms>(Ret);
|
||||
}
|
||||
|
||||
sys::TimeValue ArchiveMemberHeader::getLastModified() const {
|
||||
unsigned Seconds;
|
||||
if (StringRef(LastModified, sizeof(LastModified)).rtrim(" ")
|
||||
.getAsInteger(10, Seconds))
|
||||
llvm_unreachable("Last modified time not a decimal number.");
|
||||
|
||||
sys::TimeValue Ret;
|
||||
Ret.fromEpochTime(Seconds);
|
||||
return Ret;
|
||||
}
|
||||
|
||||
unsigned ArchiveMemberHeader::getUID() const {
|
||||
unsigned Ret;
|
||||
if (StringRef(UID, sizeof(UID)).rtrim(" ").getAsInteger(10, Ret))
|
||||
llvm_unreachable("UID time not a decimal number.");
|
||||
return Ret;
|
||||
}
|
||||
|
||||
unsigned ArchiveMemberHeader::getGID() const {
|
||||
unsigned Ret;
|
||||
if (StringRef(GID, sizeof(GID)).rtrim(" ").getAsInteger(10, Ret))
|
||||
llvm_unreachable("GID time not a decimal number.");
|
||||
return Ret;
|
||||
}
|
||||
|
||||
static const ArchiveMemberHeader *toHeader(const char *base) {
|
||||
return reinterpret_cast<const ArchiveMemberHeader *>(base);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user