projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Updated docs/README-ATTACHMENTS, mainly to reflect that no setup is
[mmh]
/
uip
/
mhparse.c
diff --git
a/uip/mhparse.c
b/uip/mhparse.c
index
ea78b42
..
25bbad7
100644
(file)
--- a/
uip/mhparse.c
+++ b/
uip/mhparse.c
@@
-12,7
+12,6
@@
#include <h/signals.h>
#include <h/md5.h>
#include <errno.h>
#include <h/signals.h>
#include <h/md5.h>
#include <errno.h>
-#include <setjmp.h>
#include <signal.h>
#include <h/mts.h>
#include <h/tws.h>
#include <signal.h>
#include <h/mts.h>
#include <h/tws.h>
@@
-23,8
+22,6
@@
extern int debugsw;
extern int debugsw;
-extern int endian; /* mhmisc.c */
-
extern pid_t xpid; /* mhshowsbr.c */
/* cache policies */
extern pid_t xpid; /* mhshowsbr.c */
/* cache policies */
@@
-86,16
+83,12
@@
struct k2v SubApplication[] = {
};
};
-/* ftpsbr.c */
-int ftp_get (char *, char *, char *, char *, char *, char *, int, int);
-
/* mhcachesbr.c */
int find_cache (CT, int, int *, char *, char *, int);
/* mhmisc.c */
int part_ok (CT, int);
int type_ok (CT, int);
/* mhcachesbr.c */
int find_cache (CT, int, int *, char *, char *, int);
/* mhmisc.c */
int part_ok (CT, int);
int type_ok (CT, int);
-int make_intermediates (char *);
void content_error (char *, CT, char *, ...);
/* mhfree.c */
void content_error (char *, CT, char *, ...);
/* mhfree.c */
@@
-1732,9
+1725,9
@@
static int
openBase64 (CT ct, char **file)
{
int bitno, cc, digested;
openBase64 (CT ct, char **file)
{
int bitno, cc, digested;
- int fd, len, skip;
- unsigned long bits;
- unsigned char value, *b, *b1, *b2, *b3;
+ int fd, len, skip, own_ct_fp = 0;
+ uint32_t bits;
+ unsigned char value, b;
unsigned char *cp, *ep;
char buffer[BUFSIZ];
/* sbeck -- handle suffixes */
unsigned char *cp, *ep;
char buffer[BUFSIZ];
/* sbeck -- handle suffixes */
@@
-1742,11
+1735,6
@@
openBase64 (CT ct, char **file)
CE ce;
MD5_CTX mdContext;
CE ce;
MD5_CTX mdContext;
- b = (unsigned char *) &bits;
- b1 = &b[endian > 0 ? 1 : 2];
- b2 = &b[endian > 0 ? 2 : 1];
- b3 = &b[endian > 0 ? 3 : 0];
-
ce = ct->c_cefile;
if (ce->ce_fp) {
fseek (ce->ce_fp, 0L, SEEK_SET);
ce = ct->c_cefile;
if (ce->ce_fp) {
fseek (ce->ce_fp, 0L, SEEK_SET);
@@
-1781,8
+1769,8
@@
openBase64 (CT ct, char **file)
}
if (cp != NULL && *cp != '\0') {
if (ce->ce_unlink) {
}
if (cp != NULL && *cp != '\0') {
if (ce->ce_unlink) {
- // Temporary file already exists, so we rename to
- // version with extension.
+ /* Temporary file already exists, so we rename to
+ version with extension. */
char *file_org = strdup(ce->ce_file);
ce->ce_file = add (cp, ce->ce_file);
if (rename(file_org, ce->ce_file)) {
char *file_org = strdup(ce->ce_file);
ce->ce_file = add (cp, ce->ce_file);
if (rename(file_org, ce->ce_file)) {
@@
-1803,9
+1791,12
@@
openBase64 (CT ct, char **file)
if ((len = ct->c_end - ct->c_begin) < 0)
adios (NULL, "internal error(1)");
if ((len = ct->c_end - ct->c_begin) < 0)
adios (NULL, "internal error(1)");
- if (!ct->c_fp && (ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
- content_error (ct->c_file, ct, "unable to open for reading");
- return NOTOK;
+ if (! ct->c_fp) {
+ if ((ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
+ content_error (ct->c_file, ct, "unable to open for reading");
+ return NOTOK;
+ }
+ own_ct_fp = 1;
}
if ((digested = ct->c_digested))
}
if ((digested = ct->c_digested))
@@
-1852,17
+1843,20
@@
openBase64 (CT ct, char **file)
bits |= value << bitno;
test_end:
if ((bitno -= 6) < 0) {
bits |= value << bitno;
test_end:
if ((bitno -= 6) < 0) {
- putc ((char) *b1, ce->ce_fp);
+ b = (bits >> 16) & 0xff;
+ putc ((char) b, ce->ce_fp);
if (digested)
if (digested)
- MD5Update (&mdContext, b1, 1);
+ MD5Update (&mdContext, &b, 1);
if (skip < 2) {
if (skip < 2) {
- putc ((char) *b2, ce->ce_fp);
+ b = (bits >> 8) & 0xff;
+ putc ((char) b, ce->ce_fp);
if (digested)
if (digested)
- MD5Update (&mdContext, b2, 1);
+ MD5Update (&mdContext, &b, 1);
if (skip < 1) {
if (skip < 1) {
- putc ((char) *b3, ce->ce_fp);
+ b = bits & 0xff;
+ putc ((char) b, ce->ce_fp);
if (digested)
if (digested)
- MD5Update (&mdContext, b3, 1);
+ MD5Update (&mdContext, &b, 1);
}
}
}
}
@@
-1917,9
+1911,17
@@
self_delimiting:
ready_to_go:
*file = ce->ce_file;
ready_to_go:
*file = ce->ce_file;
+ if (own_ct_fp) {
+ fclose (ct->c_fp);
+ ct->c_fp = NULL;
+ }
return fileno (ce->ce_fp);
clean_up:
return fileno (ce->ce_fp);
clean_up:
+ if (own_ct_fp) {
+ fclose (ct->c_fp);
+ ct->c_fp = NULL;
+ }
free_encoding (ct, 0);
return NOTOK;
}
free_encoding (ct, 0);
return NOTOK;
}
@@
-1959,7
+1961,7
@@
InitQuoted (CT ct)
static int
openQuoted (CT ct, char **file)
{
static int
openQuoted (CT ct, char **file)
{
- int cc, digested, len, quoted;
+ int cc, digested, len, quoted, own_ct_fp = 0;
unsigned char *cp, *ep;
char buffer[BUFSIZ];
unsigned char mask;
unsigned char *cp, *ep;
char buffer[BUFSIZ];
unsigned char mask;
@@
-2002,8
+2004,8
@@
openQuoted (CT ct, char **file)
}
if (cp != NULL && *cp != '\0') {
if (ce->ce_unlink) {
}
if (cp != NULL && *cp != '\0') {
if (ce->ce_unlink) {
- // Temporary file already exists, so we rename to
- // version with extension.
+ /* Temporary file already exists, so we rename to
+ version with extension. */
char *file_org = strdup(ce->ce_file);
ce->ce_file = add (cp, ce->ce_file);
if (rename(file_org, ce->ce_file)) {
char *file_org = strdup(ce->ce_file);
ce->ce_file = add (cp, ce->ce_file);
if (rename(file_org, ce->ce_file)) {
@@
-2021,17
+2023,15
@@
openQuoted (CT ct, char **file)
return NOTOK;
}
return NOTOK;
}
- if ((ce->ce_fp = fopen (ce->ce_file, "w+")) == NULL) {
- content_error (ce->ce_file, ct, "unable to fopen for reading/writing");
- return NOTOK;
- }
-
if ((len = ct->c_end - ct->c_begin) < 0)
adios (NULL, "internal error(2)");
if ((len = ct->c_end - ct->c_begin) < 0)
adios (NULL, "internal error(2)");
- if (!ct->c_fp && (ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
- content_error (ct->c_file, ct, "unable to open for reading");
- return NOTOK;
+ if (! ct->c_fp) {
+ if ((ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
+ content_error (ct->c_file, ct, "unable to open for reading");
+ return NOTOK;
+ }
+ own_ct_fp = 1;
}
if ((digested = ct->c_digested))
}
if ((digested = ct->c_digested))
@@
-2153,10
+2153,18
@@
openQuoted (CT ct, char **file)
ready_to_go:
*file = ce->ce_file;
ready_to_go:
*file = ce->ce_file;
+ if (own_ct_fp) {
+ fclose (ct->c_fp);
+ ct->c_fp = NULL;
+ }
return fileno (ce->ce_fp);
clean_up:
free_encoding (ct, 0);
return fileno (ce->ce_fp);
clean_up:
free_encoding (ct, 0);
+ if (own_ct_fp) {
+ fclose (ct->c_fp);
+ ct->c_fp = NULL;
+ }
return NOTOK;
}
return NOTOK;
}
@@
-2179,7
+2187,7
@@
Init7Bit (CT ct)
int
open7Bit (CT ct, char **file)
{
int
open7Bit (CT ct, char **file)
{
- int cc, fd, len;
+ int cc, fd, len, own_ct_fp = 0;
char buffer[BUFSIZ];
/* sbeck -- handle suffixes */
char *cp;
char buffer[BUFSIZ];
/* sbeck -- handle suffixes */
char *cp;
@@
-2220,8
+2228,8
@@
open7Bit (CT ct, char **file)
}
if (cp != NULL && *cp != '\0') {
if (ce->ce_unlink) {
}
if (cp != NULL && *cp != '\0') {
if (ce->ce_unlink) {
- // Temporary file already exists, so we rename to
- // version with extension.
+ /* Temporary file already exists, so we rename to
+ version with extension. */
char *file_org = strdup(ce->ce_file);
ce->ce_file = add (cp, ce->ce_file);
if (rename(file_org, ce->ce_file)) {
char *file_org = strdup(ce->ce_file);
ce->ce_file = add (cp, ce->ce_file);
if (rename(file_org, ce->ce_file)) {
@@
-2289,9
+2297,12
@@
open7Bit (CT ct, char **file)
if ((len = ct->c_end - ct->c_begin) < 0)
adios (NULL, "internal error(3)");
if ((len = ct->c_end - ct->c_begin) < 0)
adios (NULL, "internal error(3)");
- if (!ct->c_fp && (ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
- content_error (ct->c_file, ct, "unable to open for reading");
- return NOTOK;
+ if (! ct->c_fp) {
+ if ((ct->c_fp = fopen (ct->c_file, "r")) == NULL) {
+ content_error (ct->c_file, ct, "unable to open for reading");
+ return NOTOK;
+ }
+ own_ct_fp = 1;
}
lseek (fd = fileno (ct->c_fp), (off_t) ct->c_begin, SEEK_SET);
}
lseek (fd = fileno (ct->c_fp), (off_t) ct->c_begin, SEEK_SET);
@@
-2328,10
+2339,18
@@
open7Bit (CT ct, char **file)
ready_to_go:
*file = ce->ce_file;
ready_to_go:
*file = ce->ce_file;
+ if (own_ct_fp) {
+ fclose (ct->c_fp);
+ ct->c_fp = NULL;
+ }
return fileno (ce->ce_fp);
clean_up:
free_encoding (ct, 0);
return fileno (ce->ce_fp);
clean_up:
free_encoding (ct, 0);
+ if (own_ct_fp) {
+ fclose (ct->c_fp);
+ ct->c_fp = NULL;
+ }
return NOTOK;
}
return NOTOK;
}
@@
-2472,8
+2491,7
@@
InitFTP (CT ct)
static int
openFTP (CT ct, char **file)
{
static int
openFTP (CT ct, char **file)
{
- int cachetype, fd;
- volatile int caching;
+ int cachetype, caching, fd;
int len, buflen;
char *bp, *ftp, *user, *pass;
char buffer[BUFSIZ], cachefile[BUFSIZ];
int len, buflen;
char *bp, *ftp, *user, *pass;
char buffer[BUFSIZ], cachefile[BUFSIZ];
@@
-2556,7
+2574,8
@@
openFTP (CT ct, char **file)
if (e->eb_flags) {
user = "anonymous";
if (e->eb_flags) {
user = "anonymous";
- snprintf (buffer, sizeof(buffer), "%s@%s", getusername (), LocalName ());
+ snprintf (buffer, sizeof(buffer), "%s@%s", getusername (),
+ LocalName (1));
pass = buffer;
} else {
ruserpass (e->eb_site, &username, &password);
pass = buffer;
} else {
ruserpass (e->eb_site, &username, &password);
@@
-2606,7
+2625,7
@@
openFTP (CT ct, char **file)
fflush (stdout);
fflush (stdout);
- for (i = 0; (child_id = vfork ()) == NOTOK && i < 5; i++)
+ for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++)
sleep (5);
switch (child_id) {
case NOTOK:
sleep (5);
switch (child_id) {
case NOTOK:
@@
-2748,7
+2767,7
@@
openMail (CT ct, char **file)
vec[vecp++] = e->eb_body;
vec[vecp] = NULL;
vec[vecp++] = e->eb_body;
vec[vecp] = NULL;
- for (i = 0; (child_id = vfork ()) == NOTOK && i < 5; i++)
+ for (i = 0; (child_id = vfork()) == NOTOK && i < 5; i++)
sleep (5);
switch (child_id) {
case NOTOK:
sleep (5);
switch (child_id) {
case NOTOK:
@@
-2797,15
+2816,10
@@
static int
readDigest (CT ct, char *cp)
{
int bitno, skip;
readDigest (CT ct, char *cp)
{
int bitno, skip;
- unsigned long bits;
+ uint32_t bits;
char *bp = cp;
unsigned char *dp, value, *ep;
char *bp = cp;
unsigned char *dp, value, *ep;
- unsigned char *b, *b1, *b2, *b3;
- b = (unsigned char *) &bits,
- b1 = &b[endian > 0 ? 1 : 2],
- b2 = &b[endian > 0 ? 2 : 1],
- b3 = &b[endian > 0 ? 3 : 0];
bitno = 18;
bits = 0L;
skip = 0;
bitno = 18;
bits = 0L;
skip = 0;
@@
-2827,11
+2841,11
@@
test_end:
if ((bitno -= 6) < 0) {
if (dp + (3 - skip) > ep)
goto invalid_digest;
if ((bitno -= 6) < 0) {
if (dp + (3 - skip) > ep)
goto invalid_digest;
- *dp++ = *b1;
+ *dp++ = (bits >> 16) & 0xff;
if (skip < 2) {
if (skip < 2) {
- *dp++ = *b2;
+ *dp++ = (bits >> 8) & 0xff;
if (skip < 1)
if (skip < 1)
- *dp++ = *b3;
+ *dp++ = bits & 0xff;
}
bitno = 18;
bits = 0L;
}
bitno = 18;
bits = 0L;