#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "extern.h"

/* ﾖﾐﾀﾞｼ ｼｮﾘ */
exeread()
        { int  i, numd, iz;
          long mlptr;
          char tocall[9],ftocall[9];
        
        numd = atoi(cmdnum);
        
        if ( mail && numd == 0 && ! resv ) *(cmdopt) = 'N';
        
        if (*(cmdopt) == 'N' ) {*(cmdopt) = 'A';  /* R N --> R A ﾍﾝｶﾝ */
                                *(rtbl + 1) = NULL;
                               }
     
        if (strlen(cmdopt) && cmdopt[0] != 'A')  /* ﾊﾟﾗﾒｰﾀ ｴﾗｰ ｶｲｾｷ */
           {  paraerr(); return(0); }
           
        if (cmdopt[0] != 'A')        /* ﾊﾟﾗﾒｰﾀ ｶﾞ A)ll ﾃﾞ ﾅｲﾄｷ ･･･ */
           {  if ((numd == 0) || (numd > 999) || (*(rtbl + numd) == NULL))
                           /* ﾌｧｲﾙ No. ｼﾃｲ ﾅｼ ﾊ ｴﾗｰ */
              {  strcpy(ssent,"F コマンドでファイルＮｏ．を見て、R ## と入れて下さい\n\n");
                 rsout();
                 return(0); }
        
              if (*(rtbl + numd) == -1)          /* k ｺﾏﾝﾄﾞ ﾃﾞ ｻｸｼﾞｮ ｻﾚﾀ ﾌｧｲﾙ ﾊ ｴﾗｰ */
              {  strcpy(ssent,"先程、削除されたファイルです\n\n");  
                 rsout(); return(0); }
           }
                 
        if (*(cmdopt) == 'A') /* ﾊﾟﾗﾒｰﾀ ｶﾞ A)ll ﾅﾗ､ ﾂｷﾞ ﾉ loop ﾃﾞﾊ No.1 ﾌｧｲﾙ ｶﾗ */
           { if (*(rtbl + 1) == NULL && ! resv ) 
                           { *(cmdopt) = NULL;
                             exefind();
                             *(cmdopt) = 'A'; } 
              *(pfna) = NULL;
              numd = 1; } 
        
        for (i = numd; i < 1000; i++) 
          {  if (*(rtbl + i) == NULL)   break;
                             /* ﾖﾐﾀﾞｼ ﾌｧｲﾙ ｶﾞ ﾅｹﾚﾊﾞ ｼｭｳﾘｮｳ */
             if (*(rtbl + i) == -1)   continue;
                             /* K ｺﾏﾝﾄﾞ ﾃﾞ ｻｸｼﾞｮ ｻﾚﾀ ﾌｱｲﾙ ﾊ ﾖﾐﾄﾊﾞｼ */
           
             if ( mail )     /* mail ﾄｷ ﾉ ﾍｯﾀﾞ ﾌｧｲﾙ ﾊｱｸ */
                { fpw = fopen(MAIL_HDR,"r");
                  rewind(fpw);
                  while(1)
                    {  mlptr = ftell(fpw);
                       if ( fgets(fbuff,255,fpw) == NULL )
                                {  fclose(fpw); 
                                   strcpy(fbuff,"       ");
                                   break;
                                }
                       if ( ! isdigit(*(fbuff)) ) continue;
                       substr(fbuff,0,4,tocall);
                       if ( *(rtbl + i) == atoi(tocall) ) break;
                    }
                  fclose(fpw);
                  substr(fbuff,5,8,tocall); strcpy(ftocall,tocall);
                  if ( *(cmdopt) == 'A' && strcmp(tocall,hiscall)) continue;
                                   /* ｼﾞｷｮｸ ｶﾞ ﾀﾞｼﾀ ﾒｰﾙ ﾊ R A ﾃﾞﾊ ﾖﾐﾄﾊﾞｼ */
                }
             
        
        if ( ! mail && cmdopt[0] == 'A' && ! resv )
                      /*  ﾊﾟﾗﾒｰﾀ ｶﾞ A ﾃﾞ AUTO ｺﾏﾝﾄﾞ ｼﾞｯｺｳ ﾁｭｳ ｲｶﾞｲ ﾅﾗ */
             {   while(1)
                {
                 makfname("MSG",*(rtbl + i),fname);
                                                 /* ｼﾞﾂ ﾌｧｲﾙ ﾒｲ ﾍﾝｼｭｳ */   

                 fpw = fopen(fname,"r");
                 fgets(fbuff,255,fpw);
                 fclose(fpw);
                 strcpy(ssent,"\n"); strcat(ssent,fbuff);
                 rsout();

                 if ( strlen(pfna) )
                    { strcpy(ssent,": 読みだし->Y  読みなおし->O  読みとばし->N  中止->Q  コメント書きこみ->A\n");
                      strcat(ssent,"  Y)es, O)nce, N)o, Q)uit, A)ns =>"); }
                   else
                    { strcpy(ssent,": 読みだし->Y  読みとばし->N  中止->Q\n");
                      strcat(ssent,"  Y)es, N)o, Q)uit =>"); }
                 rsout();
                 rsin(0);
                 if ( islower(*(rsent) ) ) { *(rsent) -= 0x20; }
                 if (*(rsent) == 'Q' )   return(0);
                 if (*(rsent) == 'Y' )   break;
                 if (*(rsent) == 'N' )   break;
                 if ( strlen(pfna) )
                    { if (*(rsent) == 'A' ) { exeadd();
                                              continue;
                                            }
                      if (*(rsent) == 'O' ) { strcpy(fname,pfna);
                                              sendfile(0);
                                              continue;
                                            }
                     }
                 if ( strlen(pfna) )
                    { strcpy(ssent,"\n!> Y)es , O)nce , N)o , Q)uit , A)ns で応えて下さい\n"); }
                 else
                    { strcpy(ssent,"\n!> Y)es , N)o , Q)uit  で応えて下さい\n"); }
                 rsout();
                 }
                 if (*(rsent) == 'N' )  { strcpy(pfna,fname);
                                          continue;
                                        }
                }                                          
               
          for (iz = 0 ; iz < 2 ; iz ++)
           {
	     makfname("MSG",*(rtbl + i),fname);
                                                 /* ｼﾞﾂ ﾌｧｲﾙ ﾒｲ ﾍﾝｼｭｳ */   
             strcpy(pfna,fname);       /* A ｺﾏﾝﾄﾞ ｼﾞｯｺｳ ﾄﾞｷ ﾉ ﾌｧｲﾙ ﾒｲ */
             
             if ( (! strncmp(nowjle,"PDS",3)) && (iz == 1))
              { 
	       makfname("PDS",*(rtbl + i),fname);
     	      }

             if ( (! strncmp(nowjle,"DAT",3)) && (iz == 1))
              { 
	       makfname("DAT",*(rtbl + i),fname);
              }
  
             if (sendfile(0) == 2) { i = 1000; break; }     /* ﾌｧｲﾙ ｿｳｼﾝ */
             
             if ( strncmp(nowjle,"PDS",3) && strncmp(nowjle,"DAT",3) )
                       break;
             if ( iz ) break;
                          
			 if ( ! strcmp(hiscall,guestid) )
				{ strcpy(ssent,"\n: ゲストのかたは本体を読みだすことはできません\n");
				  rsout();
				  break;
				}

             if ( ! strncmp(nowjle,"PDS",3 ) )
                { strcpy(ynsent,": プログラム本体を読みだしますか? "); }
             else
                { strcpy(ynsent,": データ本体を読みだしますか? ");     }

             if (y_or_n()) break;
           }  
             if ( i != 1000 ) 
              {sprintf(ssent,"***** ﾌｧｲﾙ No. = %3d 読みだし終了 *****\n\n",i);
               rsout();
			  }
           
             if ( mail )
              { strcpy(tocall,"r");
               if ( resv ) strcpy(tocall,"x");
               if ( *(cmdopt) == 'A' && ! resv )
                {
                 while(1)
                 {
                   strcpy(ssent,": 読みなおし->O  削除->K  保存->S  返答+削除->A  返答+保存->R\n");
                   strcat(ssent,"   O)nce, K)ill, S)ave, A)ns, R)eplace =>");
                   rsout();
                   rsin(0);
                   if ( islower(*(rsent)) ) *(rsent) -= 0x20;
                   if ( *(rsent) == 'O' ) { sendfile(0); continue; }
                   if ( *(rsent) == 'K' ) { strcpy(tocall,"X"); break; }
                   if ( *(rsent) == 'S' ) { strcpy(tocall,"R"); break; }
                   if ( *(rsent) == 'A' ) { exeadd();  strcpy(tocall,"X");
                                            break; }
                   if ( *(rsent) == 'R' ) { exeadd();  strcpy(tocall,"R");
                                            break; }
                   strcpy(ssent,"\n   O)nce, K)ill, S)ave, A)ns, R)eplece で応えてください\n");
                   rsout();
                 }
                }
                                    
               if ( ! strcmp(ftocall,hiscall) )  /* ﾒｰﾙ ﾍｯﾀﾞ ｺｳｼﾝ */
                 { nwdate();
                   fpw = fopen(MAIL_HDR,"r+");
                   mlptr = mlptr + 4;
                   fseek(fpw,mlptr,0);
                   fputs(tocall,fpw);
                   fseek(fpw,71L,1);
                   fputs(nowdate,fpw);
                   fseek(fpw,0L,1);
                   fputs(nowtime,fpw);
                   fclose(fpw);
                 
                   if ( ! strcmp(tocall,"X") )
                      {   strcpy(ssent,"\n*** 相手局からのメールは削除しました ***\n\n");
                          rsout();
                      }
                  }
             }                

             if (cmdopt[0] != 'A')   break;  /* ﾊﾟﾗﾒｰﾀ ｶﾞ A)ll ｲｶﾞｲ ﾅﾗ､ ｼｭｳﾘｮｳ */ 
              
           }
        return(0);
   }
                
