- if (STREQ (argv[0], "@basename"))
- {
- if (argc > 2)
- fail_for_at_directive_too_many_args (argv[0]);
- fputs (last_component (argv[1]), yyout);
- }
- else if (STREQ (argv[0], "@warn")
- || STREQ (argv[0], "@complain")
- || STREQ (argv[0], "@fatal"))
- {
- warnings w = flag (argv[0]);
- switch (argc)
- {
- case 2:
- complain (w, "%s", _(argv[1]));
- break;
- case 3:
- complain (w, _(argv[1]), argv[2]);
- break;
- case 4:
- complain (w, _(argv[1]), argv[2], argv[3]);
- break;
- case 5:
- complain (w, _(argv[1]), argv[2], argv[3], argv[4]);
- break;
- case 6:
- complain (w, _(argv[1]), argv[2], argv[3], argv[4], argv[5]);
- break;
- default:
- fail_for_at_directive_too_many_args (argv[0]);
- break;
- }
- }
- else if (STREQ (argv[0], "@warn_at")
- || STREQ (argv[0], "@complain_at")
- || STREQ (argv[0], "@fatal_at"))
+ (void) out_namep;
+ (void) out_linenop;
+ if (2 < argc)
+ fail_for_at_directive_too_many_args (argv[0]);
+ fputs (last_component (argv[1]), yyout);
+}
+
+static void
+at_complain (int argc, char *argv[], char **out_namep, int *out_linenop)
+{
+ static unsigned indent;
+ warnings w = flag (argv[1]);
+ location loc;
+ location *locp = NULL;
+
+ (void) out_namep;
+ (void) out_linenop;
+
+ if (argc < 4)
+ fail_for_at_directive_too_few_args (argv[0]);
+ if (argv[2] && argv[2][0])