SMOLNET PORTAL home about changes
iRewrite md2point in c and add minimal manpage - pointtools - Simple point utilities to hold text presentations.	Err	bitreich.org	70
hgit clone git://bitreich.org/pointtools/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/pointtools/	URL:git://bitreich.org/pointtools/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/pointtools/	bitreich.org	70
1Log	/scm/pointtools/log.gph	bitreich.org	70
1Files	/scm/pointtools/files.gph	bitreich.org	70
1Refs	/scm/pointtools/refs.gph	bitreich.org	70
1Tags	/scm/pointtools/tag	bitreich.org	70
1README	/scm/pointtools/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/pointtools/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit d8eed1a76732e11cf44c4724f71dfc0072d40adc	/scm/pointtools/commit/d8eed1a76732e11cf44c4724f71dfc0072d40adc.gph	bitreich.org	70
1parent fd83f17fab6afefa04c18b6e8f2938b916b9d008	/scm/pointtools/commit/fd83f17fab6afefa04c18b6e8f2938b916b9d008.gph	bitreich.org	70
hAuthor: Anders Damsgaard <anders@adamsgaard.dk>	URL:mailto:anders@adamsgaard.dk	bitreich.org	70
iDate:   Wed, 29 Apr 2020 15:59:19 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iRewrite md2point in c and add minimal manpage	Err	bitreich.org	70
i	Err	bitreich.org	70
iSigned-off-by: Christoph Lohmann <20h@r-36.net>	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |      14 ++++++++++++++	Err	bitreich.org	70
i  R bin/md2point -> bin/md2point.sh     |       0 	Err	bitreich.org	70
i  A md2point.1                          |      42 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  A md2point.c                          |     164 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 220 insertions(+), 0 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/pointtools/file/Makefile.gph	bitreich.org	70
i@@ -1,11 +1,25 @@	Err	bitreich.org	70
i PREFIX=        /usr/local	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+bin/md2point: md2point.o	Err	bitreich.org	70
i+        ${CC} -o $@ md2point.o ${LDFLAGS}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+.c.o:	Err	bitreich.org	70
i+        ${CC} -c ${CFLAGS} $<	Err	bitreich.org	70
i+	Err	bitreich.org	70
i install:	Err	bitreich.org	70
i         install -m755 bin/dir2point $(PREFIX)/bin/dir2point	Err	bitreich.org	70
i         install -m755 bin/md2point  $(PREFIX)/bin/md2point	Err	bitreich.org	70
i         install -m755 bin/point2pdf $(PREFIX)/bin/point2pdf	Err	bitreich.org	70
i+        install -m644 md2point.1    $(PREFIX)/share/man/man1/md2point.1	Err	bitreich.org	70
i 	Err	bitreich.org	70
i uninstall:	Err	bitreich.org	70
i         rm -f $(PREFIX)/bin/dir2point	Err	bitreich.org	70
i         rm -f $(PREFIX)/bin/md2point	Err	bitreich.org	70
i         rm -f $(PREFIX)/bin/point2pdf	Err	bitreich.org	70
i+        rm -f $(PREFIX)/share/man/man1/md2point.1	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+clean:	Err	bitreich.org	70
i+        rm -f bin/md2point	Err	bitreich.org	70
i+        rm -f md2point.o	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+.PHONY: install uninstall clean	Err	bitreich.org	70
1diff --git a/bin/md2point b/bin/md2point.sh	/scm/pointtools/file/bin/md2point.sh.gph	bitreich.org	70
1diff --git a/md2point.1 b/md2point.1	/scm/pointtools/file/md2point.1.gph	bitreich.org	70
i@@ -0,0 +1,42 @@	Err	bitreich.org	70
i+.Dd $Mdocdate$	Err	bitreich.org	70
i+.Dt MD2POINT 1	Err	bitreich.org	70
i+.Os	Err	bitreich.org	70
i+.Sh NAME	Err	bitreich.org	70
i+.Nm md2point	Err	bitreich.org	70
i+.Nd converts markdown into catpoint presentation files	Err	bitreich.org	70
i+.Sh SYNOPSIS	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+.Sh DESCRIPTION	Err	bitreich.org	70
i+The	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+utility reads markdown from stdin and writes formatted text files	Err	bitreich.org	70
i+to the current directory.  The output text files are intended for	Err	bitreich.org	70
i+use with catpoint.  The output files are named in a consecutive	Err	bitreich.org	70
i+manner with the title in the file name.	Err	bitreich.org	70
i+.Sh MARKDOWN FORMAT	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+Lines beginning with	Err	bitreich.org	70
i+.Em ## 	Err	bitreich.org	70
i+are treated as slide titles, and serve as delimiters between output	Err	bitreich.org	70
i+slides.	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+Lines beginning with	Err	bitreich.org	70
i+.Em %	Err	bitreich.org	70
i+are treated as comments, and are not reproduced in the output.	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+Lines beginning with	Err	bitreich.org	70
i+.Em #pause	Err	bitreich.org	70
i+denote breaks within slides.	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+Any other text and formatting is reproduced exactly in the output.	Err	bitreich.org	70
i+.Sh EXIT STATUS	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+exits with 0 on success, and >0 if a a runtime error occurs.	Err	bitreich.org	70
i+.Sh SEE ALSO	Err	bitreich.org	70
i+.Xr catpoint	Err	bitreich.org	70
i+.Xr dir2point	Err	bitreich.org	70
i+.Sh AUTHORS	Err	bitreich.org	70
i+.An Anders Damsgaard Aq Mt anders@adamsgaard.dk ,	Err	bitreich.org	70
i+and	Err	bitreich.org	70
i+.An Christoph Lohmann Aq Mt 20h@r-36.net	Err	bitreich.org	70
i+(original implementation).	Err	bitreich.org	70
1diff --git a/md2point.c b/md2point.c	/scm/pointtools/file/md2point.c.gph	bitreich.org	70
i@@ -0,0 +1,164 @@	Err	bitreich.org	70
i+#include <stdio.h>	Err	bitreich.org	70
i+#include <stdlib.h>	Err	bitreich.org	70
i+#include <err.h>	Err	bitreich.org	70
i+#include <string.h>	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+#define PATH_MAX 128	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+char buf[PATH_MAX];	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+/* from git://bitreich.org/utf8expr */	Err	bitreich.org	70
i+size_t	Err	bitreich.org	70
i+utf8strlen(char *s)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        size_t i;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        i = 0;	Err	bitreich.org	70
i+        for (; s[0]; s++) {	Err	bitreich.org	70
i+                if ((s[0] & 0xc0) != 0x80)	Err	bitreich.org	70
i+                        i++;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        return i;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+fprintunderline(FILE *fp, char *str, size_t linelen)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        size_t i;	Err	bitreich.org	70
i+        fprintf(fp, "\n  %s\n  ", str);	Err	bitreich.org	70
i+        for (i=0; i<=utf8strlen(str); ++i)	Err	bitreich.org	70
i+                fputs("=", fp);	Err	bitreich.org	70
i+        fputs("\n\n", fp);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+escapechars(char *s, size_t linelen)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        size_t i;	Err	bitreich.org	70
i+        for (i=0; i<linelen && *s != '\0'; (void)*s++, i++)	Err	bitreich.org	70
i+                switch (*s) {	Err	bitreich.org	70
i+                        case '#':	Err	bitreich.org	70
i+                        case ' ':	Err	bitreich.org	70
i+                        case '        ':	Err	bitreich.org	70
i+                        case ':':	Err	bitreich.org	70
i+                        case '.':	Err	bitreich.org	70
i+                        case '(':	Err	bitreich.org	70
i+                        case ')':	Err	bitreich.org	70
i+                        case '/':	Err	bitreich.org	70
i+                                *s = '_';	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i+                        case '\n':	Err	bitreich.org	70
i+                                *s = '\0';	Err	bitreich.org	70
i+                                return;	Err	bitreich.org	70
i+                        default:	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+fprintesc(FILE *fp, char *s, ssize_t len)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        ssize_t i;	Err	bitreich.org	70
i+        int intext;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        intext = 0;	Err	bitreich.org	70
i+        fputs("  ", fp);	Err	bitreich.org	70
i+        for (i=0; i<len && s[i] != '\0'; i++)	Err	bitreich.org	70
i+                switch (s[i]) {	Err	bitreich.org	70
i+                        case ' ':	Err	bitreich.org	70
i+                                fputc(' ', fp);	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i+                        case '\t':	Err	bitreich.org	70
i+                                fprintf(fp, "        ");	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i+                        case '*':	Err	bitreich.org	70
i+                                if (!intext) {	Err	bitreich.org	70
i+                                        fputc('o', fp);	Err	bitreich.org	70
i+                                        break;	Err	bitreich.org	70
i+                                }	Err	bitreich.org	70
i+                        default:	Err	bitreich.org	70
i+                                intext = 1;	Err	bitreich.org	70
i+                                fputc(s[i], fp);	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+        fputs("\n", fp);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+mkfilename(char *fname, char *str, size_t len, int i)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        strlcpy(buf, str, len);	Err	bitreich.org	70
i+        escapechars(buf, len);	Err	bitreich.org	70
i+        snprintf(fname, len, "%.4d-%s.txt", i, buf);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+void	Err	bitreich.org	70
i+copyfile(char *dst, char *src)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        char c;	Err	bitreich.org	70
i+        FILE *fsrc, *fdst;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (strlen(src) < 1 || strlen(dst) < 1 ||	Err	bitreich.org	70
i+                !(fsrc = fopen(src, "r")) || !(fdst = fopen(dst, "w")))	Err	bitreich.org	70
i+                err(1, "copyfile: %s -> %s", src, dst);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        while ((c = fgetc(fsrc)) != EOF)	Err	bitreich.org	70
i+                fputc(c, fdst);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        fclose(fsrc);	Err	bitreich.org	70
i+        fclose(fdst);	Err	bitreich.org	70
i+}	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+int	Err	bitreich.org	70
i+main(int argc, char* argv[])	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i+        int i;	Err	bitreich.org	70
i+        static char *line;	Err	bitreich.org	70
i+        static size_t linesize;	Err	bitreich.org	70
i+        ssize_t linelen;	Err	bitreich.org	70
i+        char title[PATH_MAX], fname[PATH_MAX], fname_old[PATH_MAX];	Err	bitreich.org	70
i+        FILE *fp;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        fp = NULL;	Err	bitreich.org	70
i+        title[0] = fname[0] = fname_old[0] = '\0';	Err	bitreich.org	70
i+        i = 0;	Err	bitreich.org	70
i+        while ((linelen = getline(&line, &linesize, stdin)) > 0) {	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if (line[linelen-1] == '\n')	Err	bitreich.org	70
i+                        line[--linelen] = '\0';	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if (linelen > 1 && line[0] == '#' && line[1] == '#') {	Err	bitreich.org	70
i+                        if (fp)	Err	bitreich.org	70
i+                                fclose(fp);	Err	bitreich.org	70
i+                        strlcpy(title, line+2, PATH_MAX);	Err	bitreich.org	70
i+                        mkfilename(fname, title, PATH_MAX, i++);	Err	bitreich.org	70
i+                        if (!(fp = fopen(fname, "w")))	Err	bitreich.org	70
i+                                err(1, "fopen: %s", fname);	Err	bitreich.org	70
i+                        if (linelen == 2)	Err	bitreich.org	70
i+                                fputs("\n", fp);	Err	bitreich.org	70
i+                        else	Err	bitreich.org	70
i+                                fprintunderline(fp, title, linelen);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                } else if (linelen > 0 && line[0] == '%') {	Err	bitreich.org	70
i+                        continue;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                } else if (linelen > 5 && !strncmp(line, "#pause", linelen)) {	Err	bitreich.org	70
i+                        if (fp)	Err	bitreich.org	70
i+                                fclose(fp);	Err	bitreich.org	70
i+                        strlcpy(fname_old, fname, PATH_MAX);	Err	bitreich.org	70
i+                        mkfilename(fname, title, PATH_MAX, i++);	Err	bitreich.org	70
i+                         copyfile(fname, fname_old);	Err	bitreich.org	70
i+                        if (strlen(fname) > 0 && !(fp = fopen(fname, "a")))	Err	bitreich.org	70
i+                                err(1, "fopen: %s", fname);	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                } else {	Err	bitreich.org	70
i+                        /* ignore text before first header */	Err	bitreich.org	70
i+                        if (fp)	Err	bitreich.org	70
i+                                fprintesc(fp, line, linelen);	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        free(line);	Err	bitreich.org	70
i+        return 0;	Err	bitreich.org	70
i+}	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/pointtools/commit/d8eed1a7673...
Content-Typetext/plain; charset=utf-8