/*
* Test that libcdecl can parse its own output.
- * Copyright © 2012, 2020, 2022-2023 Nick Bowler
+ * Copyright © 2012, 2020, 2022-2024 Nick Bowler
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include <errno.h>
#include <stdbool.h>
#include <getopt.h>
-#include <cdecl.h>
-#include "test.h"
+
+#include "cdecl.h"
#define PROGNAME "crossparse"
-static const char *progname = PROGNAME;
+#include "test.h"
+
static const char sopts[] = "f:ECVH";
static const struct option lopts[] = {
{ "cdecl", 0, NULL, 'C' },
enum {
MODE_CDECL,
- MODE_ENGLISH,
+ MODE_ENGLISH
};
typedef struct cdecl *parse_func(const char *);
decl = parse(str);
if (!decl) {
- fprintf(stderr, "%s: %s: failed to parse input: %s\n",
- progname, parse_name, cdecl_get_error()->str);
+ print_error("%s: failed to parse input: %s", parse_name,
+ cdecl_get_error()->str);
goto err;
}
len = render(NULL, 0, decl);
buf = malloc_nofail(len+1);
if (render(buf, len+1, decl) != len) {
- fprintf(stderr, "%s: %s: inconsistent length returned\n",
- progname, render_name);
+ print_error("%s: inconsistent length returned", render_name);
goto err;
}
cdecl_free(decl);
free(buf);
- fprintf(stderr, "%s: the failed input was: %s\n", progname, str);
+ print_error("the failed input was: %s", str);
return NULL;
}
#define rerender(str, p, r) (rerender(str, #p, p, #r, r))
free(buf3);
if (!ret) {
- fprintf(stderr, "%s: failed cross-parse check of: %s\n",
- progname, str);
+ print_error("failed cross-parse check of: %s", str);
}
return ret;
{
int opt, mode = MODE_CDECL;
int ret = EXIT_SUCCESS;
+ int i;
const char *filename = NULL;
FILE *infile = NULL;
if (filename) {
infile = fopen(filename, "r");
if (!infile) {
- fprintf(stderr, "%s: %s: %s\n", progname,
- filename, strerror(errno));
+ print_error("%s: %s", filename,
+ strerror(errno));
return EXIT_FAILURE;
}
}
free(line);
fclose(infile);
} else if (argv[optind]) {
- for (int i = optind; i < argc; i++) {
+ for (i = optind; i < argc; i++) {
if (!test_crossparse(argv[i], mode))
ret = EXIT_FAILURE;
}