+ 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"))