home *** CD-ROM | disk | FTP | other *** search
/ The Arcade BBS / arcadebbs.zip / arcadebbs / bbstools / MODS / SPV031IH.ZIP / SPV031IH.MOD < prev   
Encoding:
Text File  |  1995-06-11  |  22.6 KB  |  663 lines

  1. Papa Bear #1 @11579
  2. 7Saturday1, 7May 271, 71995 2 26:231 am
  3. 4Msg. Status:9▄ 5Please reply!
  4. 9 ▀▀▀▀▀▀▀▀▀▀▀▀
  5. ┌────────────────────────────A CEREBRUM RELEASE!─────────────────────────────┐
  6. │ Mod Name: SPV031IH.MOD     Mod Authors: 8-Ball                             │
  7. │ Difficulty: ▓▓▓▓▓▓░░░░ <<< TAKE NOTE!   Repo Man                           │
  8. │ Revision Dates: FIRST [01/10/92]        Captain EJ                         │
  9. │                 LAST  [05/26/95]        Pâpâ ßêâr  (1@11579 WW4net)        │
  10. │ WWIV Version: 4.24  [not for versions previous to 4.24!]                   │
  11. │ Files Affected: MSGBASE.C MSGBASE1.C READMAIL.C FCNS.H VARS.H              │
  12. │ Description: 8-Ball's Quote Mod! As revised by Repo Man and myself.  Code  │
  13. │from Captain EJ included.  I think this is the *best* quote mod I've seen!  │
  14. │>>> NOW WORKS WITH NON-FSE's AS WELL AS FSE's!!! Added Anonymous support.   │
  15. ╞═────────────────────────────────────═╤═───────────────────────────────────═╡
  16. │ StarPort Valhalla [   ]   -     ASV 28.8kbps  Home of the SPV mod series!  │
  17. └─────────────────────────────────────═╧═────────────────────────────────────┘
  18.  
  19.                      >>> OFFICIAL WWIV SUPPORT SITE! <<<
  20.  
  21.  Word of Warning:  You installed it, you're responsible! Make back-ups BEFORE
  22.  attempting to install this modification!  Read all text before beginning.
  23.  Again, READ THIS ENTIRE MOD >BEFORE< BEGINNING!
  24. ─────────────────────────────────────────────────────────────────────────────
  25.  LEGEND:
  26.  ==  Original Code [use this to search on]
  27.  ++  Add this Line [mods ALWAYS add stuff, don't they?]
  28.  --  Delete this Line [or comment out, its not needed]
  29.  -+  Change this Line [I usually comment these lines]
  30.  ... Skipping some code here [keeps the mod shorter]
  31. ─────────────────────────────────────────────────────────────────────────────
  32.  LONG DESCRIPTION:  The famous SPV modification redone for WWIV 4.24.  You
  33. should note that 4.24 introduced the M command at the mail prompt that will
  34. allow you reply to E-Mail to a different address than it was sent from.  For
  35. that reason, this that feature has been removed from this mod proper.  The @
  36. command will allow you to send a subboard post to a E-Mail address other than
  37. the one it originated from.
  38.   I've completely redone the docs for this.  This mod contains some
  39. improvements over the last 4.23 version ("G" revision) that I'd previous;y
  40. released.
  41. ─────────────────────────────────────────────────────────────────────────────
  42. STEP 1: Add this line the the top of MSGBASE.C
  43.  
  44. == #include "vars.h"
  45. ==
  46. == #pragma hdrstop
  47.  
  48. == #include <mem.h>
  49. == #include <errno.h>
  50. == #include "subxtr.h"
  51. ++ #include <ctype.h>                                         // SPV031IH add
  52. ==
  53. == #define ALLOW_FULLSCREEN 1
  54. ─────────────────────────────────────────────────────────────────────────────
  55. STEP 2: In MSGBASE.C, make the following changes in:
  56.         char *readfile(messagerec *m1, char *aux, long *l)
  57.  
  58. ==        return(NULL);
  59. ==      }
  60. ==      l1=filelength(f);
  61. -+      if ((b=malloca(l1+2L))==NULL) {                 // SPV031IH - add +2L
  62. ==        sh_close(f);
  63. ==        return(NULL);
  64. ==      }
  65. . . . SKIPPING SOME LINES HERE, TAKE CARE TO NOTE THE PROPER LOCATION! . . .
  66. ==        return(NULL);
  67. ==      }
  68. ==      l1=filelength(f);
  69. -+      if ((b=malloca(l1+258L))==NULL) {     // SPV031IH - change 256 to 258
  70. ==        sh_close(f);
  71. ==        return(NULL);
  72. ==      }
  73. ==      sh_read(f,(void *)b,l1);
  74. ─────────────────────────────────────────────────────────────────────────────
  75. STEP 3: Add these variable declarations in MSGBASE.C to  void inmsg(...)
  76.  
  77. ==   FILE *result;
  78. ==   struct {char tlen, ttl[81], anon; } fedit_data;
  79. == #ifdef OPT_MSG_TAG_ABILITY
  80. ==   xtrasubsnetrec *xnp;
  81. == #endif
  82. ++   FILE *pbquote;                                               // SPV031IH
  83. ++   char pb[13],pb1[161],pb2[161];                               // SPV031IH
  84. ++   int j=0;                                                     // SPV031IH
  85. ─────────────────────────────────────────────────────────────────────────────
  86. STEP 4: Still in void inmsg(...) a little ways down, make these changes
  87.  
  88. ==    outstr(get_string(627));
  89. ==    pln(maxli);
  90. ==    pl(get_string(628));
  91. ++    if (quoted) {
  92. ++      nl();
  93. ++      pl("9Type 1/Q9 in the message to view the quoted text!0");
  94. ++      nl();
  95. ++    }
  96. ==    strcpy(s,get_string(629));
  97. ==    s[thisuser.screenchars]=0;
  98. ==    pl(s);
  99. . . . JUST A LITTLE FURTHER DOWN NOW . . .
  100. ==        if (stricmp(s,get_string(942))==0) {
  101. ==          savel=0;
  102. ==          printmenu(2);
  103. ==        }
  104. // START SPV031IH BLOCK COPY
  105.         if (stricmp(s,"/Q")==0) {
  106.           if (quoted) {
  107.             sprintf(pb,"%sINPUT.MSG",syscfgovr.tempdir);
  108.             printfile(pb);
  109.           } else {
  110.             nl();
  111.             pl("6You must quote the message you're replying to to0");
  112.             pl("6use this command.  Please continue your message.0");
  113.             nl();
  114.           }
  115.         }
  116. // END SPV031IH BLOCK COPY
  117. ==        if (stricmp(s,get_string(943))==0) {
  118. ==          savel=0;
  119. ==          prt(5,get_string(630));
  120. ─────────────────────────────────────────────────────────────────────────────
  121. STEP 5: Still in void inmsg(...) a LOT further down, make these changes
  122.  
  123. ==    if (fsed) {
  124. ==      ll=filelength(i5);
  125. ==      sh_read(i5, (void *) (& (b[l1]) ),ll);
  126. ==      l1 += ll;
  127. ==      sh_close(i5);
  128. ==    } else {
  129. // START SPV031IH BLOCK COPY
  130.     if (quoted) {
  131.       sprintf(pb,"%sINPUT.MSG",syscfgovr.tempdir);
  132.       pbquote=fsh_open(pb,"rt");
  133.       if (!pbquote) {
  134.         nl();
  135.         pl("6Quote file does not exist! Notify SysOp!0");
  136.         j=0;
  137.         nl();
  138.       } else {
  139.         while (!feof(pbquote)) {
  140.           j=1;
  141.           sprintf(pb2,(fgets(pb1,160,pbquote)));
  142.           addline(b,pb2,&l1);
  143.         }
  144.       }
  145.       fsh_close(pbquote);
  146.       unlink(pb);
  147.     }
  148.     nl();
  149.     if (j)
  150.         pl("5The Quote file has been attached to your message!0");
  151. // END SPV031IH BLOCK COPY
  152. ==      for (i5=0; i5<curli; i5++)
  153. ==        addline(b,&(lin[i5*LEN]),&l1);
  154. ==    }
  155. ==
  156. == #ifdef OPT_MSG_TAG_ABILITY
  157. ─────────────────────────────────────────────────────────────────────────────
  158. STEP 6: Add these lines in MSGBASE.C
  159.  
  160. ==    if (an) {
  161. ==      strcat(s,nam(&ur,un));
  162. ==      sysoplog(s);
  163. ++      Unknown=0;                                                // SPV031IH
  164. ==    } else {
  165. ++      Unknown=1;                                                // SPV031IH
  166. ==      strcpy(s1,s);
  167. ==      strcat(s1,nam(&ur,un));
  168. ==      sysoplog(s1);
  169. ==      strcat(s,get_string(482));
  170. . . . A little farther down . . .
  171. ==    if (an) {
  172. ==      read_user(un,&ur);
  173. ==      strcpy(s2,nam(&ur,un));
  174. ++      Unknown=0;                                                // SPV031IH
  175. -+    } else {                                            // SPV031IH added {
  176. ++      Unknown=1;                                                // SPV031IH
  177. ==      strcpy(s2,get_string(482));
  178. ++    }                                                           // SPV031IH
  179. ==  } else {
  180. ==    if (net_num_max>1) {
  181. ─────────────────────────────────────────────────────────────────────────────
  182. STEP 7: Add these three functions to the end of MSGBASE.C
  183.  
  184. // SPV031IH BLOCK COPY START
  185. void extract_out2(char *org, long len, int type, long daten)
  186. {
  187.   char s[255],s1[81],s2[81],*p,buf[255],*b,tb[81],tb1[81],b1[81],pb[81],ch;
  188.   int i,ii=0,j,jj,length,qnq=1,line_control,done,k;
  189.   FILE *Output;
  190.  
  191.   printfile("QUOTE");
  192.   if (!okfsed())
  193.     pausescr();
  194.   nl();
  195.   quoted=0;
  196.   if (okfsed()) {
  197.     npr("5Do you want to select the lines to quote? 0");
  198.     if (!yn())
  199.       qnq=0;
  200.     else
  201.       outchr(12);
  202.   } else
  203.     outchr(12);
  204.   p=b=org;
  205.   sprintf(s2,"%sINPUT.MSG",syscfgovr.tempdir);
  206.   unlink(s2);
  207.   if (!hangup) {
  208.     if ((Output=fopen(s2,"w+t"))==NULL) {
  209.       sprintf(s,"6ERR2: 9Could not create 1%s9! 5(1quote file5)0");
  210.       nl();
  211.       if (so())
  212.         pl(s);
  213.       else {
  214.         ssm(1,0,s);
  215.         pl("6Could not create quote file -- SysOp notified!0");
  216.       }
  217.       nl();
  218.       return;
  219.     }
  220.     while (*p!='\r')
  221.       ++p;
  222.     *p='\0';
  223.     strcpy(s1,b);
  224.     p+=2;
  225.     len=len-(p-b);
  226.     b=p;
  227.     while (*p!='\r')
  228.       ++p;
  229.     p+=2;
  230.     len=len-(p-b);
  231.     b=p;
  232.     sprintf(pb,"%s",ctime(&daten));
  233.     sprintf(s2,"1%s7, 1%s7. 1%s7, 1%s0",
  234.            (strnncpy(pb,0,2)),
  235.            (strnncpy(pb,4,6)),
  236.            (strnncpy(pb,8,9)),
  237.            (strnncpy(pb,20,23)));
  238.     strcpy(tb1,stripcolors(strip_to_node(s1)));
  239.     properize(tb1);
  240.     if (strlen(tb1)%2!=0)
  241.       sprintf(tb," %s",tb1);
  242.     else
  243.       strcpy(tb,tb1);
  244.     jj=tb1[0]=0;
  245.     for (j=0;j<strlen(tb);j++) {
  246.       if ((toupper(tb[j])==tb[j]) &&
  247.         (isalpha(tb[j]))) {
  248.         tb1[jj]=tb[j];
  249.         tb1[jj+1]=0;
  250.         jj++;
  251.       }
  252.     }
  253.     if (!tb1[0]) {
  254.       if (tb[0]==32)
  255.         tb1[0]=tb[1];
  256.       else
  257.         tb1[0]=tb[0];
  258.       tb1[1]=0;
  259.     }
  260.     if (Unknown) {
  261.       sprintf(tb," %s",get_string(482));
  262.       strcpy(tb1,"6>2U6<0");
  263.       Unknown=0;
  264.     }
  265.     switch (type) {
  266.       case 1:
  267.         sprintf(buf,"3» 9In your E-Mail of 1%s7,9 you wrote: 3«0",s2);
  268.         break;
  269.       case 2:
  270.         sprintf(buf,
  271.          "3» 9This was forwarded from 1%s9, sent on 1%s9. 3«0",tb,s2);
  272.         break;
  273.       case 3:
  274.         sprintf(buf,
  275.                   "3» 9In a message posted 1%s7,9 you wrote: 3«0",s2);
  276.         break;
  277.       case 4:
  278.         sprintf(buf,"3» 9On 1%s7, 1%s9 said this: 3«0",s2,tb);
  279.         break;
  280.     }
  281.     length=0;
  282.     for (j=0;j<strlen(buf);j++) {
  283.       if ((buf[j]!='\003') && (buf[j-1]!='\003'))
  284.         length++;
  285.     }
  286.     jj=(39-(length/2));
  287.     fprintf(Output,"2%s%s%s0\n",charstr(jj,196),buf,charstr(jj,196));
  288.     line_control=1;
  289.     done=0;
  290.     k=78-strlen(tb1);
  291.     while ((len>0) && (!done) && (!hangup)) {
  292.       while ((strchr("\r\001",*p)==NULL) && ((p-b)<(len<253 ? len : 253)))
  293.         ++p;
  294.       if (*p=='\001')
  295.         *(p++)='\0';
  296.       *p='\0';
  297.       if ((*b!='\004') && (strchr(b,'\033')==NULL)) {
  298.         for (j=0;j<k;j++) {
  299.           if (((b[j]=='0') && (b[j-1]!='\003')) || (b[j]!='0'))
  300.             b1[j]=b[j];
  301.           else
  302.             b1[j]='7';
  303.           b1[j+1]=0;
  304.         }
  305.         if ((qnq) && (line_control>thisuser.screenlines)) {
  306.           line_control=0;
  307.           outchr(12);
  308.         }
  309.         if ((qnq) && (okansi())) {
  310.           goxy(0,line_control);
  311.           line_control++;
  312.         }
  313.         if ((ii) && (okansi()) && (qnq)) {
  314.           pl(charstr(79,32));
  315.           goxy(0,line_control-1);
  316.         }
  317.         sprintf(buf,"1%s7»9%s0",tb1,b1);
  318.         if (qnq) {
  319.           if (!okansi())
  320.             outchr(12);
  321.           pl(buf);
  322.           if (okansi()) {
  323.             goxy(0,line_control);
  324.             line_control++;
  325.           }
  326.           npr(
  327. "5Quote this line? 3(1[2Y1]es, [2n1]o, [2q1]uit, [2a1]bort3) 0");
  328.           ch=onek("QY\rNA");
  329.           switch (ch) {
  330.             case '\r':
  331.             case 'Y':
  332.               fprintf(Output,"%s\n",buf);
  333.               quoted=1;
  334.               ii=0;
  335.               line_control--;
  336.               goxy(0,line_control);
  337.               pl(charstr(79,32));
  338.               done=0;
  339.               break;
  340.             case 'N':
  341.               line_control-=2;
  342.               ii=1;
  343.               done=0;
  344.               break;
  345.             case 'A':
  346.               pl("Aborted!");
  347.               quoted=0;
  348.               done=1;
  349.               break;
  350.             default:
  351.             case 'Q':
  352.               done=1;
  353.               break;
  354.           }
  355.         } else {
  356.           fprintf(Output,"%s\n",buf);
  357.           quoted=1;
  358.         }
  359.       }
  360.       p+=2;
  361.       len=len-(p-b);
  362.       b=p;
  363.     }
  364.     nl();
  365.     pl("5Enter your reply text 3(1default6: 2My reply to this3)0");
  366.     mpl(60);
  367.     inputl(s,60);
  368.     if (!s[0])
  369.       strcpy(s,"My reply to this");
  370.     jj=(39-((strlen(s)+4)/2));
  371.     fprintf(Output,"2%s3» 4%s3 «2%s0\n",
  372.             charstr(jj,196),s,charstr(jj,196));
  373.     outchr(12);
  374.     if (!okfsed())
  375.       fprintf(Output,"\0");
  376.     fclose(Output);
  377.     if (!quoted) {
  378.       sprintf(s2,"%sINPUT.MSG",syscfgovr.tempdir);
  379.       unlink(s2);
  380.     }
  381.     irt_name[0]='\0';
  382.   }
  383.   farfree(org);
  384. }
  385.  
  386. char *strip_to_node(char *txt)
  387. {
  388.   int i,ok;
  389.   char s[81];
  390.  
  391.   if (strstr(txt,"@")!=NULL) {
  392.     ok=1;
  393.     for (i=0; i<strlen(txt); i++) {
  394.       if (ok) {
  395.         s[i]=txt[i];
  396.         s[i+1]=0;
  397.       }
  398.       if (txt[i+2]=='#')
  399.         ok=0;
  400.     }
  401.     return(s);
  402.   }
  403.   if (strstr(txt,"AT")!=NULL) {
  404.     ok=1;
  405.     for (i=2; i<strlen(txt); i++) {
  406.       if (ok) {
  407.         s[i-2]=txt[i];
  408.         s[i-1]=0;
  409.       }
  410.       if (txt[i+1]=='`')
  411.         ok=0;
  412.     }
  413.     return(s);
  414.   }
  415.   return(txt);
  416. }
  417.  
  418. char *strnncpy(char *str_parse, int start_ch, int end_ch)
  419. {
  420.   int i,j=0;
  421.   char s[255];
  422.  
  423.   if (start_ch<0)
  424.     start_ch=0;
  425.   if (end_ch>(strlen(str_parse)))
  426.     end_ch=strlen(str_parse);
  427.   for (i=start_ch;i<(end_ch+1);i++) {
  428.     s[j]=str_parse[i];
  429.     s[j+1]=0;
  430.     j++;
  431.   }
  432.   return(s);
  433. }
  434. // SPV031IH BLOCK COPY END
  435.  
  436. NOTE:  To use this function, simply call it something like:
  437.  
  438.   strcpy(s,(strnncpy("This is a test",5,8)));
  439.  
  440.   This places "is a" into the variable s.
  441. ─────────────────────────────────────────────────────────────────────────────
  442. STEP 8: Prototype the function ins FCNS.H:
  443.  
  444. == int existprint(unsigned char *fn);
  445. == void read_message(int n, int *next, int *val);
  446. == void lineadd(messagerec *m1, char *sx, char *aux);
  447. ++ void extract_out2(char *org, long len, int type, long daten);   //SPV031IH
  448. ++ char *strip_to_node(char *txt);                                 //SPV031IH
  449. ++ char *strnncpy(char *str_parse, int start_ch, int end_ch);      //SPV031IH
  450. ==
  451. == /* File: msgbase1.c */
  452. ─────────────────────────────────────────────────────────────────────────────
  453. STEP 9: Add these global variable declarations to VARS.H in the __EXTRN__
  454.         int section:
  455.  
  456. ==               use_workspace, using_modem, wfc, x_only,
  457. ==               instance,debuglevel,multitasker,tagging,tagptr,cursormove,
  458. -+              titled, abortext,quoted,Unknown;                  // SPV031IH
  459. ==
  460. == __EXTRN__ unsigned short com_speed, *csn_index, crc, *gat, modem_flag,
  461. ==                       modem_mode, modem_speed, net_sysnum, curloc, eflags;
  462. ─────────────────────────────────────────────────────────────────────────────
  463. STEP 10: In MSGBASE1.C, add this line in
  464.          void scan(int msgnum, int optype, int *nextsub)
  465.  
  466. ==    write_inst(INST_LOC_SUBS, usub[cursub].subnum, INST_FLAGS_NONE);
  467. ==    switch(optype) {
  468. ==      case 0: /* Read Prompt */
  469. ++        quoted=0;                                               // SPV031IH
  470. ==        if (E_C) {
  471. ==          sprintf(s,"1%s0:7(11-%u,^%u7)1,? 0: ",get_string(678),
  472. ==            nummsgs,msgnum);
  473. ─────────────────────────────────────────────────────────────────────────────
  474. STEP 11: In MSGBASE1.C, make the following changes in:
  475.          void scan(int msgnum, int optype, int *nextsub)
  476.  
  477. ==          optype=2;
  478. ==          msgnum=i;
  479. ==        } else
  480. ==          if (s[1]==0) {
  481. // START SPV031IH BLOCK COPY
  482.             if ((s[0]=='A') || (s[0]=='W')) {
  483.               nl();
  484.               npr("5Quote from this message? 0");
  485.               if (ny()) {
  486.                 p2=*get_post(msgnum);
  487.                 grab_quotes(&(p2.msg),subboards[curlsub].filename);
  488.                 if ((msgnum>0) && (msgnum<=nummsgs)) {
  489.                   b=readfile(&(get_post(msgnum)->msg),
  490.                             (subboards[curlsub].filename),&len);
  491.                   extract_out2(b,len,((s[0]=='A')?3:4),p2.daten);
  492.                 }
  493.               }
  494.             }
  495. // END SPV031IH BLOCK COPY
  496. ==            switch(s[0]) {
  497. ==
  498. ==              /* Find addition */
  499. ─────────────────────────────────────────────────────────────────────────────
  500. STEP 12: In MSGBASE1.C, make the following changes in:
  501.          void scan(int msgnum, int optype, int *nextsub)
  502.  
  503. ++              case '@':                                         // SPV031IH
  504. ==              case 'A':
  505. ==                if (rip_on()) {
  506. ==                  sprintf(s,"\n!|w000%c271610|e|#\r ", formery);
  507. ==                  comstr(s);
  508. . . . SKIPPING DOWN A HAIR . . .
  509. ==                    pl(get_string(679));
  510. ==                    break;
  511. ==                  }
  512. ==                }
  513. // START SPV031IH BLOCK COPY
  514.                 if (s[0]=='@') {
  515.                   nl();
  516.                   pl("4Replying to a different address!0");
  517.                   send_email();
  518.                 } else {
  519. // END SPV031IH BLOCK COPY
  520. ==                  if ((lcs()) || (ss.ability & ability_read_post_anony) ||
  521. ==                     (get_post(msgnum)->anony==0))
  522. ─────────────────────────────────────────────────────────────────────────────
  523. STEP 13: Make these changes in MSGBASE1.C, function:
  524.          void scan(int msgnum, int optype, int *nextsub)
  525.  
  526. ==            if ((msgs[msgnum].anony & anony_sender) &&
  527. ==              ((syscfg.sl[actsl].ability & ability_read_post_anony)==0)) {
  528. ==                strcat(s,get_string(482));
  529. ++              Unknown=1;                                        // SPV031IH
  530. ==            } else {
  531. ++              Unknown=0;                                        // SPV031IH
  532. ==              b=readfile(&(msgs[msgnum].msg),(subboards[curlsub].filename),
  533. ==                         &len);
  534. ─────────────────────────────────────────────────────────────────────────────
  535. STEP 14: Now in READMAIL.C make these changes in void readmail(void)
  536.  
  537. ==            pl(get_string(715));
  538. ==            nl();
  539. ==            break;
  540. ==          }
  541. ==          nln(2);
  542. // START SPV031IH BLOCK COPY
  543.           nl();
  544.           npr("5Quote this message?0 ");
  545.           if (ny()) {
  546.             b=readfile(&(m.msg),"EMAIL",&len);
  547.             extract_out2(b,len,2,m.daten);
  548.             nl();
  549.             pl("6Forwarding this E-Mail.0");
  550.             send_email();
  551.             break;
  552.           }
  553. // END SPV031IH BLOCK COPY
  554. ==          prt(2,get_string(716));
  555. ==          input(s,75);
  556. . . . SKIPPING SOME MORE LINES! . . .
  557. ==        case 'A':
  558. ==        case 'S':
  559. ==        case 'M':
  560. // START SPV031IG BLOCK READ
  561.           nl();
  562.           npr("5Quote from this message? 0");
  563.           if (ny()) {
  564.             grab_quotes(&(m.msg),"EMAIL");
  565.             b=readfile(&(m.msg),"EMAIL",&len);
  566.             extract_out2(b,len,((ch=='M')?2:1),m.daten);
  567.             if (ch=='M') {
  568.               nl();
  569.               pl("5Forwarding this E-Mail!0");
  570.             }
  571.           }
  572. // END SPV031IG BLOCK READ
  573. ==          if (rip_on()) {
  574. ==            sprintf(s,"\n!|w000%c271610|e|#\r ", formery);
  575. . . .SKIP DOWN JUST A FEW MORE LINES . . .
  576. ==            i2=0;
  577. ==            break;
  578. ==          } else if (m.fromuser!=65535) {
  579. --            grab_quotes(&(m.msg),"EMAIL");     // SPV031IH delete this line
  580. ==            if (ch=='M') {
  581. ─────────────────────────────────────────────────────────────────────────────
  582. STEP 15: Make these changes throughout READMAIL.C
  583.  
  584. ==      sprintf(s,"2%3d 7%c0 ",i+1,okansi()?'│':'|');
  585. ==      if ((m.anony & anony_sender) &&
  586. ==          ((ss.ability & ability_read_email_anony)==0)) {
  587. ==        strcat(s,get_string(482));
  588. ++        Unknown=1;                                              // SPV031IH
  589. ==      } else {
  590. ++        Unknown=0;                                              // SPV031IH
  591. ==        if (m.fromsys==0) {
  592. ==          if (m.fromuser==65535) {
  593. . . . SKIPPING DOWN . . .
  594. ==                  strcpy(s,nam1(&thisuser,usernum,net_sysnum));
  595. -+                if (m.anony & anony_receiver) {         // SPV031IH added {
  596. ==                  strcpy(s,get_string(482));
  597. ++                  Unknown=1;
  598. ++                } else
  599. ++                  Unknown=0;
  600. ==                strcat(s,get_string(713));
  601. . . . DOWN SOME MORE . . .
  602. ==            sprintf(s,"%s: %s",net_name,nam1(&thisuser,usernum,net_sysnum));
  603. ==          else
  604. ==            strcpy(s,nam1(&thisuser,usernum,net_sysnum));
  605. -+          if (m.anony & anony_receiver) {               // SPV031IH added {
  606. ==            strcpy(s,get_string(482));
  607. ++            Unknown=1;
  608. ++          } else
  609. ++            Unknown=0;
  610. ==          strcat(s,get_string(713));
  611. . . .YEP, GO DOWN SOME MORE! (YES IT LOOKS THE SAME AS ABOVE). . .
  612. ==            sprintf(s,"%s: %s",net_name,nam1(&thisuser,usernum,net_sysnum));
  613. ==          else
  614. ==            strcpy(s,nam1(&thisuser,usernum,net_sysnum));
  615. -+          if (m.anony & anony_receiver) {               // SPV031IH added {
  616. ==            strcpy(s,get_string(482));
  617. ++            Unknown=1;
  618. ++          } else
  619. ++            Unknown=0;
  620. ==          strcat(s,get_string(713));
  621. ==          strcat(s,date());
  622. ─────────────────────────────────────────────────────────────────────────────
  623. STEP 16: In NEWUSER.C, make this change in: void properize(char *s)
  624.  
  625. ==  for (i=0;i<strlen(s);i++) {
  626. ==    if ((i==0) || ((i>0) && ((s[i-1]==' ') ||
  627. ++        (s[i-1]=='-') ||                                        // SPV031IH
  628. ==        (s[i-1]=='.')))) {
  629. ─────────────────────────────────────────────────────────────────────────────
  630. STEP 17: Make a file in your GFILES and call it QUOTE.MSG.  Mine looks like
  631.         this, and yours should be similar!
  632.  
  633. QUOTE.MSG
  634. ---------
  635.  
  636.     You are about to send a msg/e-mail with a quotation in it.  You should
  637.     remove unnecessary lines, including taglines and signoff macros.  This
  638.                         helps reduce network LD costs.
  639.  
  640. ─────────────────────────────────────────────────────────────────────────────
  641. STEP 18: Recompile this beast, and enjoy your new quoting!
  642. ─────────────────────────────────────────────────────────────────────────────
  643.   Well, this is a complete overhauled mod for 4.24.  I've installed it forst
  644. thing on my virgin 4.24 system 'cause this is the most installation intensive
  645. mod I make.
  646.   The word is, it works fine...
  647.  
  648.     This mod is copyright 1993-1995 by Tracy Baker, aka Papa Bear, and is
  649.  distributed as freeware.  Permission is granted to distribute and post this
  650.    mod on BBS systems and online services, provided no alterations are made
  651.   (removal of message headers/taglines allowed).  This mod may contain some
  652.   parts of WWIV source code, which is copyright 1988-1994 by Wayne Bell and
  653.     licensed only to registered users of WWIV.  Use of WWIV source without
  654.      registration constitutes a license violation and could lead to legal
  655.                         prosecution and certain doom.
  656.    Shareware distributors and CD-ROM publishers may not distribute this mod
  657.  without express written permission of the Author or WWIV Software Services.
  658.  
  659. 7-9=1*6>2Pâpâ ßêâr6<1*9=7-0
  660.  
  661. ---
  662. 3This tagline is made from recycled electrons.
  663.