projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
When doing an if-test on the result of a function which returns a string
[mmh]
/
uip
/
mhlsbr.c
diff --git
a/uip/mhlsbr.c
b/uip/mhlsbr.c
index
18617d3
..
acf21de
100644
(file)
--- a/
uip/mhlsbr.c
+++ b/
uip/mhlsbr.c
@@
-3,13
+3,18
@@
* mhlsbr.c -- main routines for nmh message lister
*
* $Id$
* mhlsbr.c -- main routines for nmh message lister
*
* $Id$
+ *
+ * This code is Copyright (c) 2002, by the authors of nmh. See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
*/
#include <h/mh.h>
#include <h/signals.h>
#include <h/addrsbr.h>
#include <h/fmt_scan.h>
*/
#include <h/mh.h>
#include <h/signals.h>
#include <h/addrsbr.h>
#include <h/fmt_scan.h>
-#include <zotnet/tws/tws.h>
+#include <h/tws.h>
+#include <h/utils.h>
#include <setjmp.h>
#include <signal.h>
#include <setjmp.h>
#include <signal.h>
@@
-72,7
+77,7
@@
static struct swit mhlswitches[] = {
#define VERSIONSW 15
{ "version", 0 },
#define HELPSW 16
#define VERSIONSW 15
{ "version", 0 },
#define HELPSW 16
- { "help", 4 },
+ { "help", 0 },
#define FORW1SW 17
{ "forward", -7 }, /* interface from forw */
#define FORW2SW 18
#define FORW1SW 17
{ "forward", -7 }, /* interface from forw */
#define FORW2SW 18
@@
-225,7
+230,7
@@
static int wid;
static char *ovtxt;
static char *ovtxt;
-static char *onelp;
+static unsigned char *onelp;
static char *parptr;
static char *parptr;
@@
-434,6
+439,7
@@
mhl (int argc, char **argv)
SIGNAL (SIGINT, SIG_IGN);
SIGNAL2 (SIGQUIT, quitser);
}
SIGNAL (SIGINT, SIG_IGN);
SIGNAL2 (SIGQUIT, quitser);
}
+ SIGNAL2 (SIGPIPE, pipeser);
m_popen (moreproc);
ontty = PITTY;
} else {
m_popen (moreproc);
ontty = PITTY;
} else {
@@
-475,6
+481,11
@@
mhl (int argc, char **argv)
vecp > 1 ? "s" : "");
}
vecp > 1 ? "s" : "");
}
+ fflush(stdout);
+ if(ferror(stdout)){
+ adios("output", "error writing");
+ }
+
if (clearflg > 0 && ontty == NOTTY)
clear_screen ();
if (clearflg > 0 && ontty == NOTTY)
clear_screen ();
@@
-498,7
+509,7
@@
mhl_format (char *file, int length, int width)
static ino_t ino = 0;
static time_t mtime = 0;
static ino_t ino = 0;
static time_t mtime = 0;
- if (fmthd != NULL)
+ if (fmthd != NULL) {
if (stat (etcpath (file), &st) != NOTOK
&& mtime == st.st_mtime
&& dev == st.st_dev
if (stat (etcpath (file), &st) != NOTOK
&& mtime == st.st_mtime
&& dev == st.st_dev
@@
-506,6
+517,7
@@
mhl_format (char *file, int length, int width)
goto out;
else
free_queue (&fmthd, &fmttl);
goto out;
else
free_queue (&fmthd, &fmttl);
+ }
if ((fp = fopen (etcpath (file), "r")) == NULL)
adios (file, "unable to open format file");
if ((fp = fopen (etcpath (file), "r")) == NULL)
adios (file, "unable to open format file");
@@
-551,7
+563,7
@@
mhl_format (char *file, int length, int width)
* Split this list of fields to ignore, and copy
* it to the end of the current "ignores" list.
*/
* Split this list of fields to ignore, and copy
* it to the end of the current "ignores" list.
*/
- if (!strcasecmp (name, "ignores")) {
+ if (!mh_strcasecmp (name, "ignores")) {
char **tmparray, **p;
int n = 0;
char **tmparray, **p;
int n = 0;
@@
-584,7
+596,7
@@
mhl_format (char *file, int length, int width)
if (evalvar (c1))
adios (NULL, "format file syntax error: %s", bp);
}
if (evalvar (c1))
adios (NULL, "format file syntax error: %s", bp);
}
- if (!c1->c_nfs && global.c_nfs)
+ if (!c1->c_nfs && global.c_nfs) {
if (c1->c_flags & DATEFMT) {
if (global.c_flags & DATEFMT)
c1->c_nfs = getcpy (global.c_nfs);
if (c1->c_flags & DATEFMT) {
if (global.c_flags & DATEFMT)
c1->c_nfs = getcpy (global.c_nfs);
@@
-594,6
+606,7
@@
mhl_format (char *file, int length, int width)
if (global.c_flags & ADDRFMT)
c1->c_nfs = getcpy (global.c_nfs);
}
if (global.c_flags & ADDRFMT)
c1->c_nfs = getcpy (global.c_nfs);
}
+ }
continue;
default:
continue;
default:
@@
-654,17
+667,17
@@
evalvar (struct mcomp *c1)
return 0;
strncpy (name, parse(), sizeof(name));
return 0;
strncpy (name, parse(), sizeof(name));
- if (!strcasecmp (name, "component")) {
+ if (!mh_strcasecmp (name, "component")) {
if (ptos (name, &c1->c_text))
return 1;
c1->c_flags &= ~NOCOMPONENT;
return 0;
}
if (ptos (name, &c1->c_text))
return 1;
c1->c_flags &= ~NOCOMPONENT;
return 0;
}
- if (!strcasecmp (name, "overflowtext"))
+ if (!mh_strcasecmp (name, "overflowtext"))
return ptos (name, &c1->c_ovtxt);
return ptos (name, &c1->c_ovtxt);
- if (!strcasecmp (name, "formatfield")) {
+ if (!mh_strcasecmp (name, "formatfield")) {
char *nfs;
if (ptos (name, &cp))
char *nfs;
if (ptos (name, &cp))
@@
-675,7
+688,7
@@
evalvar (struct mcomp *c1)
return 0;
}
return 0;
}
- if (!strcasecmp (name, "decode")) {
+ if (!mh_strcasecmp (name, "decode")) {
char *nfs;
nfs = new_fs (NULL, NULL, "%(decode{text})");
char *nfs;
nfs = new_fs (NULL, NULL, "%(decode{text})");
@@
-684,21
+697,21
@@
evalvar (struct mcomp *c1)
return 0;
}
return 0;
}
- if (!strcasecmp (name, "offset"))
+ if (!mh_strcasecmp (name, "offset"))
return ptoi (name, &c1->c_offset);
return ptoi (name, &c1->c_offset);
- if (!strcasecmp (name, "overflowoffset"))
+ if (!mh_strcasecmp (name, "overflowoffset"))
return ptoi (name, &c1->c_ovoff);
return ptoi (name, &c1->c_ovoff);
- if (!strcasecmp (name, "width"))
+ if (!mh_strcasecmp (name, "width"))
return ptoi (name, &c1->c_width);
return ptoi (name, &c1->c_width);
- if (!strcasecmp (name, "compwidth"))
+ if (!mh_strcasecmp (name, "compwidth"))
return ptoi (name, &c1->c_cwidth);
return ptoi (name, &c1->c_cwidth);
- if (!strcasecmp (name, "length"))
+ if (!mh_strcasecmp (name, "length"))
return ptoi (name, &c1->c_length);
return ptoi (name, &c1->c_length);
- if (!strcasecmp (name, "nodashstuffing"))
+ if (!mh_strcasecmp (name, "nodashstuffing"))
return (dashstuff = -1);
for (ap = triples; ap->t_name; ap++)
return (dashstuff = -1);
for (ap = triples; ap->t_name; ap++)
- if (!strcasecmp (ap->t_name, name)) {
+ if (!mh_strcasecmp (ap->t_name, name)) {
c1->c_flags |= ap->t_on;
c1->c_flags &= ~ap->t_off;
return 0;
c1->c_flags |= ap->t_on;
c1->c_flags &= ~ap->t_off;
return 0;
@@
-891,7
+904,7
@@
mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
case FLD:
case FLDPLUS:
for (ip = ignores; *ip; ip++)
case FLD:
case FLDPLUS:
for (ip = ignores; *ip; ip++)
- if (!strcasecmp (name, *ip)) {
+ if (!mh_strcasecmp (name, *ip)) {
while (state == FLDPLUS)
state = m_getfld (state, name, buf, sizeof(buf), fp);
break;
while (state == FLDPLUS)
state = m_getfld (state, name, buf, sizeof(buf), fp);
break;
@@
-900,12
+913,12
@@
mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
continue;
for (c2 = fmthd; c2; c2 = c2->c_next)
continue;
for (c2 = fmthd; c2; c2 = c2->c_next)
- if (!strcasecmp (c2->c_name, name))
+ if (!mh_strcasecmp (c2->c_name, name))
break;
c1 = NULL;
if (!((c3 = c2 ? c2 : &global)->c_flags & SPLIT))
for (c1 = msghd; c1; c1 = c1->c_next)
break;
c1 = NULL;
if (!((c3 = c2 ? c2 : &global)->c_flags & SPLIT))
for (c1 = msghd; c1; c1 = c1->c_next)
- if (!strcasecmp (c1->c_name, c3->c_name)) {
+ if (!mh_strcasecmp (c1->c_name, c3->c_name)) {
c1->c_text =
mcomp_add (c1->c_flags, buf, c1->c_text);
break;
c1->c_text =
mcomp_add (c1->c_flags, buf, c1->c_text);
break;
@@
-928,7
+941,7
@@
mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
putcomp (c1, c1, ONECOMP);
continue;
}
putcomp (c1, c1, ONECOMP);
continue;
}
- if (!strcasecmp (c1->c_name, "messagename")) {
+ if (!mh_strcasecmp (c1->c_name, "messagename")) {
holder.c_text = concat ("(Message ", mname, ")\n",
NULL);
putcomp (c1, &holder, ONECOMP);
holder.c_text = concat ("(Message ", mname, ")\n",
NULL);
putcomp (c1, &holder, ONECOMP);
@@
-936,15
+949,14
@@
mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
holder.c_text = NULL;
continue;
}
holder.c_text = NULL;
continue;
}
- if (!strcasecmp (c1->c_name, "extras")) {
+ if (!mh_strcasecmp (c1->c_name, "extras")) {
for (c2 = msghd; c2; c2 = c2->c_next)
if (c2->c_flags & EXTRA)
putcomp (c1, c2, TWOCOMP);
continue;
}
for (c2 = msghd; c2; c2 = c2->c_next)
if (c2->c_flags & EXTRA)
putcomp (c1, c2, TWOCOMP);
continue;
}
- if (dobody && !strcasecmp (c1->c_name, "body")) {
- if ((holder.c_text = malloc (sizeof(buf))) == NULL)
- adios (NULL, "unable to allocate buffer memory");
+ if (dobody && !mh_strcasecmp (c1->c_name, "body")) {
+ holder.c_text = mh_xmalloc (sizeof(buf));
strncpy (holder.c_text, buf, sizeof(buf));
while (state == BODY) {
putcomp (c1, &holder, BODYCOMP);
strncpy (holder.c_text, buf, sizeof(buf));
while (state == BODY) {
putcomp (c1, &holder, BODYCOMP);
@@
-956,7
+968,7
@@
mhlfile (FILE *fp, char *mname, int ofilen, int ofilec)
continue;
}
for (c2 = msghd; c2; c2 = c2->c_next)
continue;
}
for (c2 = msghd; c2; c2 = c2->c_next)
- if (!strcasecmp (c2->c_name, c1->c_name)) {
+ if (!mh_strcasecmp (c2->c_name, c1->c_name)) {
putcomp (c1, c2, ONECOMP);
if (!(c1->c_flags & SPLIT))
break;
putcomp (c1, c2, ONECOMP);
if (!(c1->c_flags & SPLIT))
break;
@@
-994,7
+1006,7
@@
mcomp_flags (char *name)
struct pair *ap;
for (ap = pairs; ap->p_name; ap++)
struct pair *ap;
for (ap = pairs; ap->p_name; ap++)
- if (!strcasecmp (ap->p_name, name))
+ if (!mh_strcasecmp (ap->p_name, name))
return (ap->p_flags);
return 0;
return (ap->p_flags);
return 0;
@@
-1173,7
+1185,7
@@
static void
putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
{
int count, cchdr;
putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
{
int count, cchdr;
- char *cp;
+ unsigned char *cp;
cchdr = 0;
lm = 0;
cchdr = 0;
lm = 0;
@@
-1262,13
+1274,14
@@
putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
*cp = toupper (*cp);
count = 0;
*cp = toupper (*cp);
count = 0;
- if (cchdr)
+ if (cchdr) {
if (flag == TWOCOMP)
count = (c1->c_cwidth >= 0) ? c1->c_cwidth
: strlen (c2->c_name) + 2;
else
count = (c1->c_cwidth >= 0) ? c1->c_cwidth
: strlen (c1->c_text ? c1->c_text : c1->c_name) + 2;
if (flag == TWOCOMP)
count = (c1->c_cwidth >= 0) ? c1->c_cwidth
: strlen (c2->c_name) + 2;
else
count = (c1->c_cwidth >= 0) ? c1->c_cwidth
: strlen (c1->c_text ? c1->c_text : c1->c_name) + 2;
+ }
count += c1->c_offset;
if ((cp = oneline (c2->c_text, c1->c_flags)))
count += c1->c_offset;
if ((cp = oneline (c2->c_text, c1->c_flags)))
@@
-1285,6
+1298,8
@@
putcomp (struct mcomp *c1, struct mcomp *c2, int flag)
if (term == '\n')
putstr ("\n");
}
if (term == '\n')
putstr ("\n");
}
+ if (flag == BODYCOMP && term == '\n')
+ c1->c_flags &= ~HDROUTPUT; /* Buffer ended on a newline */
}
}
@@
-1343,7
+1358,7
@@
oneline (char *stuff, long flags)
static void
putstr (char *string)
{
static void
putstr (char *string)
{
- if (!column && lm > 0)
+ if (!column && lm > 0) {
while (lm > 0)
if (lm >= 8) {
putch ('\t');
while (lm > 0)
if (lm >= 8) {
putch ('\t');
@@
-1353,6
+1368,7
@@
putstr (char *string)
putch (' ');
lm--;
}
putch (' ');
lm--;
}
+ }
lm = 0;
while (*string)
putch (*string++);
lm = 0;
while (*string)
putch (*string++);
@@
-1630,14
+1646,12
@@
doface (struct mcomp *c1)
if (cp) {
int j;
char *dp;
if (cp) {
int j;
char *dp;
- if ((dp = realloc (cp, (unsigned) (j = len + i))) == NULL)
- adios (NULL, "unable to allocate face storage");
+ dp = mh_xrealloc (cp, (unsigned) (j = len + i));
memcpy(dp + len, buffer, i);
cp = dp, len = j;
}
else {
memcpy(dp + len, buffer, i);
cp = dp, len = j;
}
else {
- if ((cp = malloc ((unsigned) i)) == NULL)
- adios (NULL, "unable to allocate face storage");
+ cp = mh_xmalloc ((unsigned) i);
memcpy(cp, buffer, i);
len = i;
}
memcpy(cp, buffer, i);
len = i;
}