commit - afda2dda15548492a0e1f66f7b9917f963623ce3
commit + 34b4388f7fddbfe1af5164983ff624e075537a31
blob - 1900f6e86054d439679f189eb54ca84865cbd42b
blob + 7a339054b7fe65fb41b222274b2b6c11198c7658
--- Makefile.am
+++ Makefile.am
pages.c: pagebundler $(srcdir)/pages.h ${PAGES}
echo > $@
echo "#include \"pages.h\"" >> $@
- ./pagebundler -f $(srcdir)/pages/about_about.gmi -v about_about >> $@
- ./pagebundler -f $(srcdir)/pages/about_blank.gmi -v about_blank >> $@
- ./pagebundler -f $(srcdir)/pages/about_crash.gmi -v about_crash >> $@
- ./pagebundler -f $(srcdir)/pages/about_help.gmi -v about_help >> $@
- ./pagebundler -f $(srcdir)/pages/about_license.gmi -v about_license >> $@
- ./pagebundler -f $(srcdir)/pages/about_new.gmi -v about_new >> $@
- ./pagebundler -f $(srcdir)/pages/bookmarks.gmi -v bookmarks >> $@
+ ./pagebundler $(srcdir)/pages/about_about.gmi >> $@
+ ./pagebundler $(srcdir)/pages/about_blank.gmi >> $@
+ ./pagebundler $(srcdir)/pages/about_crash.gmi >> $@
+ ./pagebundler $(srcdir)/pages/about_help.gmi >> $@
+ ./pagebundler $(srcdir)/pages/about_license.gmi >> $@
+ ./pagebundler $(srcdir)/pages/about_new.gmi >> $@
+ ./pagebundler $(srcdir)/pages/bookmarks.gmi >> $@
blob - 0cf350bcd32a8adc7715bd44cc6120df62c55ef4
blob + c6213eb152fc7ca12894974ace9ea49632edc6fb
--- pagebundler.c
+++ pagebundler.c
/*
- * Copyright (c) 2021 Omar Polo <op@omarpolo.com>
+ * Copyright (c) 2022, 2021 Omar Polo <op@omarpolo.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* be compiled. The generated code provides a variable that holds the
* content of the original file and a _len variable with the size.
*
- * Usage: pagebundler -f file -v varname > outfile
+ * Usage: pagebundler file > outfile
*/
#include <errno.h>
+#include <limits.h>
#include <stdint.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-const char *file;
-const char *varname;
+static void
+setfname(const char *fname, char *buf, size_t siz)
+{
+ const char *c, *d;
+ size_t len;
+ if ((c = strrchr(fname, '/')) != NULL)
+ c++;
+ else
+ c = fname;
+
+ if ((d = strrchr(fname, '.')) == NULL || c > d)
+ d = strchr(fname, '\0');
+
+ len = d - c;
+ if (len >= siz) {
+ fprintf(stderr, "file name too long: %s\n", fname);
+ exit(1);
+ }
+
+ memcpy(buf, c, len);
+ buf[len] = '\0';
+}
+
int
main(int argc, char **argv)
{
size_t len, r, i;
- int ch, did;
+ int did;
FILE *f;
uint8_t buf[BUFSIZ];
+ char varname[PATH_MAX];
- while ((ch = getopt(argc, argv, "f:v:")) != -1) {
- switch (ch) {
- case 'f':
- file = optarg;
- break;
- case 'v':
- varname = optarg;
- break;
- default:
- fprintf(stderr, "%s: wrong usage\n",
- argv[0]);
- return 1;
- }
- }
-
- if (file == NULL || varname == NULL) {
- fprintf(stderr, "%s: wrong usage\n", argv[0]);
+ if (argc != 2) {
+ fprintf(stderr, "usage: %s file\n", *argv);
return 1;
}
- if ((f = fopen(file, "r")) == NULL) {
+ setfname(argv[1], varname, sizeof(varname));
+
+ if ((f = fopen(argv[1], "r")) == NULL) {
fprintf(stderr, "%s: can't open %s: %s",
- argv[0], file, strerror(errno));
+ argv[0], argv[1], strerror(errno));
return 1;
}