commit 986bbb9253526d29e056ca57ce1ed87fbf65f920
Author: Roberto E. Vargas Caballero <[email protected]>
AuthorDate: Tue Sep 26 20:27:08 2023 +0200
Commit: Roberto E. Vargas Caballero <[email protected]>
CommitDate: Wed Sep 27 07:59:27 2023 +0200
sbase-box: Add -i flag
diff --git a/Makefile b/Makefile
index 307b49d..fa9b735 100644
--- a/Makefile
+++ b/Makefile
@@ -237,14 +237,11 @@ sbase-box: $(BIN)
sbase-box-install: sbase-box
mkdir -p $(DESTDIR)$(PREFIX)/bin
+ mkdir -p $(DESTDIR)$(MANPREFIX)/man1
cp -f sbase-box $(DESTDIR)$(PREFIX)/bin
chmod 755 $(DESTDIR)$(PREFIX)/bin/sbase-box
- for f in $(BIN); do ln -sf sbase-box $(DESTDIR)$(PREFIX)/bin/"$$f"; done
- ln -sf sbase-box $(DESTDIR)$(PREFIX)/bin/[
- mv -f $(DESTDIR)$(PREFIX)/bin/xinstall $(DESTDIR)$(PREFIX)/bin/install
- mkdir -p $(DESTDIR)$(MANPREFIX)/man1
- for m in $(MAN); do sed "s/^\.Os sbase/.Os sbase $(VERSION)/g" < "$$m"
> $(DESTDIR)$(MANPREFIX)/man1/"$$m"; done
- cd $(DESTDIR)$(MANPREFIX)/man1 && chmod 644 $(MAN)
+ $(DESTDIR)$(PREFIX)/bin/sbase-box -i $(DESTDIR)$(PREFIX)/bin/
+ cp -f $(MAN) $(DESTDIR)$(MANPREFIX)/man1/
mv -f $(DESTDIR)$(MANPREFIX)/man1/xinstall.1
$(DESTDIR)$(MANPREFIX)/man1/install.1
sbase-box-uninstall: uninstall
diff --git a/scripts/mkbox b/scripts/mkbox
index 92f428f..b9e9bb0 100755
--- a/scripts/mkbox
+++ b/scripts/mkbox
@@ -8,7 +8,10 @@ mkdir -p build
cp *.h build
cat > build/sbase-box.c <<EOF
+#include <unistd.h>
+
#include <libgen.h>
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -38,6 +41,35 @@ done)
{NULL},
};
+static void
+install(char *path)
+{
+ int r;
+ struct cmd *bp;
+ char fname[FILENAME_MAX];
+
+ if (path == NULL) {
+ fputs("sbase-box [-i path] [command]\n", stderr);
+ exit(1);
+ }
+
+ for (bp = cmds; bp->name; ++bp) {
+ r = snprintf(fname, sizeof(fname), "%s/%s", path, bp->name);
+ if (r < 0 || r >= sizeof(fname)) {
+ fprintf(stderr,
+ "sbase-box: destination path truncated for
'%s'\n",
+ bp->name);
+ exit(1);
+ }
+ if (symlink("sbase-box", fname) < 0) {
+ fprintf(stderr,
+ "sbase-box: %s: %s\n",
+ bp->name, strerror(errno));
+ exit(1);
+ }
+ }
+}
+
int
main(int argc, char *argv[])
{
@@ -46,6 +78,10 @@ main(int argc, char *argv[])
if(!strcmp(s,"sbase-box")) {
argc--; argv++;
+ if (strcmp(argv[0], "-i") == 0) {
+ install(argv[1]);
+ exit(0);
+ }
s = basename(argv[0]);
}