42 static inline void delete_file(const char* filename) {
43 if (!file_exists(filename)) {
44 return;
45 }
46 int ret = remove(filename);
47 EXPECT_TRUE(ret == 0 || errno == ENOENT) << "failed to remove file '" << filename << "': "
48 << os::strerror(errno) << " (" << errno << ")";
49 }
50
51 static inline void create_directory(const char* name) {
52 assert(!file_exists(name), "can't create directory: %s already exists", name);
53 bool failed;
54 #ifdef _WINDOWS
55 failed = !CreateDirectory(name, NULL);
56 #else
57 failed = mkdir(name, 0777);
58 #endif
59 assert(!failed, "failed to create directory %s", name);
60 }
61
62 static inline void init_log_file(const char* filename, const char* options = "") {
63 LogStreamHandle(Error, logging) stream;
64 bool success = LogConfiguration::parse_log_arguments(filename, "logging=trace", "", options, &stream);
65 guarantee(success, "Failed to initialize log file '%s' with options '%s'", filename, options);
66 log_debug(logging)("%s", LOG_TEST_STRING_LITERAL);
67 success = LogConfiguration::parse_log_arguments(filename, "all=off", "", "", &stream);
68 guarantee(success, "Failed to disable logging to file '%s'", filename);
69 }
70
71 // Read a complete line from fp and return it as a resource allocated string.
72 // Returns NULL on EOF.
73 static inline char* read_line(FILE* fp) {
74 assert(fp != NULL, "invalid fp");
75 int buflen = 512;
76 char* buf = NEW_RESOURCE_ARRAY(char, buflen);
77 long pos = ftell(fp);
78
79 char* ret = fgets(buf, buflen, fp);
80 while (ret != NULL && buf[strlen(buf) - 1] != '\n' && !feof(fp)) {
81 // retry with a larger buffer
|
42 static inline void delete_file(const char* filename) {
43 if (!file_exists(filename)) {
44 return;
45 }
46 int ret = remove(filename);
47 EXPECT_TRUE(ret == 0 || errno == ENOENT) << "failed to remove file '" << filename << "': "
48 << os::strerror(errno) << " (" << errno << ")";
49 }
50
51 static inline void create_directory(const char* name) {
52 assert(!file_exists(name), "can't create directory: %s already exists", name);
53 bool failed;
54 #ifdef _WINDOWS
55 failed = !CreateDirectory(name, NULL);
56 #else
57 failed = mkdir(name, 0777);
58 #endif
59 assert(!failed, "failed to create directory %s", name);
60 }
61
62 static inline void delete_directory(const char* name) {
63 #ifdef _WINDOWS
64 if (!file_exists(name)) {
65 return;
66 }
67 bool failed;
68 failed = !RemoveDirectory(name);
69 EXPECT_FALSE(failed) << "failed to remove directory '" << name << "': "
70 << os::strerror(errno) << " (" << errno << "); LastError = "
71 << GetLastError();
72 #else
73 delete_file(name);
74 #endif
75 }
76
77 static inline void init_log_file(const char* filename, const char* options = "") {
78 LogStreamHandle(Error, logging) stream;
79 bool success = LogConfiguration::parse_log_arguments(filename, "logging=trace", "", options, &stream);
80 guarantee(success, "Failed to initialize log file '%s' with options '%s'", filename, options);
81 log_debug(logging)("%s", LOG_TEST_STRING_LITERAL);
82 success = LogConfiguration::parse_log_arguments(filename, "all=off", "", "", &stream);
83 guarantee(success, "Failed to disable logging to file '%s'", filename);
84 }
85
86 // Read a complete line from fp and return it as a resource allocated string.
87 // Returns NULL on EOF.
88 static inline char* read_line(FILE* fp) {
89 assert(fp != NULL, "invalid fp");
90 int buflen = 512;
91 char* buf = NEW_RESOURCE_ARRAY(char, buflen);
92 long pos = ftell(fp);
93
94 char* ret = fgets(buf, buflen, fp);
95 while (ret != NULL && buf[strlen(buf) - 1] != '\n' && !feof(fp)) {
96 // retry with a larger buffer
|