diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2009-11-12 22:48:15 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2009-11-12 22:48:15 -0800 |
commit | 673d5f3b84d276fb29233d6a3f485ccfe330be13 (patch) | |
tree | b1447ce861394a8b5873589ecb03659f2c5506fe /txr.c | |
parent | 8367c03ef07473cff4f1b6f0645e1ce9ae17c94c (diff) | |
download | txr-673d5f3b84d276fb29233d6a3f485ccfe330be13.tar.gz txr-673d5f3b84d276fb29233d6a3f485ccfe330be13.tar.bz2 txr-673d5f3b84d276fb29233d6a3f485ccfe330be13.zip |
Continuing wchar_t conversion. Making sure all stdio calls
use wide character functions so that there is no illicit
mixing. (But the goal is to replace this usage with txr streams).
Diffstat (limited to 'txr.c')
-rw-r--r-- | txr.c | 123 |
1 files changed, 62 insertions, 61 deletions
@@ -54,66 +54,66 @@ obj_t *spec_file_str; */ void *oom_realloc_handler(void *old, size_t size) { - fprintf(stderr, "%ls: out of memory\n", progname); - puts("false"); + fwprintf(stderr, L"%ls: out of memory\n", progname); + fputws(L"false", stderr); abort(); } void help(void) { - const char *text = -"\n" -"txr version %ls\n" -"\n" -"copyright 2009, Kaz Kylheku <kkylheku@gmail.com>\n" -"\n" -"usage:\n" -"\n" -" %ls [ options ] query-file { data-file }*\n" -"\n" -"The query-file or data-file arguments may be specified as -, in which case\n" -"standard input is used. All data-file arguments which begin with a !\n" -"character are treated as command pipes. Those which begin with a $\n" -"are interpreted as directories to read. Leading arguments which begin\n" -"with a - followed by one or more characters, and which are not arguments to\n" -"options are interpreted as options. The -- option indicates the end of the\n" -"options.\n" -"\n" -"If no data-file arguments sare supplied, then the query itself must open a\n" -"a data source prior to attempting to make any pattern match, or it will\n" -"simply fail due to a match which has run out of data.\n" -"\n" -"options:\n" -"\n" -"-Dvar=value Pre-define variable var, with the given value.\n" -" A list value can be specified using commas.\n" -"-Dvar Predefine variable var, with empty string value.\n" -"-q Quiet: don't report errors during query matching.\n" -"-v Verbose: extra logging from matcher.\n" -"-b Don't dump list of bindings.\n" -"-a num Generate array variables up to num-dimensions.\n" -" Default is 1. Additional dimensions are fudged\n" -" by generating numeric suffixes\n" -"-c query-text The query is read from the query-text argument\n" -" itself. The query-file argument is omitted in\n" -" this case; the first argument is a data file.\n" -"-f query-file Specify the query-file as an option argument.\n" -" option, instead of the query-file argument.\n" -" This allows #! scripts to pass options through\n" -" to the utility.\n" -"--help You already know!\n" -"--version Display program version\n" -"\n" -"Options that take no argument can be combined. The -q and -v options\n" -"are mutually exclusive; the right-most one dominates.\n" -"\n" + const wchar_t *text = +L"\n" +L"txr version %ls\n" +L"\n" +L"copyright 2009, Kaz Kylheku <kkylheku@gmail.com>\n" +L"\n" +L"usage:\n" +L"\n" +L" %ls [ options ] query-file { data-file }*\n" +L"\n" +L"The query-file or data-file arguments may be specified as -, in which case\n" +L"standard input is used. All data-file arguments which begin with a !\n" +L"character are treated as command pipes. Those which begin with a $\n" +L"are interpreted as directories to read. Leading arguments which begin\n" +L"with a - followed by one or more characters, and which are not arguments to\n" +L"options are interpreted as options. The -- option indicates the end of the\n" +L"options.\n" +L"\n" +L"If no data-file arguments sare supplied, then the query itself must open a\n" +L"a data source prior to attempting to make any pattern match, or it will\n" +L"simply fail due to a match which has run out of data.\n" +L"\n" +L"options:\n" +L"\n" +L"-Dvar=value Pre-define variable var, with the given value.\n" +L" A list value can be specified using commas.\n" +L"-Dvar Predefine variable var, with empty string value.\n" +L"-q Quiet: don't report errors during query matching.\n" +L"-v Verbose: extra logging from matcher.\n" +L"-b Don't dump list of bindings.\n" +L"-a num Generate array variables up to num-dimensions.\n" +L" Default is 1. Additional dimensions are fudged\n" +L" by generating numeric suffixes\n" +L"-c query-text The query is read from the query-text argument\n" +L" itself. The query-file argument is omitted in\n" +L" this case; the first argument is a data file.\n" +L"-f query-file Specify the query-file as an option argument.\n" +L" option, instead of the query-file argument.\n" +L" This allows #! scripts to pass options through\n" +L" to the utility.\n" +L"--help You already know!\n" +L"--version Display program version\n" +L"\n" +L"Options that take no argument can be combined. The -q and -v options\n" +L"are mutually exclusive; the right-most one dominates.\n" +L"\n" ; - fprintf(stdout, text, version, progname); + fwprintf(stdout, text, version, progname); } void hint(void) { - fprintf(stderr, "%ls: incorrect arguments: try --help\n", progname); + fwprintf(stderr, L"%ls: incorrect arguments: try --help\n", progname); } obj_t *remove_hash_bang_line(obj_t *spec) @@ -215,7 +215,7 @@ static int txr_main(int argc, char **argv) } if (!strcmp(*argv, "--version")) { - printf("%ls: version %ls\n", progname, version); + wprintf(L"%ls: version %ls\n", progname, version); return 0; } @@ -230,7 +230,7 @@ static int txr_main(int argc, char **argv) char opt = (*argv)[1]; if (argc == 1) { - fprintf(stderr, "%ls: option %c needs argument\n", progname, opt); + fwprintf(stderr, L"%ls: option %c needs argument\n", progname, opt); return EXIT_FAILURE; } @@ -241,8 +241,8 @@ static int txr_main(int argc, char **argv) case 'a': val = strtol(*argv, &errp, 10); if (*errp != 0) { - fprintf(stderr, "%ls: option %c needs numeric argument, not %s\n", - progname, opt, *argv); + fwprintf(stderr, L"%ls: option %c needs numeric argument, not %s\n", + progname, opt, *argv); return EXIT_FAILURE; } @@ -282,14 +282,15 @@ static int txr_main(int argc, char **argv) case 'a': case 'c': case 'D': - fprintf(stderr, "%ls: option -%c does not clump\n", progname, *popt); + fwprintf(stderr, L"%ls: option -%c does not clump\n", + progname, *popt); return EXIT_FAILURE; case '-': - fprintf(stderr, "%ls: unrecognized long option: --%s\n", - progname, popt + 1); + fwprintf(stderr, L"%ls: unrecognized long option: --%s\n", + progname, popt + 1); return EXIT_FAILURE; default: - fprintf(stderr, "%ls: unrecognized option: %c\n", progname, *popt); + fwprintf(stderr, L"%ls: unrecognized option: %c\n", progname, *popt); return EXIT_FAILURE; } } @@ -299,7 +300,7 @@ static int txr_main(int argc, char **argv) } if (specstring && spec_file_str) { - fprintf(stderr, "%ls: cannot specify both -f and -c\n", progname); + fwprintf(stderr, L"%ls: cannot specify both -f and -c\n", progname); return EXIT_FAILURE; } @@ -311,7 +312,7 @@ static int txr_main(int argc, char **argv) if (wcscmp(c_str(spec_file_str), L"-") != 0) { FILE *in = w_fopen(c_str(spec_file_str), L"r"); if (in == 0) - uw_throwcf(file_error, "unable to open %s", c_str(spec_file_str)); + uw_throwcf(file_error, L"unable to open %ls", c_str(spec_file_str)); yyin_stream = make_stdio_stream(in, spec_file_str, t, nil); } else { spec_file = L"stdin"; @@ -325,7 +326,7 @@ static int txr_main(int argc, char **argv) if (strcmp(*argv, "-") != 0) { FILE *in = fopen(*argv, "r"); if (in == 0) - uw_throwcf(file_error, "unable to open %s", *argv); + uw_throwcf(file_error, L"unable to open %s", *argv); yyin_stream = make_stdio_stream(in, string_utf8(*argv), t, nil); spec_file = utf8_dup_from(*argv); } else { |