Fix issue #123 - specify text/binary mode for open files

This commit is contained in:
Trevor Bentley
2017-09-26 14:55:02 +02:00
parent 79464a3d3e
commit 5291bc4a63
3 changed files with 72 additions and 23 deletions
+22 -3
View File
@@ -46,12 +46,31 @@
#include "cmdline.h"
#include "util.h"
FILE *open_file(const char *file_name, int mode) {
FILE *open_file(const char *file_name, enum file_mode mode) {
FILE *file;
const char *mod;
if(!strcmp(file_name, "-")) {
file = mode == INPUT ? stdin : stdout;
file = (mode == INPUT_TEXT || mode == INPUT_BIN) ? stdin : stdout;
} else {
file = fopen(file_name, mode == INPUT ? "r" : "w");
switch (mode) {
case INPUT_TEXT:
mod = "r";
break;
case INPUT_BIN:
mod = "rb";
break;
case OUTPUT_TEXT:
mod = "w";
break;
case OUTPUT_BIN:
mod = "wb";
break;
default:
fprintf(stderr, "Invalid file mode.\n");
return NULL;
break;
}
file = fopen(file_name, mod);
if(!file) {
fprintf(stderr, "Failed opening '%s'!\n", file_name);
return NULL;