tfirst commit, working code - rpgtools - various tools for role-playing games
(HTM) git clone git://src.adamsgaard.dk/rpgtools
(DIR) Log
(DIR) Files
(DIR) Refs
---
(DIR) commit 276fb3f91f74fad0f7a6cf3eb2ead5027f4d5627
(HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Thu, 5 Nov 2020 11:23:46 +0100
first commit, working code
Diffstat:
A Makefile | 71 +++++++++++++++++++++++++++++++
A roll.c | 47 +++++++++++++++++++++++++++++++
2 files changed, 118 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/Makefile b/Makefile
t@@ -0,0 +1,71 @@
+.POSIX:
+
+NAME = rpgtools
+VERSION = 0.1.0
+
+# paths
+PREFIX = /usr/local
+MANPREFIX = ${PREFIX}/share/man
+DOCPREFIX = ${PREFIX}/share/doc/${NAME}
+
+BIN = \
+ roll
+SRC = ${BIN:=.c}
+HDR =
+
+LIB = -lm
+
+RPGTOOLSCFLAGS = ${CFLAGS}
+RPGTOOLSLDFLAGS = ${LDFLAGS} ${LIB}
+RPGTOOLSCPPFLAGS = ${CPPFLAGS}
+
+MAN1 = ${BIN:=.1}
+DOC = \
+ LICENSE\
+ README
+
+all: ${BIN}
+
+${BIN}: ${@:=.o}
+
+OBJ = ${SRC:.c=.o}
+
+.o:
+ ${CC} ${RPGTOOLSLDFLAGS} -o $@ $<
+
+.c.o:
+ ${CC} ${RPGTOOLSCFLAGS} ${RPGTOOLSCPPFLAGS} -o $@ -c $<
+
+dist:
+ rm -rf "${NAME}-${VERSION}"
+ mkdir -p "${NAME}-${VERSION}"
+ cp -f ${MAN1} ${DOC} ${SRC} Makefile "${NAME}-${VERSION}"
+ tar cf - "${NAME}-${VERSION}" | gzip -c > "${NAME}-${VERSION}.tar.gz"
+ rm -rf "${NAME}-${VERSION}"
+
+clean:
+ rm -f ${BIN} ${OBJ}
+
+install:
+ # installing executable files.
+ mkdir -p "${DESTDIR}${PREFIX}/bin"
+ cp -f ${BIN} "${DESTDIR}${PREFIX}/bin"
+ for f in ${BIN}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done
+ # installing documentation files.
+ mkdir -p "${DESTDIR}${DOCPREFIX}"
+ cp -f ${DOC} "${DESTDIR}${DOCPREFIX}"
+ # installing manual pages for general commands: section 1.
+ mkdir -p "${DESTDIR}${MANPREFIX}/man1"
+ cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1"
+ for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done
+
+uninstall:
+ # removing executable files.
+ for f in ${BIN}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done
+ # removing documentation files.
+ for d in ${DOC}; do rm -f "${DESTDIR}${DOCPREFIX}/$$d"; done
+ -rmdir "${DESTDIR}${DOCPREFIX}"
+ # removing manual pages.
+ for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done
+
+.PHONY: all clean dist install uninstall
(DIR) diff --git a/roll.c b/roll.c
t@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <err.h>
+#include <math.h>
+
+char *argv0;
+
+void
+usage(void)
+{
+ errx(1, "usage: %s DICE\nwhere DICE is N dice with M sides, in format NdM", argv0);
+}
+
+int
+random_number(int min, int max)
+{
+ return min + round((double)rand() / RAND_MAX * (double)(max - min));
+}
+
+int
+main(int argc, char *argv[])
+{
+ int i, n, sides, roll, sum = 0;
+
+ argv0 = *argv;
+ if (argc != 2)
+ usage();
+
+ sscanf(argv[1], "%dd%d", &n, &sides);
+
+ if (n < 1)
+ errx(1, "number of dice must be a positive value (%d)", n);
+
+ if (sides < 2)
+ errx(1, "dice must be at least two sided (%d)", sides);
+
+ for (i = 0; i < n; i++) {
+ roll = random_number(1, sides);
+ printf("1d%d\t%d\n", sides, roll);
+ sum += roll;
+ }
+
+ if (n > 1)
+ printf("SUM:\t%d\n", sum);
+
+ return 0;
+}