Browse Source

Update `remove_temp_files`

Ginger Bill 8 years ago
parent
commit
4d14b3bcb4
1 changed files with 16 additions and 4 deletions
  1. 16 4
      src/main.cpp

+ 16 - 4
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) {