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;
       +}