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