#include <string.h>
#include <ctype.h>


#include "extern.h"

filrcv(junle,title,react)
      char junle[];
      char title[];
      char react[];
    { char kanflg,*chp,rexx[2];    /* ｶﾝｼﾞ ﾌﾞﾝｼｮｳ ﾋｮｳｼﾞ ﾓｼﾞﾚﾂ ,msg ﾃﾞｲﾚｸﾄﾘ */
      char tostn[9],fwd_flg[2];        /* mail ｵｸﾘｻｷ ｱｲﾃｷｮｸ call */
      int  fnoi , i , j = 0,iz;           /* file No. & work ｼﾋｮｳ */
      unsigned long f_size;             /* ﾌｧｲﾙ ｶｷｺﾐ ﾓｼﾞｽｳ */
      long fzptr;
      
      if ( ! mail ) { if ( ! ( fnoi = makfno() ) ) return(0); }

  for ( iz = 0 ; iz < 2 ; iz++ )
    {
      if ( ! mail )
         {  
	    makfname("MSG",fnoi,fname);
                                       /* ﾒｯｾｰｼﾞ ﾌｧｲﾙﾒｲ No. ﾍﾝｼｭｳ  */
            if ( iz )  
             { 
	       makfname(junle,fnoi,fname);
             }
         }
                           
      /* ﾒｯｾｰｼﾞ ｼﾞｭｼﾝ */
 
      f_size = 0L ; kanflg = ' ' ;
      strcpy(ssent,"メッセージを入力して下さい ( 終了は 行頭で /E   キャンセルは 行頭で .. )\n");
      if ( exp_flg ) strcpy(ssent,"入力して下さい\n");
      if ((! strncmp(junle,"PDS",3)) && (! strcmp(react,"  ")))
         { if (iz) strcpy(ssent,"プログラム本体を入力して下さい ( 終了は 行頭で  /E  キャンセルは 行頭で .. )\n");
           else   {strcpy(ssent,"プログラムの紹介や使用法を入力して下さい\n");
                   strcat(ssent,"プログラム本体は、この後入力していただきますので、ここでは入力しないで下さい\n");
                   strcat(ssent," ( 終了は 行頭で /E  キャンセルは 行頭で .. )\n");
                  }
         }  
      if ((! strncmp(junle,"DAT",3)) && (! strcmp(react,"  ")))
         { if (iz) strcpy(ssent,"データ本体を入力して下さい ( 終了は 行頭で /E  キャンセルは 行頭で .. )\n");
           else   {strcpy(ssent,"これからアップロードするデータの簡単な紹介を入力して下さい\n");
                   strcat(ssent,"データ本体は、この後入力していただきますので、ここでは入力しないで下さい\n");
                   strcat(ssent," ( 終了は 行頭で /E   キャンセルは 行頭で ..  )\n");
                  }
         }  
      rsout();          /* ｶﾞｲﾀﾞﾝｽ ﾋｮｳｼﾞ */
                
      fpw = fopen(temp_fil,"w");    /* ﾒｯｾｰｼﾞ ﾌｧｲﾙ open */
      if (fpw == NULL)  return(0);

      nwdate();                 /* ﾋｽﾞｹ ･ ｼﾞｺｸ ﾊｱｸ */
      strcpy(rexx," ");
      if (! strcmp(react,"Re") )  strcpy(rexx,">");
      fprintf(fpw,"%s%s%s%s  From %s %s %s      \n\n",junle,react,rexx,title,hiscall,nowdate,nowtime);
                                /* ﾍｯﾀﾞ･ﾃﾞｰﾀ ｶｷﾀﾞｼ */

	  kanflg = 'T';                
      while(1)
          { rsin(0);
            if ( j == 1 && *(rsent) == '/' && (*(rsent + 1) == 'E' || *(rsent + 1) == 'e' ) && *(rsent + 2) == '\n' ) break;
              /* ﾏｴ ﾉ ｷﾞｮｳ ｶﾞ cr ﾃﾞ ｵﾜﾘ (j==1) ｶﾂ /E ﾃﾞ ｱﾚﾊﾞ ｶｷｺﾐ ｶﾝﾘｮｳ */       
          
            if ( j == 1 && *(rsent) == '.' && *(rsent + 1) == '.' && *(rsent + 2) == '\n')
               { fclose(fpw);
                 sprintf(ssent,"--- 書きこみがキャンセルされました ---\n");
				 if ( exp_flg ) strcpy(ssent,"--- ｷｬﾝｾﾙ\n");
                 rsout(); 

                 /* ｶｷｺﾐ ｷｬﾝｾﾙ ｼｮﾘ */
				 if ( ! mail )
					{
                     fzptr = fnoi;
                     fpw = fopen(KANRI_FIL,"r+");       /* ｶﾝﾘ ﾌｧｲﾙ ﾓﾄ ﾓﾄﾞｼ */
                     if (fpw == NULL) return(0);
                     fseek(fpw,fzptr,0);
                     fbuff[0] = '0'; fbuff[1] = NULL;
                     fputs(fbuff,fpw);        
                     fclose(fpw);
                 
                          /* ﾒｯｾｰｼﾞ ﾌｧｲﾙ ｻｸｼﾞｮ */
		     makfname("MSG",fnoi,fname); 	             
                     remove(fname);
                                       /* PDS ﾌｧｲﾙ ｻｸｼﾞｮ */
                     if ( iz ) {
			         makfname("PDS",fnoi,fname);
                               remove(fname);
			         makfname("DAT",fnoi,fname);
                               remove(fname);  }
                    }
                 return(0);   }
              /* ﾏｴ ﾉ packet ｶﾞ cr ﾃﾞ ｵﾜﾘ (j==1) ｶﾂ .. cr ﾃﾞ ｱﾚﾊﾞ ｶｷｺﾐ ｷｬﾝｾﾙ */       
            j = strlen(rsent) - 1;      /* ﾓｼﾞ ﾁｮｳ ﾉ ｹｲｻﾝ */

            if ( fputs(rsent,fpw) == EOF ) /* ﾌｧｲﾙ ﾍﾉ ｶｷｺﾐ */
               { fclose(fpw); break;                 }
                        
            if (kanji) kanflg = 'J';    /* ｶﾝｼﾞ ｹﾝｼｭﾂ */

            if ( j >= 0 && rsent[j] == '\n') j = 1; else j = 0;
                                        /* cr ﾃﾞ ｼｭｳﾘｮｳ ﾉ ﾊｱｸ */
            f_size += strlen(rsent); if (j) f_size--;  /* ﾓｼﾞ ｽｳ ｹｲｻﾝ */
          }
      fclose(fpw);

   /* ﾌｧｲﾙ ｻｲｽﾞ ｦ 1recﾒ ﾍｯﾀﾞ ﾚｺｰﾄﾞ ﾆ ｶｷﾀﾞｼ */      
      if ( f_size > 99999 ) { f_size = 99999; }
      fpw = fopen(temp_fil,"r+");
      fseek(fpw,72L,0);
      fprintf(fpw,"%5ld",f_size);
      fclose(fpw);

      if ( ! mail ) { printf("writed file = %d\n",fnoi); }  
                                                
	  ledit();

      /* ｼｭｳﾘｮｳ ﾒｯｾｰｼﾞ ｿｳｼﾝ */

      sprintf(ssent,"=== しばらくお待ちください ===\n");
      if ( exp_flg ) strcpy(ssent,"=== お待ちください ===\n");
      rsout();
      
      if ( ! mail ) { fmove(fname); remove(temp_fil); }
      
      if ( ! strncmp(nowjle,"PDS",3) && ! strcmp(react,"  "))  continue;
      if ( ! strncmp(nowjle,"DAT",3) && ! strcmp(react,"  "))  continue;
      break;
    }

      /* ﾍｯﾀﾞ ﾌｧｲﾙ ﾂｲｶ ｺｳｼﾝ */               
    
      if ( ! mail )
      {    fpw = fopen(HDR_FIL,"a");
           if (fpw == NULL)  return(0);
           fprintf(fpw,"%04d %s%s%s  %s%s%s%5ld %c %s%s        %s\n",fnoi,junle,react,title,hiscall,nowdate,nowtime,f_size,kanflg,nowdate,nowtime,junle);
                                /* ﾍｯﾀﾞ･ﾃﾞｰﾀ ｶｷﾀﾞｼ */
           fclose(fpw);
	      sprintf(ssent,"*** 書きこみを完了しました ***\n");
    	  if ( exp_flg ) strcpy(ssent,"*** 書込完了 ***\n");
		  rsout();
           return(0);
      }

  /* mail ｶｷｺﾐ */
      iz = 0; i = -1;
      while(1)
      { j = 0;

        strcpy(fwd_flg," ");
        while(1)
        { i++;
          chp = (tocall + i);
          if ( *chp == '\n' || *chp == NULL || *chp == 0x2c || *chp == 0x3b )
             break;

     /*     if ( *chp == '#' )   { strcpy(fwd_flg,"F"); continue; }  */
          if ( j < 8 ) { *(tostn + j) = *chp; j++; }
        }

        for ( ; j < 8 ; j++ ) { *(tostn + j) = ' '; }
        *(tostn + 8) = NULL;

        if ( ! ( fnoi = makfno() ) ) { return(0); }

        makfname("MSG",fnoi,fname);
                                       /* ﾒｯｾｰｼﾞ ﾌｧｲﾙﾒｲ No. ﾍﾝｼｭｳ  */
   /* tocall ｦ 1recﾒ ﾍｯﾀﾞ ﾚｺｰﾄﾞ ﾆ ｶｷﾀﾞｼ */      
        fpw = fopen(temp_fil,"r+");
        rewind(fpw);
   /*     if ( ! strcmp(fwd_flg,"F") ) ( *(tostn + 6) = '#' );  */
        fprintf(fpw,"%s",tostn);
        fclose(fpw);
        fmove(fname);

   /*     *(tostn + 6) = ' ';  */
        fpw = fopen(MAIL_HDR,"a");
        if (fpw == NULL)  return(0);
        fprintf(fpw,"%04d %s%s%s  %s%s%s%5ld %c%s%s%s\n",fnoi,tostn,react,title,hiscall,nowdate,nowtime,f_size,kanflg,fwd_flg,nowdate,nowtime);
                                /* ﾍｯﾀﾞ･ﾃﾞｰﾀ ｶｷﾀﾞｼ */
        fclose(fpw);
        iz++;      
        if ( *chp == '\n' || *chp == NULL || iz > 9 ) break;
        }
      remove(temp_fil);

      sprintf(ssent,"*** 書きこみを完了しました ***\n");
      if ( exp_flg ) strcpy(ssent,"*** 書込完了 ***\n");
      rsout();

      return(0);
    }

