projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* sbr/discard.c, sbr/m_getfld.c, uip/scansbr.c: Add support for
[mmh]
/
sbr
/
m_getfld.c
diff --git
a/sbr/m_getfld.c
b/sbr/m_getfld.c
index
cddf362
..
c542d52
100644
(file)
--- a/
sbr/m_getfld.c
+++ b/
sbr/m_getfld.c
@@
-3,10
+3,15
@@
* m_getfld.c -- read/parse a message
*
* $Id$
* m_getfld.c -- read/parse a message
*
* $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/mh.h>
-#include <zotnet/mts/mts.h>
+#include <h/mts.h>
+#include <h/utils.h>
/* This module has a long and checkered history. First, it didn't burst
maildrops correctly because it considered two CTRL-A:s in a row to be
/* This module has a long and checkered history. First, it didn't burst
maildrops correctly because it considered two CTRL-A:s in a row to be
@@
-178,12
+183,13
@@
static int fdelimlen;
static unsigned char *edelim;
static int edelimlen;
static unsigned char *edelim;
static int edelimlen;
-static int (*eom_action)() = NULL;
+static int (*eom_action)(int) = NULL;
#ifdef _FSTDIO
# define _ptr _p /* Gag */
# define _cnt _r /* Retch */
# define _filbuf __srget /* Puke */
#ifdef _FSTDIO
# define _ptr _p /* Gag */
# define _cnt _r /* Retch */
# define _filbuf __srget /* Puke */
+# define DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
#endif
#ifdef SCO_5_STDIO
#endif
#ifdef SCO_5_STDIO
@@
-191,6
+197,11
@@
static int (*eom_action)() = NULL;
# define _cnt __cnt
# define _base __base
# define _filbuf(fp) ((fp)->__cnt = 0, __filbuf(fp))
# define _cnt __cnt
# define _base __base
# define _filbuf(fp) ((fp)->__cnt = 0, __filbuf(fp))
+# define DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
+#endif
+
+#ifndef DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
+extern int _filbuf(FILE*);
#endif
#endif
@@
-255,6
+266,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
bp = sp = (unsigned char *) iob->_IO_read_ptr - 1;
j = (cnt = ((long) iob->_IO_read_end -
(long) iob->_IO_read_ptr) + 1) < i ? cnt : i;
bp = sp = (unsigned char *) iob->_IO_read_ptr - 1;
j = (cnt = ((long) iob->_IO_read_end -
(long) iob->_IO_read_ptr) + 1) < i ? cnt : i;
+#elif defined(__DragonFly__)
+ bp = sp = (unsigned char *) ((struct __FILE_public *)iob)->_p - 1;
+ j = (cnt = ((struct __FILE_public *)iob)->_r+1) < i ? cnt : i;
#else
bp = sp = (unsigned char *) iob->_ptr - 1;
j = (cnt = iob->_cnt+1) < i ? cnt : i;
#else
bp = sp = (unsigned char *) iob->_ptr - 1;
j = (cnt = iob->_cnt+1) < i ? cnt : i;
@@
-267,6
+281,8
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
#ifdef LINUX_STDIO
iob->_IO_read_ptr = iob->_IO_read_end;
if (__underflow(iob) == EOF) {
#ifdef LINUX_STDIO
iob->_IO_read_ptr = iob->_IO_read_end;
if (__underflow(iob) == EOF) {
+#elif defined(__DragonFly__)
+ if (__srget(iob) == EOF) {
#else
if (_filbuf(iob) == EOF) {
#endif
#else
if (_filbuf(iob) == EOF) {
#endif
@@
-280,6
+296,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
} else {
#ifdef LINUX_STDIO
iob->_IO_read_ptr = bp + 1;
} else {
#ifdef LINUX_STDIO
iob->_IO_read_ptr = bp + 1;
+#elif defined(__DragonFly__)
+ ((struct __FILE_public *)iob)->_p = bp + 1;
+ ((struct __FILE_public *)iob)->_r = cnt - 1;
#else
iob->_ptr = bp + 1;
iob->_cnt = cnt - 1;
#else
iob->_ptr = bp + 1;
iob->_cnt = cnt - 1;
@@
-324,6
+343,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
#ifdef LINUX_STDIO
cnt = (long) iob->_IO_read_end - (long) iob->_IO_read_ptr;
bp = (unsigned char *) --iob->_IO_read_ptr;
#ifdef LINUX_STDIO
cnt = (long) iob->_IO_read_end - (long) iob->_IO_read_ptr;
bp = (unsigned char *) --iob->_IO_read_ptr;
+#elif defined(__DragonFly__)
+ cnt = ((struct __FILE_public *)iob)->_r++;
+ bp = (unsigned char *) --((struct __FILE_public *)iob)->_p;
#else
cnt = iob->_cnt++;
bp = (unsigned char *) --iob->_ptr;
#else
cnt = iob->_cnt++;
bp = (unsigned char *) --iob->_ptr;
@@
-338,6
+360,11
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
j = ep - (unsigned char *) iob->_IO_read_ptr;
memcpy (cp, iob->_IO_read_ptr, j);
iob->_IO_read_ptr = ep;
j = ep - (unsigned char *) iob->_IO_read_ptr;
memcpy (cp, iob->_IO_read_ptr, j);
iob->_IO_read_ptr = ep;
+#elif defined(__DragonFly__)
+ j = ep - (unsigned char *) ((struct __FILE_public *)iob)->_p;
+ memcpy (cp, ((struct __FILE_public *)iob)->_p, j);
+ ((struct __FILE_public *)iob)->_p = ep;
+ ((struct __FILE_public *)iob)->_r -= j;
#else
j = ep - (unsigned char *) iob->_ptr;
memcpy (cp, iob->_ptr, j);
#else
j = ep - (unsigned char *) iob->_ptr;
memcpy (cp, iob->_ptr, j);
@@
-357,6
+384,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
#ifdef LINUX_STDIO
c += bp - (unsigned char *) iob->_IO_read_ptr;
memcpy( cp, iob->_IO_read_ptr, c);
#ifdef LINUX_STDIO
c += bp - (unsigned char *) iob->_IO_read_ptr;
memcpy( cp, iob->_IO_read_ptr, c);
+#elif defined(__DragonFly__)
+ c += bp - (unsigned char *) ((struct __FILE_public *)iob)->_p;
+ memcpy( cp, ((struct __FILE_public *)iob)->_p, c);
#else
c += bp - (unsigned char *) iob->_ptr;
memcpy( cp, iob->_ptr, c);
#else
c += bp - (unsigned char *) iob->_ptr;
memcpy( cp, iob->_ptr, c);
@@
-367,6
+397,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
/* the dest buffer is full */
#ifdef LINUX_STDIO
iob->_IO_read_ptr += c;
/* the dest buffer is full */
#ifdef LINUX_STDIO
iob->_IO_read_ptr += c;
+#elif defined(__DragonFly__)
+ ((struct __FILE_public *)iob)->_r -= c;
+ ((struct __FILE_public *)iob)->_p += c;
#else
iob->_cnt -= c;
iob->_ptr += c;
#else
iob->_cnt -= c;
iob->_ptr += c;
@@
-386,6
+419,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
iob->_IO_read_ptr = iob->_IO_read_end;
c = __underflow(iob);
iob->_IO_read_ptr++; /* NOT automatic! */
iob->_IO_read_ptr = iob->_IO_read_end;
c = __underflow(iob);
iob->_IO_read_ptr++; /* NOT automatic! */
+#elif defined(__DragonFly__)
+ *cp++ =j = *(((struct __FILE_public *)iob)->_p + c);
+ c = __srget(iob);
#else
*cp++ = j = *(iob->_ptr + c);
c = _filbuf(iob);
#else
*cp++ = j = *(iob->_ptr + c);
c = _filbuf(iob);
@@
-395,6
+431,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
if (c != EOF) {
#ifdef LINUX_STDIO
--iob->_IO_read_ptr;
if (c != EOF) {
#ifdef LINUX_STDIO
--iob->_IO_read_ptr;
+#elif defined(__DragonFly__)
+ --((struct __FILE_public *)iob)->_p;
+ ++((struct __FILE_public *)iob)->_r;
#else
--iob->_ptr;
++iob->_cnt;
#else
--iob->_ptr;
++iob->_cnt;
@@
-418,6
+457,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
#ifdef LINUX_STDIO
bp = (unsigned char *) --iob->_IO_read_ptr;
cnt = (long) iob->_IO_read_end - (long) iob->_IO_read_ptr;
#ifdef LINUX_STDIO
bp = (unsigned char *) --iob->_IO_read_ptr;
cnt = (long) iob->_IO_read_end - (long) iob->_IO_read_ptr;
+#elif defined(__DragonFly__)
+ bp = (unsigned char *) --((struct __FILE_public *)iob)->_p;
+ cnt = ++((struct __FILE_public *)iob)->_r;
#else
bp = (unsigned char *) --iob->_ptr;
cnt = ++iob->_cnt;
#else
bp = (unsigned char *) --iob->_ptr;
cnt = ++iob->_cnt;
@@
-480,6
+522,9
@@
m_getfld (int state, unsigned char *name, unsigned char *buf,
memcpy( buf, bp, c );
#ifdef LINUX_STDIO
iob->_IO_read_ptr += c;
memcpy( buf, bp, c );
#ifdef LINUX_STDIO
iob->_IO_read_ptr += c;
+#elif defined(__DragonFly__)
+ ((struct __FILE_public *)iob)->_r -= c;
+ ((struct __FILE_public *)iob)->_p += c;
#else
iob->_cnt -= c;
iob->_ptr += c;
#else
iob->_cnt -= c;
iob->_ptr += c;
@@
-552,7
+597,7
@@
m_unknown(FILE *iob)
msg_style = MS_MMDF;
}
c = strlen (delimstr);
msg_style = MS_MMDF;
}
c = strlen (delimstr);
- fdelim = (unsigned char *) malloc((size_t) (c + 3));
+ fdelim = (unsigned char *) mh_xmalloc((size_t) (c + 3));
*fdelim++ = '\0';
*fdelim = '\n';
msg_delim = (char *)fdelim+1;
*fdelim++ = '\0';
*fdelim = '\n';
msg_delim = (char *)fdelim+1;
@@
-572,7
+617,7
@@
m_unknown(FILE *iob)
pat_map = (unsigned char **) calloc (256, sizeof(unsigned char *));
for (cp = (char *) fdelim + 1; cp < (char *) delimend; cp++ )
pat_map = (unsigned char **) calloc (256, sizeof(unsigned char *));
for (cp = (char *) fdelim + 1; cp < (char *) delimend; cp++ )
- pat_map[*cp] = (unsigned char *) cp;
+ pat_map[(unsigned char)*cp] = (unsigned char *) cp;
if (msg_style == MS_MMDF) {
/* flush extra msg hdrs */
if (msg_style == MS_MMDF) {
/* flush extra msg hdrs */
@@
-585,7
+630,7
@@
m_unknown(FILE *iob)
void
void
-m_eomsbr (int (*action)())
+m_eomsbr (int (*action)(int))
{
if ((eom_action = action)) {
msg_style = MS_MSH;
{
if ((eom_action = action)) {
msg_style = MS_MSH;
@@
-689,10
+734,10
@@
get_returnpath (char *rp, int rplen, char *dd, int ddlen)
if (cp) {
/* return path for UUCP style addressing */
dp = strchr (++cp, '\n');
if (cp) {
/* return path for UUCP style addressing */
dp = strchr (++cp, '\n');
- snprintf (rp, rplen, "%.*s!%.*s\n", dp - cp, cp, bp - ap, ap);
+ snprintf (rp, rplen, "%.*s!%.*s\n", (int)(dp - cp), cp, (int)(bp - ap), ap);
} else {
/* return path for standard domain addressing */
} else {
/* return path for standard domain addressing */
- snprintf (rp, rplen, "%.*s\n", bp - ap, ap);
+ snprintf (rp, rplen, "%.*s\n", (int)(bp - ap), ap);
}
/*
}
/*
@@
-724,7
+769,8
@@
matchc(int patln, char *pat, int strln, char *str)
while (pc != *str++)
if (str > es)
return 0;
while (pc != *str++)
if (str > es)
return 0;
-
+ if (str > es+1)
+ return 0;
sp = str; pp = pat;
while (pp < ep && *sp++ == *pp)
pp++;
sp = str; pp = pat;
while (pp < ep && *sp++ == *pp)
pp++;