mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-03 17:24:24 +00:00
Fix a FIXME about the format and add a test.
While at it, use strftime on Unix too and use the thread safe versions of localtime. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186090 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
11eb51e239
commit
71857ccdb8
@ -22,18 +22,13 @@ namespace llvm {
|
|||||||
using namespace sys;
|
using namespace sys;
|
||||||
|
|
||||||
std::string TimeValue::str() const {
|
std::string TimeValue::str() const {
|
||||||
char buffer[32];
|
time_t OurTime = time_t(this->toEpochTime());
|
||||||
|
struct tm Storage;
|
||||||
time_t ourTime = time_t(this->toEpochTime());
|
struct tm *LT = ::localtime_r(&OurTime, &Storage);
|
||||||
#ifdef __hpux
|
assert(LT);
|
||||||
// note that the following line needs -D_REENTRANT on HP-UX to be picked up
|
char Buffer[25];
|
||||||
asctime_r(localtime(&ourTime), buffer);
|
strftime(Buffer, 25, "%b %e %H:%M %Y", LT);
|
||||||
#else
|
return std::string(Buffer);
|
||||||
::asctime_r(::localtime(&ourTime), buffer);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
std::string result(buffer);
|
|
||||||
return result.substr(0,24);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeValue TimeValue::now() {
|
TimeValue TimeValue::now() {
|
||||||
|
@ -31,20 +31,15 @@ TimeValue TimeValue::now() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string TimeValue::str() const {
|
std::string TimeValue::str() const {
|
||||||
#ifdef __MINGW32__
|
struct tm LT;
|
||||||
// This ban may be lifted by either:
|
__time64_t OurTime = this->toEpochTime();
|
||||||
// (i) a future MinGW version other than 1.0 inherents the __time64_t type, or
|
errno_t Error = ::_localtime64_s(<, &OurTime);
|
||||||
// (ii) configure tests for either the time_t or __time64_t type.
|
assert(!Error);
|
||||||
time_t ourTime = time_t(this->toEpochTime());
|
|
||||||
struct tm *lt = ::localtime(&ourTime);
|
|
||||||
#else
|
|
||||||
__time64_t ourTime = this->toEpochTime();
|
|
||||||
struct tm *lt = ::_localtime64(&ourTime);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char buffer[25];
|
char Buffer[25];
|
||||||
strftime(buffer, 25, "%a %b %d %H:%M:%S %Y", lt);
|
// FIXME: the windows version of strftime doesn't support %e
|
||||||
return std::string(buffer);
|
strftime(Buffer, 25, "%b %d %H:%M %Y", <);
|
||||||
|
return std::string(Buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,16 +1,31 @@
|
|||||||
|
REQUIRES: shell
|
||||||
|
|
||||||
|
RUN: export TZ=GMT
|
||||||
|
|
||||||
Test reading an archive created by gnu ar
|
Test reading an archive created by gnu ar
|
||||||
RUN: llvm-ar t %p/Inputs/GNU.a | FileCheck %s
|
RUN: llvm-ar tv %p/Inputs/GNU.a | FileCheck %s --check-prefix=GNU -strict-whitespace
|
||||||
|
|
||||||
|
GNU: rw-r--r-- 500/500 8 Nov 19 02:57 2004 evenlen
|
||||||
|
GNU-NEXT: rw-r--r-- 500/500 7 Nov 19 02:57 2004 oddlen
|
||||||
|
GNU-NEXT: rwxr-xr-x 500/500 1465 Nov 19 03:01 2004 very_long_bytecode_file_name.bc
|
||||||
|
GNU-NEXT: rw-r--r-- 500/500 2280 Nov 19 03:04 2004 IsNAN.o
|
||||||
|
|
||||||
|
|
||||||
Test reading an archive createdy by Mac OS X ar
|
Test reading an archive createdy by Mac OS X ar
|
||||||
RUN: llvm-ar t %p/Inputs/MacOSX.a | FileCheck %s
|
RUN: llvm-ar tv %p/Inputs/MacOSX.a | FileCheck %s --check-prefix=OSX -strict-whitespace
|
||||||
|
|
||||||
|
OSX: rw-r--r-- 501/501 8 Nov 19 02:57 2004 evenlen
|
||||||
|
OSX-NEXT: rw-r--r-- 501/501 8 Nov 19 02:57 2004 oddlen
|
||||||
|
OSX-NEXT: rw-r--r-- 502/502 1465 Feb 4 06:59 2010 very_long_bytecode_file_name.bc
|
||||||
|
OSX-NEXT: rw-r--r-- 501/501 2280 Nov 19 04:32 2004 IsNAN.o
|
||||||
|
|
||||||
Test reading an archive created on Solaris by /usr/ccs/bin/ar
|
Test reading an archive created on Solaris by /usr/ccs/bin/ar
|
||||||
RUN: llvm-ar t %p/Inputs/SVR4.a | FileCheck %s
|
RUN: llvm-ar tv %p/Inputs/SVR4.a | FileCheck %s -strict-whitespace
|
||||||
|
|
||||||
Test reading an archive created on Solaris by /usr/xpg4/bin/ar
|
Test reading an archive created on Solaris by /usr/xpg4/bin/ar
|
||||||
RUN: llvm-ar t %p/Inputs/xpg4.a | FileCheck %s
|
RUN: llvm-ar tv %p/Inputs/xpg4.a | FileCheck %s -strict-whitespace
|
||||||
|
|
||||||
CHECK: evenlen
|
CHECK: rw-r--r-- 1002/102 8 Nov 19 03:24 2004 evenlen
|
||||||
CHECK-NEXT: oddlen
|
CHECK-NEXT: rw-r--r-- 1002/102 7 Nov 19 03:24 2004 oddlen
|
||||||
CHECK-NEXT: very_long_bytecode_file_name.bc
|
CHECK-NEXT: rwxr-xr-x 1002/102 1465 Nov 19 03:24 2004 very_long_bytecode_file_name.bc
|
||||||
CHECK-NEXT: IsNAN.o
|
CHECK-NEXT: rw-r--r-- 1002/102 2280 Nov 19 03:24 2004 IsNAN.o
|
||||||
|
@ -325,17 +325,15 @@ doDisplayTable(std::string* ErrMsg) {
|
|||||||
if (Paths.empty() ||
|
if (Paths.empty() ||
|
||||||
(std::find(Paths.begin(), Paths.end(), I->getPath()) != Paths.end())) {
|
(std::find(Paths.begin(), Paths.end(), I->getPath()) != Paths.end())) {
|
||||||
if (Verbose) {
|
if (Verbose) {
|
||||||
// FIXME: Output should be this format:
|
|
||||||
// Zrw-r--r-- 500/ 500 525 Nov 8 17:42 2004 Makefile
|
|
||||||
outs() << " ";
|
|
||||||
unsigned mode = I->getMode();
|
unsigned mode = I->getMode();
|
||||||
printMode((mode >> 6) & 007);
|
printMode((mode >> 6) & 007);
|
||||||
printMode((mode >> 3) & 007);
|
printMode((mode >> 3) & 007);
|
||||||
printMode(mode & 007);
|
printMode(mode & 007);
|
||||||
outs() << " " << format("%4u", I->getUser());
|
outs() << ' ' << I->getUser();
|
||||||
outs() << "/" << format("%4u", I->getGroup());
|
outs() << "/" << I->getGroup();
|
||||||
outs() << " " << format("%8u", I->getSize());
|
outs() << ' ' << format("%6u", I->getSize());
|
||||||
outs() << " " << format("%20s", I->getModTime().str().substr(4).c_str());
|
sys::TimeValue ModTime = I->getModTime();
|
||||||
|
outs() << " " << ModTime.str();
|
||||||
outs() << " " << I->getPath().str() << "\n";
|
outs() << " " << I->getPath().str() << "\n";
|
||||||
} else {
|
} else {
|
||||||
outs() << I->getPath().str() << "\n";
|
outs() << I->getPath().str() << "\n";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user