From 2d2016f0dfc9e036549ff035f0ae897c9b2d5fe4 Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Fri, 10 Feb 2012 14:25:28 +0100 Subject: [PATCH] show: Never call internal mhl(); always construct absolute argument paths. We don't want those fat binaries that call internal versions of unrelated tools. I.e. we do want modularization! No, fork() and exec() aren't too expensive ... but heavily interweaved code is! --- man/show.man1 | 20 -------------------- uip/Makefile.in | 4 ++-- uip/show.c | 39 +++++++-------------------------------- 3 files changed, 9 insertions(+), 54 deletions(-) diff --git a/man/show.man1 b/man/show.man1 index 93ab455..47cf7d0 100644 --- a/man/show.man1 +++ b/man/show.man1 @@ -207,26 +207,6 @@ while it is showing \*(lqunseen\*(rq messages. .PP If your .I showproc -is -.B mhl -(the default), then -.B show -uses -a built\-in -.BR mhl : -it does not actually run the -.B mhl -program. -Hence, if you define your own -.B showproc , -don't call it -.B mhl -since -.B show -won't run it. -.PP -If your -.I showproc is the pager .BR more , then avoid running diff --git a/uip/Makefile.in b/uip/Makefile.in index 711fd39..db56528 100644 --- a/uip/Makefile.in +++ b/uip/Makefile.in @@ -208,8 +208,8 @@ sendfiles: sendfiles.sh cp sendfiles.sh sendfiles chmod +x sendfiles -show: show.o mhlsbr.o termsbr.o $(LOCALLIBS) - $(LINK) show.o mhlsbr.o termsbr.o $(LINKLIBS) $(TERMLIB) +show: show.o $(LOCALLIBS) + $(LINK) show.o $(LINKLIBS) slocal.o: slocal.c $(COMPILE2) $(srcdir)/slocal.c diff --git a/uip/show.c b/uip/show.c index 1acaf70..8609293 100644 --- a/uip/show.c +++ b/uip/show.c @@ -47,9 +47,6 @@ static struct swit switches[] = { */ static int is_nontext(char *); -/* prototype from mhlsbr.c */ -int mhl(int, char **); - #define SHOW 0 #define NEXT 1 #define PREV 2 @@ -61,7 +58,7 @@ main(int argc, char **argv) int headersw = 1, msgp = 0; int checkmime = 1, mime; int vecp = 1, procp = 1, mode = SHOW, msgnum; - char *cp, *maildir, *file = NULL, *folder = NULL, *proc; + char *cp, *file = NULL, *folder = NULL, *proc; char buf[BUFSIZ], **argp, **arguments; char *msgs[MAXARGS], *vec[MAXARGS]; struct msgs *mp = NULL; @@ -202,10 +199,6 @@ usage: if (!folder) folder = getcurfol(); - maildir = toabsdir(folder); - - if (chdir(maildir) == NOTOK) - adios(maildir, "unable to change directory to"); /* read folder and create message structure */ if (!(mp = folder_read(folder))) @@ -294,30 +287,12 @@ go_to_it: ; vec[++vecp] = NULL; } - /* - ** If "proc" is mhl, then run it internally - ** rather than exec'ing it. - */ - if (strcmp(mhbasename(proc), "mhl") == 0) { - vec[0] = "mhl"; - mhl(vecp, vec); - done(0); - } - - /* - ** If you are not using a nmh command as your "proc", then - ** add the path to the message names. - */ - if (strcmp(mhbasename(proc), "mhl")==0 - && !file - && chdir(maildir = - concat(toabsdir("+"), "/", NULL)) != NOTOK) { - mp->foldpath = concat(mp->foldpath, "/", NULL); - cp = (strncmp(mp->foldpath, maildir, strlen(maildir))==0) ? - mp->foldpath + strlen(maildir) : - mp->foldpath; - for (msgnum = procp; msgnum < vecp; msgnum++) - vec[msgnum] = concat(cp, vec[msgnum], NULL); + /* Add the path to the message names. */ + if (!file) { + for (msgnum = procp; msgnum < vecp; msgnum++) { + vec[msgnum] = concat(mp->foldpath, "/", + vec[msgnum], NULL); + } } vec[0] = mhbasename(proc); -- 1.7.10.4