aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-07-31 12:15:20 +0100
committerGinger Bill <bill@gingerbill.org>2017-07-31 12:15:20 +0100
commit4d14b3bcb482aaaa26bcaedbbaadb055f8bf8c41 (patch)
tree64bb1ce3d8159aedfb4a379c13486ae35b681b1a /src
parent9f4f5f9346455a322f5e2fbea022fae0406285b3 (diff)
Update `remove_temp_files`
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 4a532dcde..24878974d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -413,13 +413,25 @@ void show_timings(Checker *c, Timings *t) {
void remove_temp_files(String output_base) {
if (build_context.keep_temp_files) return;
- gb_file_delete(gb_bprintf("%.*s.ll", LIT(output_base)));
- gb_file_delete(gb_bprintf("%.*s.bc", LIT(output_base)));
+ Array<u8> data = {};
+ array_init_count(&data, heap_allocator(), output_base.len + 10);
+ defer (array_free(&data));
+
+ isize n = output_base.len;
+ gb_memcopy(data.data, output_base.text, n);
+#define EXT_DELETE(s) do { \
+ gb_memcopy(data.data+n, s, gb_size_of(s)); \
+ gb_file_delete(cast(char *)data.data); \
+ } while (0)
+ EXT_DELETE(".ll");
+ EXT_DELETE(".bc");
#if defined(GB_SYSTEM_WINDOWS)
- gb_file_delete(gb_bprintf("%.*s.obj", LIT(output_base)));
+ EXT_DELETE(".obj");
#else
- gb_file_delete(gb_bprintf("%.*s.o", LIT(output_base)));
+ EXT_DELETE(".o");
#endif
+
+#undef EXT_DELETE
}
int main(int arg_count, char **arg_ptr) {