From a5cb382018dade88d20f385ba7557f80902b52c3 Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 8 Nov 2025 09:45:48 +0100 Subject: driver: add -I commandline option --- main.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index 575cf46..eec8722 100644 --- a/main.c +++ b/main.c @@ -9,6 +9,15 @@ struct option ccopt; struct inclpaths *cinclpaths; +static void +addinclpath(const char *path) +{ + struct inclpaths *p = alloc(&globarena, sizeof *cinclpaths, 0); + p->next = cinclpaths; + p->path = path; + cinclpaths = p; +} + /* parse an argument of the form 'opt=abcd' * e.g. arg="foo=bar123"; opt="foo"; returns "bar123" */ static const char * @@ -151,6 +160,10 @@ optparse(char **args) task.outft = OFTobj; } else if (!strcmp(arg, "E")) { task.outft = OFTc; + } else if (*arg == 'I') { + const char *p = arg[1] ? arg+1 : *++args; + if (!p) fatal(NULL, "missing path after `-I`"); + else addinclpath(p); } else Bad: warn(NULL, "invalid option: %'s", arg-1); } @@ -390,12 +403,8 @@ sysinclpaths(void) "/usr/local/include", "/usr/include" }; - for (int i = 0; i < arraylength(paths); ++i) { - struct inclpaths *p = alloc(&globarena, sizeof *cinclpaths, 0); - p->next = cinclpaths; - p->path = paths[i]; - cinclpaths = p; - } + for (int i = 0; i < arraylength(paths); ++i) + addinclpath(paths[i]); } int -- cgit v1.2.3