Only in pine4.44: .bld.hlp
Only in pine4.44: bin
diff -rc OP/pine4.44/imap/src/c-client/mail.h pine4.44/imap/src/c-client/mail.h
*** OP/pine4.44/imap/src/c-client/mail.h	Tue Nov 13 19:50:10 2001
--- pine4.44/imap/src/c-client/mail.h	Thu Apr 11 10:21:36 2002
***************
*** 621,626 ****
--- 621,627 ----
      unsigned long bytes;	/* size of text in octets */
    } size;
    char *md5;			/* MD5 checksum */
+   unsigned short topal_hack;    /* set to 1 if topal has wrecked the sending */
  };
  
  
Only in pine4.44/pine: date.c
diff -rc OP/pine4.44/pine/pine.h pine4.44/pine/pine.h
*** OP/pine4.44/pine/pine.h	Tue Jan  8 20:55:49 2002
--- pine4.44/pine/pine.h	Thu Apr 11 10:21:36 2002
***************
*** 63,69 ****
  #ifndef _PINE_INCLUDED
  #define _PINE_INCLUDED
  
! #define PINE_VERSION		"4.44"
  #define	PHONE_HOME_VERSION	"-count"
  #define	PHONE_HOME_HOST		"docserver.cac.washington.edu"
  
--- 63,69 ----
  #ifndef _PINE_INCLUDED
  #define _PINE_INCLUDED
  
! #define PINE_VERSION		"4.44T"
  #define	PHONE_HOME_VERSION	"-count"
  #define	PHONE_HOME_HOST		"docserver.cac.washington.edu"
  
diff -rc OP/pine4.44/pine/send.c pine4.44/pine/send.c
*** OP/pine4.44/pine/send.c	Tue Jan  8 20:59:37 2002
--- pine4.44/pine/send.c	Thu Apr 11 11:00:40 2002
***************
*** 4695,4700 ****
--- 4695,4710 ----
      pbf = save_previous_pbuf;
      g_rolenick = NULL;
  
+     if ((*body)->type == TYPEMULTIPART 
+ 	&& (*body)->topal_hack == 1)
+       /* This was a single part message which Topal mangled. */
+       (*body)->type = TYPETEXT;
+     if ((*body)->type == TYPEMULTIPART
+ 	&& (*body)->topal_hack != 1)
+       /* Topal mangled a multipart message.  So the first nested part
+ 	 is really TYPETEXT. */
+       (*body)->nested.part->body.type = TYPETEXT;
+     
      dprint(4, (debugfile, "=== send returning ===\n"));
  }
  
***************
*** 5956,5968 ****
  				  ;
  
  				rfc822_parse_content_header(nb,ucase(buf+8),s);
