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 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 Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include 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 %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 .