diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2025-05-07 16:40:33 +0200 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2025-05-07 16:40:33 +0200 |
commit | 64d89ed40ba6796d0705ded4b1b1526be8476fc4 (patch) | |
tree | b059f673300fc0ee19bcad5cea5038018f2d4f89 /rules/CC/include_scan.c | |
parent | 52ef2939f35f18bcefcf1c3955ef2b653aa0b0d1 (diff) | |
parent | b909c514866f1f0713edd831d183e4fa1e5c91f5 (diff) | |
download | rules-cc-64d89ed40ba6796d0705ded4b1b1526be8476fc4.tar.gz |
Merge subtree 'rules' into rules-cc
* commit 'b909c514866f1f0713edd831d183e4fa1e5c91f5':
Do not assume out_dirs exist
rules: Do not assume out_dirs exist
Diffstat (limited to 'rules/CC/include_scan.c')
-rw-r--r-- | rules/CC/include_scan.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/rules/CC/include_scan.c b/rules/CC/include_scan.c index ea013ad..8652fc0 100644 --- a/rules/CC/include_scan.c +++ b/rules/CC/include_scan.c @@ -94,11 +94,13 @@ int main(int argc, const char *argv[]) { int retval = 0; char *path = NULL; char *prefix; + char *outdir; size_t prefix_len = 0; + size_t outdir_len = 0; struct IncludeList incl; if (argc < 3) { - fprintf(stderr, "usage: %s PREFIX FILE ARGV...\n", argv[0]); + fprintf(stderr, "usage: %s OUT_DIR ARGV...\n", argv[0]); fprintf(stderr, "Missing arguments\n"); exit(EXIT_FAILURE); } @@ -130,9 +132,20 @@ int main(int argc, const char *argv[]) { strcat(prefix + prefix_len, "/"); prefix_len += 1; parse_paths(&incl, fd[0], "include/", prefix); - free(prefix); close(fd[0]); + /* create output directory "<prefix>/include" */ + outdir_len = prefix_len + 8 /* strlen("include/") */; + outdir = (char *)calloc(outdir_len + 1, sizeof(char)); + strcat(outdir, prefix); + strcat(outdir + prefix_len, "include/"); + if (helper_mkdir_p(outdir, 0755) != 0) { + fprintf(stderr, "Failed to create output directory\n"); + return 1; + } + free(prefix); + free(outdir); + /* wait for child to finish */ while (1) { if (waitpid(pid, &status, 0) == -1) { |