Removed the split feature of send.
[mmh] / uip / sendsbr.c
index 772c006..f7c2a08 100644 (file)
@@ -30,7 +30,6 @@ int debugsw = 0;  /* global */
 int forwsw  = 1;
 int inplace = 1;
 int pushsw  = 0;
-int splitsw = -1;
 int unique  = 0;
 int verbsw  = 0;
 
@@ -62,7 +61,6 @@ static void alert (char *, int);
 static int tmp_fd (void);
 static void anno (int, struct stat *);
 static void annoaux (int);
-static int splitmsg (char **, int, char *, struct stat *, int);
 static int sendaux (char **, int, char *, struct stat *);
 
 static int attach(char *, char *, int);
@@ -81,7 +79,6 @@ sendsbr (char **vec, int vecp, char *drft, struct stat *st,
 {
        int status;
        char buffer[BUFSIZ], file[BUFSIZ];
-       struct stat sts;
        char *original_draft;  /* name of original draft file */
        char *p;  /* string pointer for building file name */
 
@@ -135,16 +132,7 @@ sendsbr (char **vec, int vecp, char *drft, struct stat *st,
                        drft = file;
                }
 
-               /*
-                * Check if we need to split the message into
-                * multiple messages of type "message/partial".
-                */
-               if (splitsw >= 0 && !distfile && stat (drft, &sts) != NOTOK
-                               && sts.st_size >= CPERMSG) {
-                       status = splitmsg (vec, vecp, drft, st, splitsw) ? NOTOK : OK;
-               } else {
-                       status = sendaux (vec, vecp, drft, st) ? NOTOK : OK;
-               }
+               status = sendaux (vec, vecp, drft, st) ? NOTOK : OK;
 
                /* rename the original draft */
                if (rename_drft && status == OK &&
@@ -559,243 +547,6 @@ make_mime_composition_file_entry(char *file_name, int attachformat)
 }
 
 /*
- * Split large message into several messages of
- * type "message/partial" and send them.
- */
-
-static int
-splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
-{
-       int compnum, nparts, partno, state, status;
-       long pos, start;
-       time_t clock;
-       char *cp, *dp, buffer[BUFSIZ], msgid[BUFSIZ];
-       char subject[BUFSIZ];
-       char name[NAMESZ], partnum[BUFSIZ];
-       FILE *in;
-
-       if ((in = fopen (drft, "r")) == NULL)
-               adios (drft, "unable to open for reading");
-
-       cp = dp = NULL;
-       start = 0L;
-
-       /*
-        * Scan through the message and examine the various header fields,
-        * as well as locate the beginning of the message body.
-        */
-       for (compnum = 1, state = FLD;;) {
-               switch (state = m_getfld (state, name, buffer, sizeof(buffer), in)) {
-                       case FLD:
-                       case FLDPLUS:
-                       case FLDEOF:
-                               compnum++;
-
-                               /*
-                                * This header field is discarded.
-                                */
-                               if (!mh_strcasecmp (name, "Message-ID")) {
-                                       while (state == FLDPLUS)
-                                               state = m_getfld (state, name, buffer, sizeof(buffer), in);
-                               } else if (uprf (name, XXX_FIELD_PRF)
-                                       || !mh_strcasecmp (name, VRSN_FIELD)
-                                       || !mh_strcasecmp (name, "Subject")
-                                       || !mh_strcasecmp (name, "Encrypted")) {
-                                       /*
-                                        * These header fields are copied
-                                        * to the enclosed header of the
-                                        * first message in the collection
-                                        * of message/partials.  For the
-                                        * "Subject" header field,
-                                        * we also record it, so that
-                                        * a modified version of it,
-                                        * can be copied to the header
-                                        * of each messsage/partial in
-                                        * the collection.
-                                        */
-                                       if (!mh_strcasecmp (name, "Subject")) {
-                                               size_t sublen;
-
-                                               strncpy (subject, buffer, BUFSIZ);
-                                               sublen = strlen (subject);
-                                               if (sublen > 0 && subject[sublen - 1] == '\n')
-                                                       subject[sublen - 1] = '\0';
-                                       }
-
-                                       dp = add (concat (name, ":", buffer, NULL), dp);
-                                       while (state == FLDPLUS) {
-                                               state = m_getfld (state, name, buffer, sizeof(buffer), in);
-                                               dp = add (buffer, dp);
-                                       }
-                               } else {
-                                       /*
-                                        * These header fields are
-                                        * copied to the header of
-                                        * each message/partial in
-                                        * the collection.
-                                        */
-                                       cp = add (concat (name, ":", buffer, NULL), cp);
-                                       while (state == FLDPLUS) {
-                                               state = m_getfld (state, name, buffer, sizeof(buffer), in);
-                                               cp = add (buffer, cp);
-                                       }
-                               }
-
-                               if (state != FLDEOF) {
-                                       start = ftell (in) + 1;
-                                       continue;
-                               }
-                               /* else fall... */
-
-                  case BODY:
-                  case BODYEOF:
-                  case FILEEOF:
-                               break;
-
-                  case LENERR:
-                  case FMTERR:
-                               adios (NULL, "message format error in component #%d", compnum);
-
-                  default:
-                               adios (NULL, "getfld () returned %d", state);
-               }
-
-               break;
-       }
-       if (cp == NULL)
-               adios (NULL, "headers missing from draft");
-
-       nparts = 1;
-       pos = start;
-       while (fgets (buffer, sizeof(buffer) - 1, in)) {
-               long len;
-
-               if ((pos += (len = strlen (buffer))) > CPERMSG) {
-                       nparts++;
-                       pos = len;
-               }
-       }
-
-       /* Only one part, nothing to split */
-       if (nparts == 1) {
-               free (cp);
-               if (dp)
-                       free (dp);
-
-               fclose (in);
-               return sendaux (vec, vecp, drft, st);
-       }
-
-       if (!pushsw) {
-               printf ("Sending as %d Partial Messages\n", nparts);
-               fflush (stdout);
-       }
-       status = OK;
-
-       vec[vecp++] = "-partno";
-       vec[vecp++] = partnum;
-       if (delay == 0)
-               vec[vecp++] = "-queued";
-
-       time (&clock);
-       snprintf (msgid, sizeof(msgid), "<%d.%ld@%s>",
-                               (int) getpid(), (long) clock, LocalName());
-
-       fseek (in, start, SEEK_SET);
-       for (partno = 1; partno <= nparts; partno++) {
-               char tmpdrf[BUFSIZ];
-               FILE *out;
-
-               char *cp = m_mktemp2(drft, invo_name, NULL, &out);
-               if (cp == NULL) {
-                       adios (drft, "unable to create temporary file for");
-               }
-               strncpy(tmpdrf, cp, sizeof(tmpdrf));
-               chmod (tmpdrf, 0600);
-
-               /*
-                * Output the header fields
-                */
-               fputs (cp, out);
-               fprintf (out, "Subject: %s (part %d of %d)\n", subject, partno, nparts);
-               fprintf (out, "%s: %s\n", VRSN_FIELD, VRSN_VALUE);
-               fprintf (out, "%s: message/partial; id=\"%s\";\n", TYPE_FIELD, msgid);
-               fprintf (out, "\tnumber=%d; total=%d\n", partno, nparts);
-               fprintf (out, "%s: part %d of %d\n\n", DESCR_FIELD, partno, nparts);
-
-               /*
-                * If this is the first in the collection, output the
-                * header fields we are encapsulating at the beginning
-                * of the body of the first message.
-                */
-               if (partno == 1) {
-                       if (dp)
-                               fputs (dp, out);
-                       fprintf (out, "Message-ID: %s\n", msgid);
-                       fprintf (out, "\n");
-               }
-
-               pos = 0;
-               for (;;) {
-                       long len;
-
-                       if (!fgets (buffer, sizeof(buffer) - 1, in)) {
-                               if (partno == nparts)
-                                       break;
-                               adios (NULL, "premature eof");
-                       }
-
-                       if ((pos += (len = strlen (buffer))) > CPERMSG) {
-                               fseek (in, -len, SEEK_CUR);
-                               break;
-                       }
-
-                       fputs (buffer, out);
-               }
-
-               if (fflush (out))
-                       adios (tmpdrf, "error writing to");
-
-               fclose (out);
-
-               if (!pushsw && verbsw) {
-                       printf ("\n");
-                       fflush (stdout);
-               }
-
-               /* Pause here, if a delay is specified */
-               if (delay > 0 && 1 < partno && partno <= nparts) {
-                       if (!pushsw) {
-                               printf ("pausing %d seconds before sending part %d...\n",
-                                               delay, partno);
-                               fflush (stdout);
-                       }
-                       sleep ((unsigned int) delay);
-               }
-
-               snprintf (partnum, sizeof(partnum), "%d", partno);
-               status = sendaux (vec, vecp, tmpdrf, st);
-               unlink (tmpdrf);
-               if (status != OK)
-                       break;
-
-               /*
-                * This is so sendaux will only annotate
-                * the altmsg the first time it is called.
-                */
-               annotext = NULL;
-       }
-
-       free (cp);
-       if (dp)
-               free (dp);
-
-       fclose (in);  /* close the draft */
-       return status;
-}
-
-
-/*
  * Annotate original message, and
  * call `postproc' to send message.
  */