diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-11-30 12:20:22 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2017-11-30 12:20:22 +0530 |
commit | 12238725135f5494e9dc53830f4151d85d25f1eb (patch) | |
tree | 1e2602f4c003dd4a8146b3aae21f2b161097b0be | |
parent | abcace7ee14a28e7f79329a41f5ae49533cbcd0d (diff) | |
download | meson-nirbheek/windows-shebang-parsing.tar.gz |
tests/common/167: Port test interpreter to Windowsnirbheek/windows-shebang-parsing
Which means using fgets, unfortunately.
-rw-r--r-- | test cases/common/167 external program shebang parsing/main.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/test cases/common/167 external program shebang parsing/main.c b/test cases/common/167 external program shebang parsing/main.c index 2ebe169ac..a90206bc7 100644 --- a/test cases/common/167 external program shebang parsing/main.c +++ b/test cases/common/167 external program shebang parsing/main.c @@ -12,6 +12,9 @@ #include <unistd.h> #endif +/* Who cares about stack sizes in test programs anyway */ +#define LINE_LENGTH 4096 + static int intrp_copyfile (char * src, char * dest) { @@ -24,27 +27,18 @@ intrp_copyfile (char * src, char * dest) #endif } -static char* -parser_get_line (FILE * f) +static void +parser_get_line (FILE * f, char line[LINE_LENGTH]) { - ssize_t size; - size_t n = 0; - char *line = NULL; - - size = getline (&line, &n, f); - if (size < 0) { + if (!fgets (line, LINE_LENGTH, f)) fprintf (stderr, "%s\n", strerror (errno)); - free (line); - return NULL; - } - return line; } int main (int argc, char * argv[]) { - FILE *f; - char *line = NULL; + FILE *f = NULL; + char line[LINE_LENGTH]; if (argc != 4) { fprintf (stderr, "Invalid number of arguments: %i\n", argc); @@ -56,24 +50,23 @@ main (int argc, char * argv[]) goto err; } - line = parser_get_line (f); + parser_get_line (f, line); if (!line || line[0] != '#' || line[1] != '!') { fprintf (stderr, "Invalid script\n"); goto err; } - free (line); - line = parser_get_line (f); + parser_get_line (f, line); if (!line || strncmp (line, "copy", 4) != 0) { - fprintf (stderr, "Syntax error\n"); + fprintf (stderr, "Syntax error: %s\n", line); goto err; } return intrp_copyfile (argv[2], argv[3]); err: - free (line); + fclose (f); return 1; } |