| 548 | } |
| 549 | |
| 550 | TString GetSystemTempDir() { |
| 551 | #ifdef _win_ |
| 552 | char buffer[1024]; |
| 553 | DWORD size = GetTempPath(1024, buffer); |
| 554 | if (!size) { |
| 555 | ythrow TSystemError() << "failed to get system temporary directory"; |
| 556 | } |
| 557 | return TString(buffer, size); |
| 558 | #else |
| 559 | const char* var = "TMPDIR"; |
| 560 | const char* def = "/tmp"; |
| 561 | const char* r = getenv(var); |
| 562 | const char* result = r ? r : def; |
| 563 | return result[0] == '/' ? result : ResolveDir(result); |
| 564 | #endif |
| 565 | } |
| 566 | |
| 567 | TString ResolveDir(const char* path) { |
| 568 | return ResolvePath(path, true); |