! 				if(nb->type == TYPETEXT
! 				   && nb->subtype
  				   && (!b->subtype 
  				       || strucmp(b->subtype, nb->subtype))){
  				    if(b->subtype)
  				      fs_give((void **) &b->subtype);
  
  				    b->subtype  = nb->subtype;
  				    nb->subtype = NULL;
  				      
--- 5966,5978 ----
  				  ;
  
  				rfc822_parse_content_header(nb,ucase(buf+8),s);
! 				if(nb->subtype
  				   && (!b->subtype 
  				       || strucmp(b->subtype, nb->subtype))){
  				    if(b->subtype)
  				      fs_give((void **) &b->subtype);
  
+ 				    b->type     = nb->type;
  				    b->subtype  = nb->subtype;
  				    nb->subtype = NULL;
  				      
***************
*** 5970,5975 ****
--- 5980,5987 ----
  				    b->parameter = nb->parameter;
  				    nb->parameter = NULL;
  				    mail_free_body_parameter(&nb->parameter);
+ 				    if (b->type != TYPETEXT)
+ 				      b->topal_hack = 1;
  				}
  
  				mail_free_body(&nb);
***************
*** 8506,8522 ****
    dprint(4, (debugfile, "-- pine_encode_body: %d\n", body ? body->type : 0));
    if (body) switch (body->type) {
    case TYPEMULTIPART:		/* multi-part */
!     if (!body->parameter) {	/* cookie not set up yet? */
!       char tmp[MAILTMPLEN];	/* make cookie not in BASE64 or QUOTEPRINT*/
!       sprintf (tmp,"%ld-%ld-%ld=:%ld",gethostid (),random (),time (0),
! 	       getpid ());
!       body->parameter = mail_newbody_parameter ();
!       body->parameter->attribute = cpystr ("BOUNDARY");
!       body->parameter->value = cpystr (tmp);
!     }
!     part = body->nested.part;	/* encode body parts */
!     do pine_encode_body (&part->body);
!     while (part = part->next);	/* until done */
      break;
  /* case MESSAGE:	*/	/* here for documentation */
      /* Encapsulated messages are always treated as text objects at this point.
--- 8518,8536 ----
    dprint(4, (debugfile, "-- pine_encode_body: %d\n", body ? body->type : 0));
    if (body) switch (body->type) {
    case TYPEMULTIPART:		/* multi-part */
!     if (body->topal_hack != 1){
!       if (!body->parameter) {	/* cookie not set up yet? */
! 	char tmp[MAILTMPLEN];	/* make cookie not in BASE64 or QUOTEPRINT*/
! 	sprintf (tmp,"%ld-%ld-%ld=:%ld",gethostid (),random (),time (0),
! 		 getpid ());
! 	body->parameter = mail_newbody_parameter ();
! 	body->parameter->attribute = cpystr ("BOUNDARY");
! 	body->parameter->value = cpystr (tmp);
!       }
!       part = body->nested.part;	/* encode body parts */
!       do pine_encode_body (&part->body);
!       while (part = part->next);	/* until done */
!     }
      break;
  /* case MESSAGE:	*/	/* here for documentation */
      /* Encapsulated messages are always treated as text objects at this point.
***************
*** 8688,8694 ****
  
      dprint(4, (debugfile, "-- pine_rfc822_output_body: %d\n",
  	       body ? body->type : 0));
!     if(body->type == TYPEMULTIPART) {   /* multipart gets special handling */
  	part = body->nested.part;	/* first body part */
  					/* find cookie */
  	for (param = body->parameter; param && !cookie; param = param->next)
--- 8702,8709 ----
  
      dprint(4, (debugfile, "-- pine_rfc822_output_body: %d\n",
  	       body ? body->type : 0));
!     if(body->type == TYPEMULTIPART
!        && body->topal_hack != 1) {   /* multipart gets special handling */
  	part = body->nested.part;	/* first body part */
  					/* find cookie */
  	for (param = body->parameter; param && !cookie; param = param->next)
***************
*** 8741,8747 ****
  	 * Convert text pieces to canonical form
  	 * BEFORE applying any encoding (rfc1341: appendix G)...
  	 */
! 	if(body->type == TYPETEXT){
  	    gf_link_filter(gf_local_nvtnl, NULL);
  
  #if defined(DOS) || defined(OS2)
--- 8756,8763 ----
  	 * Convert text pieces to canonical form
  	 * BEFORE applying any encoding (rfc1341: appendix G)...
  	 */
! 	if(body->type == TYPETEXT
! 	   | (body->type == TYPEMULTIPART && body->topal_hack == 1)){
  	    gf_link_filter(gf_local_nvtnl, NULL);
  
  #if defined(DOS) || defined(OS2)
***************
*** 8845,8859 ****
  			      ? body->subtype
  			      : rfc822_default_subtype (body->type))))
  	  return(pwbh_finish(0, so));
! 	    
  	if (param){
! 	    do
! 	      if(!(so_puts(so, "; ")
! 		   && rfc2231_output(so, param->attribute, param->value,
! 				     (char *) tspecials,
! 				     ps_global->VAR_CHAR_SET)))
! 		return(pwbh_finish(0, so));
! 	    while (param = param->next);
  	}
  	else if(!so_puts(so, "; CHARSET=US-ASCII"))
  	  return(pwbh_finish(0, so));
--- 8861,8887 ----
  			      ? body->subtype
  			      : rfc822_default_subtype (body->type))))
  	  return(pwbh_finish(0, so));
! 	
  	if (param){
! 	  do
! 	    if(body->topal_hack == 1 
! 	       && !struncmp(param->attribute, "protocol", 9))
! 	      {
! 		if(!(so_puts(so, "; \015\012\011")
! 		     && rfc2231_output(so, param->attribute, param->value,
! 				       (char *) tspecials,
! 				       ps_global->VAR_CHAR_SET)))
! 		  return(pwbh_finish(0, so));
! 	      }
! 	    else
! 	      {
! 		if(!(so_puts(so, "; ")
! 		     && rfc2231_output(so, param->attribute, param->value,
! 				       (char *) tspecials,
! 				       ps_global->VAR_CHAR_SET)))
! 		  return(pwbh_finish(0, so));
! 	      }
! 	  while (param = param->next);
  	}
  	else if(!so_puts(so, "; CHARSET=US-ASCII"))
  	  return(pwbh_finish(0, so));
***************
*** 9111,9117 ****
      long  l = 0L;
      PART *part;
  
!     if(body->type == TYPEMULTIPART) {   /* multipart gets special handling */
  	part = body->nested.part;	/* first body part */
  	do				/* for each part */
  	  l += send_body_size(&part->body);
--- 9139,9146 ----
      long  l = 0L;
      PART *part;
  
!     if(body->type == TYPEMULTIPART
!        && body->topal_hack != 1) {   /* multipart gets special handling */
  	part = body->nested.part;	/* first body part */
  	do				/* for each part */
  	  l += send_body_size(&part->body);
