mirror of
https://github.com/pevans/erc-c.git
synced 2024-12-26 10:29:34 +00:00
Change to option_open_file(), allow any file mode
This commit is contained in:
parent
1235197418
commit
267171ea4a
@ -18,7 +18,7 @@ extern bool option_flag(int);
|
|||||||
extern FILE *option_get_input(int);
|
extern FILE *option_get_input(int);
|
||||||
extern const char *option_get_error();
|
extern const char *option_get_error();
|
||||||
extern int option_parse(int, char **);
|
extern int option_parse(int, char **);
|
||||||
extern int option_read_file(FILE **, const char *);
|
extern int option_open_file(FILE **, const char *, const char *);
|
||||||
extern int option_set_size(const char *);
|
extern int option_set_size(const char *);
|
||||||
extern void option_print_help();
|
extern void option_print_help();
|
||||||
extern void option_set_error(const char *);
|
extern void option_set_error(const char *);
|
||||||
|
16
src/option.c
16
src/option.c
@ -123,7 +123,7 @@ option_parse(int argc, char **argv)
|
|||||||
switch (opt) {
|
switch (opt) {
|
||||||
case DISASSEMBLE:
|
case DISASSEMBLE:
|
||||||
flags |= OPTION_DISASSEMBLE;
|
flags |= OPTION_DISASSEMBLE;
|
||||||
if (!option_read_file(&disasm_log, optarg)) {
|
if (!option_open_file(&disasm_log, optarg, "w")) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ option_parse(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case DISK1:
|
case DISK1:
|
||||||
if (!option_read_file(&input1, optarg)) {
|
if (!option_open_file(&input1, optarg, "r+")) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ option_parse(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case DISK2:
|
case DISK2:
|
||||||
if (!option_read_file(&input2, optarg)) {
|
if (!option_open_file(&input2, optarg, "r+")) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,21 +174,21 @@ option_parse(int argc, char **argv)
|
|||||||
* 0 if not.
|
* 0 if not.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
option_read_file(FILE **stream, const char *file)
|
option_open_file(FILE **stream, const char *file, const char *opts)
|
||||||
{
|
{
|
||||||
if (!file) {
|
if (!file) {
|
||||||
snprintf(error_buffer,
|
snprintf(error_buffer,
|
||||||
ERRBUF_SIZE,
|
ERRBUF_SIZE,
|
||||||
"No file given for --diskN\n");
|
"No file given\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
*stream = fopen(file, "r+");
|
*stream = fopen(file, opts);
|
||||||
if (*stream == NULL) {
|
if (*stream == NULL) {
|
||||||
snprintf(error_buffer,
|
snprintf(error_buffer,
|
||||||
ERRBUF_SIZE,
|
ERRBUF_SIZE,
|
||||||
"--diskN: %s",
|
"open file for %s: %s",
|
||||||
strerror(errno));
|
file, strerror(errno));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@ Test(option, read_file)
|
|||||||
FILE *stream_b;
|
FILE *stream_b;
|
||||||
|
|
||||||
// Maybe we should use sterror(ENOENT)?
|
// Maybe we should use sterror(ENOENT)?
|
||||||
cr_assert_eq(option_read_file(&stream_a, bad_file), 0);
|
cr_assert_eq(option_open_file(&stream_a, bad_file, "r"), 0);
|
||||||
cr_assert_str_eq(option_get_error(), "--diskN: No such file or directory");
|
cr_assert_str_eq(option_get_error(), "open file for /tmp/BLEH: No such file or directory");
|
||||||
|
|
||||||
option_set_error("");
|
option_set_error("");
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ Test(option, read_file)
|
|||||||
fwrite(str, sizeof(char), strlen(str), stream_a);
|
fwrite(str, sizeof(char), strlen(str), stream_a);
|
||||||
fclose(stream_a);
|
fclose(stream_a);
|
||||||
|
|
||||||
option_read_file(&stream_b, file);
|
option_open_file(&stream_b, file, "r");
|
||||||
fread(buf, sizeof(char), 255, stream_b);
|
fread(buf, sizeof(char), 255, stream_b);
|
||||||
cr_assert_str_eq(buf, str);
|
cr_assert_str_eq(buf, str);
|
||||||
fclose(stream_b);
|
fclose(stream_b);
|
||||||
|
Loading…
Reference in New Issue
Block a user