it* My version of sent Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/sent-sdk.git URL:git://git.codevoid.de/sent-sdk.git codevoid.de 70 1Log /git/sent-sdk/log.gph codevoid.de 70 1Files /git/sent-sdk/files.gph codevoid.de 70 1Refs /git/sent-sdk/refs.gph codevoid.de 70 1README /git/sent-sdk/file/README.md.gph codevoid.de 70 1LICENSE /git/sent-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit 16e4843d0563c1b3aea1574adde8f91ed5de5db3 /git/sent-sdk/commit/16e4843d0563c1b3aea1574adde8f91ed5de5db3.gph codevoid.de 70 1parent ec431df440fbe6d60ba49a108c2dc10e045a5033 /git/sent-sdk/commit/ec431df440fbe6d60ba49a108c2dc10e045a5033.gph codevoid.de 70 hAuthor: Markus Teich URL:mailto:markus.teich@stusta.mhn.de codevoid.de 70 iDate: Sat, 2 Sep 2017 19:30:11 +0200 Err codevoid.de 70 i Err codevoid.de 70 iallow to reload file Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M config.def.h | 1 + Err codevoid.de 70 i M sent.1 | 2 ++ Err codevoid.de 70 i M sent.c | 61 +++++++++++++++++++++++-------- Err codevoid.de 70 i Err codevoid.de 70 i3 files changed, 49 insertions(+), 15 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/config.def.h b/config.def.h /git/sent-sdk/file/config.def.h.gph codevoid.de 70 it@@ -46,6 +46,7 @@ static Shortcut shortcuts[] = { Err codevoid.de 70 i { XK_Prior, advance, {.i = -1} }, Err codevoid.de 70 i { XK_n, advance, {.i = +1} }, Err codevoid.de 70 i { XK_p, advance, {.i = -1} }, Err codevoid.de 70 i+ { XK_r, reload, {0} }, Err codevoid.de 70 i }; Err codevoid.de 70 i Err codevoid.de 70 i static Filter filters[] = { Err codevoid.de 70 1diff --git a/sent.1 b/sent.1 /git/sent-sdk/file/sent.1.gph codevoid.de 70 it@@ -35,6 +35,8 @@ Go to previous slide, if existent. Err codevoid.de 70 i .Bl -tag -width Ds Err codevoid.de 70 i .It Sy Escape | q Err codevoid.de 70 i Quit. Err codevoid.de 70 i+.It Sy r Err codevoid.de 70 i+Reload the slides. Only works on file input. Err codevoid.de 70 i .It Sy Right | Return | Space | l | j | Down | Next | n Err codevoid.de 70 i Go to next slide, if existent. Err codevoid.de 70 i .It Sy Left | Backspace | h | k | Up | Prior | p Err codevoid.de 70 1diff --git a/sent.c b/sent.c /git/sent-sdk/file/sent.c.gph codevoid.de 70 it@@ -93,7 +93,8 @@ static void ffscale(Image *img); Err codevoid.de 70 i static void ffdraw(Image *img); Err codevoid.de 70 i Err codevoid.de 70 i static void getfontsize(Slide *s, unsigned int *width, unsigned int *height); Err codevoid.de 70 i-static void cleanup(); Err codevoid.de 70 i+static void cleanup(int slidesonly); Err codevoid.de 70 i+static void reload(const Arg *arg); Err codevoid.de 70 i static void load(FILE *fp); Err codevoid.de 70 i static void advance(const Arg *arg); Err codevoid.de 70 i static void quit(const Arg *arg); Err codevoid.de 70 it@@ -115,6 +116,7 @@ static void configure(XEvent *); Err codevoid.de 70 i #include "config.h" Err codevoid.de 70 i Err codevoid.de 70 i /* Globals */ Err codevoid.de 70 i+static const char *fname = NULL; Err codevoid.de 70 i static Slide *slides = NULL; Err codevoid.de 70 i static int idx = 0; Err codevoid.de 70 i static int slidecount = 0; Err codevoid.de 70 it@@ -346,18 +348,21 @@ getfontsize(Slide *s, unsigned int *width, unsigned int *height) Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i void Err codevoid.de 70 i-cleanup() Err codevoid.de 70 i+cleanup(int slidesonly) Err codevoid.de 70 i { Err codevoid.de 70 i unsigned int i, j; Err codevoid.de 70 i Err codevoid.de 70 i- for (i = 0; i < NUMFONTSCALES; i++) Err codevoid.de 70 i- drw_fontset_free(fonts[i]); Err codevoid.de 70 i- free(sc); Err codevoid.de 70 i- drw_free(d); Err codevoid.de 70 i+ if (!slidesonly) { Err codevoid.de 70 i+ for (i = 0; i < NUMFONTSCALES; i++) Err codevoid.de 70 i+ drw_fontset_free(fonts[i]); Err codevoid.de 70 i+ free(sc); Err codevoid.de 70 i+ drw_free(d); Err codevoid.de 70 i+ Err codevoid.de 70 i+ XDestroyWindow(xw.dpy, xw.win); Err codevoid.de 70 i+ XSync(xw.dpy, False); Err codevoid.de 70 i+ XCloseDisplay(xw.dpy); Err codevoid.de 70 i+ } Err codevoid.de 70 i Err codevoid.de 70 i- XDestroyWindow(xw.dpy, xw.win); Err codevoid.de 70 i- XSync(xw.dpy, False); Err codevoid.de 70 i- XCloseDisplay(xw.dpy); Err codevoid.de 70 i if (slides) { Err codevoid.de 70 i for (i = 0; i < slidecount; i++) { Err codevoid.de 70 i for (j = 0; j < slides[i].linecount; j++) Err codevoid.de 70 it@@ -366,12 +371,39 @@ cleanup() Err codevoid.de 70 i if (slides[i].img) Err codevoid.de 70 i fffree(slides[i].img); Err codevoid.de 70 i } Err codevoid.de 70 i- free(slides); Err codevoid.de 70 i- slides = NULL; Err codevoid.de 70 i+ if (!slidesonly) { Err codevoid.de 70 i+ free(slides); Err codevoid.de 70 i+ slides = NULL; Err codevoid.de 70 i+ } Err codevoid.de 70 i } Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i void Err codevoid.de 70 i+reload(const Arg *arg) Err codevoid.de 70 i+{ Err codevoid.de 70 i+ FILE *fp = NULL; Err codevoid.de 70 i+ unsigned int i; Err codevoid.de 70 i+ Err codevoid.de 70 i+ if (!fname) { Err codevoid.de 70 i+ fprintf(stderr, "sent: Cannot reload from stdin. Use a file!\n"); Err codevoid.de 70 i+ return; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ Err codevoid.de 70 i+ cleanup(1); Err codevoid.de 70 i+ slidecount = 0; Err codevoid.de 70 i+ Err codevoid.de 70 i+ if (!(fp = fopen(fname, "r"))) Err codevoid.de 70 i+ die("sent: Unable to open '%s' for reading:", fname); Err codevoid.de 70 i+ load(fp); Err codevoid.de 70 i+ fclose(fp); Err codevoid.de 70 i+ Err codevoid.de 70 i+ LIMIT(idx, 0, slidecount-1); Err codevoid.de 70 i+ for (i = 0; i < slidecount; i++) Err codevoid.de 70 i+ ffload(&slides[i]); Err codevoid.de 70 i+ xdraw(); Err codevoid.de 70 i+} Err codevoid.de 70 i+ Err codevoid.de 70 i+void Err codevoid.de 70 i load(FILE *fp) Err codevoid.de 70 i { Err codevoid.de 70 i static size_t size = 0; Err codevoid.de 70 it@@ -658,9 +690,8 @@ main(int argc, char *argv[]) Err codevoid.de 70 i Err codevoid.de 70 i if (!argv[0] || !strcmp(argv[0], "-")) Err codevoid.de 70 i fp = stdin; Err codevoid.de 70 i- else if (!(fp = fopen(argv[0], "r"))) Err codevoid.de 70 i- die("sent: Unable to open '%s' for reading:", argv[0]); Err codevoid.de 70 i- Err codevoid.de 70 i+ else if (!(fp = fopen(fname = argv[0], "r"))) Err codevoid.de 70 i+ die("sent: Unable to open '%s' for reading:", fname); Err codevoid.de 70 i load(fp); Err codevoid.de 70 i fclose(fp); Err codevoid.de 70 i Err codevoid.de 70 it@@ -670,6 +701,6 @@ main(int argc, char *argv[]) Err codevoid.de 70 i xinit(); Err codevoid.de 70 i run(); Err codevoid.de 70 i Err codevoid.de 70 i- cleanup(); Err codevoid.de 70 i+ cleanup(0); Err codevoid.de 70 i return 0; Err codevoid.de 70 i } Err codevoid.de 70 .