aboutsummaryrefslogtreecommitdiff
path: root/tools/add-header.c
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2025-07-04 00:55:59 +0200
committerXavier Del Campo Romero <xavi92@disroot.org>2025-07-06 22:21:50 +0200
commit892ecce78dec37a1b2701611dd72986442cd094d (patch)
treebbd7fb0a0229795bf52d0b8a9ff9b06251363a67 /tools/add-header.c
parent99554cc243c4b2ec290639a04ebc2f189890d6dd (diff)
downloadwnix-892ecce78dec37a1b2701611dd72986442cd094d.tar.gz
Import project skeleton from rts
https://gitea.privatedns.org/xavi/rts
Diffstat (limited to 'tools/add-header.c')
-rw-r--r--tools/add-header.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/tools/add-header.c b/tools/add-header.c
new file mode 100644
index 0000000..75f7458
--- /dev/null
+++ b/tools/add-header.c
@@ -0,0 +1,67 @@
+#include <errno.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main(int argc, char **const argv)
+{
+ int ret = EXIT_FAILURE;
+ FILE *in = NULL, *out = NULL;
+
+ if (argc < 3)
+ {
+ fprintf(stderr, "%s [arg ...] <in-file> <out-file>\n", *argv);
+ goto end;
+ }
+
+ const char *const in_path = argv[argc - 2],
+ *const out_path = argv[argc - 1];
+
+ if (!(out = fopen(out_path, "wb")))
+ {
+ fprintf(stderr, "could not open %s: %s\n", out_path, strerror(errno));
+ goto end;
+ }
+ else if (!(in = fopen(in_path, "rb")))
+ {
+ fprintf(stderr, "could not open %s: %s\n", in_path, strerror(errno));
+ goto end;
+ }
+
+ for (int i = 1; i < argc - 2; i++)
+ {
+ if (fprintf(out, "%s", argv[i]) < 0
+ || putc('\0', out) == EOF
+ || ferror(out))
+ {
+ fprintf(stderr, "failed writing to %s\n", out_path);
+ goto end;
+ }
+ }
+
+ while (!feof(in))
+ {
+ char c;
+
+ if ((!fread(&c, sizeof c, 1, in)
+ || !fwrite(&c, sizeof c, 1, out))
+ && (ferror(in) || ferror(out)))
+ {
+ fprintf(stderr, "ferror(%s)=%d, ferror(%s)=%d\n",
+ in_path, ferror(in), out_path, ferror(out));
+ goto end;
+ }
+ }
+
+ ret = EXIT_SUCCESS;
+
+end:
+ if (out)
+ fclose(out);
+
+ if (in)
+ fclose(in);
+
+ return ret;
+}