#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include "extern.h"

/* Find ｺﾏﾝﾄﾞ */
exefind()
        {   
        char *chp;
        char fno[5], ftitle[31], fjunle[9], fcall[9], fdate[9], ftime[6];
          /* ﾌｧｲﾙ No. ﾀｲﾄﾙ        ｼﾞｬﾝﾙ   ｶｷｺﾐ ｺｰﾙ    ﾋｽﾞｹ      ｼﾞｺｸ */       
        char fsize[6], fkanflg[2],frep[4],fmail[2],frdate[9],frtime[6];
          /* ｻｲｽﾞ      ｶﾝｼﾞ       Aﾀｲｵｳ   mail read  mail ﾖﾐﾀﾞｼ ﾋﾂﾞｹ*/       
        char fwd_flg[2];
        char fday[14];   /* fday + ftime   ﾋｶｸ ﾊﾝﾀﾞﾝ ﾖｳ */
        char wdate[9];   /* ﾊﾟﾗﾒｰﾀ ﾆ ﾖﾙ ﾎｾｲ ｼﾀ find ﾋｽﾞｹ */
        char rdate[9];   /* 5ﾆﾁ ﾏｴ ﾉ ﾋｽﾞｹ  ﾏﾀﾊ  ﾖﾐﾀﾞｽ ｶｲｼ ﾋｽﾞｹ */
        char rtime[6];   /* ﾖﾐﾀﾞｼ ｶｲｼ ｼﾞｺｸ */
        char rday[14];   /* rday + rtime   ﾋｶｸ ﾊﾝﾀﾞﾝ ﾖｳ */

        char rflg;
        int i,k,fcnt,jcnt,ji,jj,kcnt; /* ﾜｰｸ ｼﾋｮｳ */
        long numd;     /* ｺﾏﾝﾄﾞ ｵﾌﾟｼｮﾝ ｽｳﾁ */
        long poit,poit2 = -1L,poit3;  /* ﾖﾐﾀﾞｼ ｶｲｼ ﾌｧｲﾙ ﾎﾟｲﾝﾀ */
                
		if ( mail && ! strcmp(hiscall,guestid) )
			{ strcpy(ssent,": ゲストのかたは、MAIL の見出しを見ることができません\n");
			  rsout();
			  return(0);
			}

        numd = atol(cmdnum);
                    
                 nwdate();                              /* ｹﾞﾝｻﾞｲ ﾋｽﾞｹ ﾊｱｸ */
                 for ( i = 0 ; i < 5 ; i++)             /* 7ﾆﾁ ﾏｴ ｻﾝｼｭﾂ */
                 {  td[2]--;
                    if (td[2] == 0) { td[1]--; td[2] = 30;}
                    if (td[1] == 0) { td[0]--; td[1] = 12;}  }
            sprintf(rdate,"%02d/%02d/%02d",td[0],td[1],td[2]);
                                                   /* ﾖﾐﾀﾞｼ ｶｲｼ ｦ 5ﾆﾁ ﾏｴ ﾆ */
        strcpy(ssent,"\n: 最近５日間の見出しです\n\n");
         
        sprintf(rtime,"00:00");
 
        if (strcmp(lastdate,rdate) > 0) { strcpy(rdate,lastdate);
                                          strcpy(rtime,lasttime);
                   strcpy(ssent,"\n: 前回アクセス後の見出しです\n");
                                           }
                        /* ﾖﾐﾀﾞｼ ｶｲｼ ﾋｽﾞｹ ｦ ﾎｾｲ (ｻｲｼｭｳ ﾖﾐﾀﾞｼ ﾆ ﾎｾｲ) */
        strcpy(rday,rdate); strcat(rday,rtime);    /* ﾋｶｸ ﾊﾝﾀﾞﾝ ﾖｳ ﾍﾝｼｭｳ */
        
        fno[0] = rday[6]; fno[1] = rday[7]; fno[2] = NULL;
        i = atoi(fno); poit = fptr[i];

        if ( numd == -9997 ) poit = 0;
        
        if (strlen(cmdopt))
           {    switch(cmdopt[0])               /* ｵﾌﾟｼｮﾝ ﾓｼﾞ ﾊﾝﾀﾞﾝ */
                {  case 'A' :  poit = 0;
                               if ( numd == 0 ) numd = -9999;
                               strcpy(ssent,"\n: すべての見出しを出します\n");
                               break;
                   case 'M' :  numd = -9998;  poit = 0;
                   strcpy(ssent,"\n: あなたが書きこんだファイルを出します\n\n");
                               break;        
                   case ' ' :  break;
                   default  :  paraerr(); return(0);   }   }
        
        if (numd > 0)                 /* ﾖﾐﾀﾞｼ ﾋｽﾞｹ ｻﾝｼｭﾂ */
           {    nwdate();             /* ｹﾞﾝｻﾞｲ ｼﾞｺｸ ﾋｽﾞｹ ﾊｱｸ */
                
                sprintf(ssent,"\n: %ld日の見出しです\n\n",numd);
                if (numd < 99)                  /* 2ｹﾀ ｲﾅｲ ﾅﾗ ﾂｷ ｦ ﾎｾｲ */
                   {    if (numd > 31) {paraerr(); return(0); }
                        if (td[2] < numd) { td[1]--; }
                        if (td[1] == 0)   { td[1] = 12; td[0]--; }
                        td[2] = numd;
                        poit = fptr[numd];                       }
                else
                   {  if ( numd > 9999 )
						{  td[0] = numd / 10000;
							numd -=  td[0]  *  10000L;
						}
  
						i = numd / 100;         /* 3ｹﾀ ｲｼﾞｮｳ ﾅﾗ ﾂｷ､ﾈﾝ ﾎｾｲ */
                        numd = numd - (i * 100);
                        if (numd > 31 || i > 12) {paraerr(); return(0); }
                        if (td[1] < i )  td[0]--;
                        td[1] = i; td[2] = numd;
                        poit = 0;           }
                 sprintf(wdate,"%02d/%02d/%02d",td[0],td[1],td[2]);
                                                /* ﾖﾐﾀﾞｼ ﾋｽﾞｹ ｶｸﾉｳ */
                 if (*(cmdopt) == 'A' )   /* f A## ﾀｲｵｳ (##ﾆﾁ ｲｺﾞﾉ ﾐﾀﾞｼ ﾋｮｳｼﾞ */
                      { sprintf(ssent,"\n: %ld日以後の見出しです\n\n",numd);
                        strcpy(rday,wdate);strcat(rday,"00:00"); numd = 0;}
            }



  if ( strlen(ssent) && ! seek_flg && ! mail && numd != -9997 && ! exp_flg )
                                                                  rsout();
  
  if ( ! poit && ! seek_flg && ! mail )
              {  strcpy(ssent,"...しばらく、お待ちください\n\n"); rsout(); }
              
  for ( rflg = fcnt = kcnt = 0 ; rflg < 2 ; rflg++ )
   {
     if ( seek_flg ) { fpw = fopen(seek_hdr,"r"); poit = 0;}
        else  { if ( mail ) { fpw = fopen(MAIL_HDR,"r"); poit = 0; }
                     else   { fpw = fopen(HDR_FIL,"r");
                              jcnt = setboard(0); }
              }                             /* ﾍｯﾀﾞ ﾌｧｲﾙ open */
        if (fpw == NULL) { return(0);}
        if ( rflg && poit2 != -1L ) poit = poit2;
        
        fseek(fpw,poit,0);
        
        k = 0; ssent[0] = NULL;

   while(k < 1000)
    {   
        if ( ! rflg ) poit3 = ftell(fpw);
        chp = fgets(fbuff,255,fpw);         /* ﾖﾐｺﾐ */
        
        if (chp == NULL)
                { if ( seek_flg || mail || strcmp(nowjle,mainjle)) break;
                  if ( ! rflg ) break;
                  if ( numd == -9999 || numd == -9997 ) break;
                  if (( jcnt = setboard(jcnt)) == -1 ) { break; }
                     else
                  {  fseek(fpw,poit,0); continue; }
                }        
                
        if ( ! isdigit(*(fbuff)) ) continue;
                        /* ｻｸｼﾞｮ ﾌﾗｸﾞ ｱﾚﾊﾞ ﾖﾐﾄﾊﾞｼ */
   
        substr(fbuff,0,4,fno);
        substr(fbuff,4,1,fmail);
        substr(fbuff,5,8,fjunle);
        substr(fbuff,13,2,frep);
        substr(fbuff,15,30,ftitle);
        substr(fbuff,47,8,fcall);
        substr(fbuff,55,8,fdate);
        substr(fbuff,63,5,ftime);
        substr(fbuff,68,5,fsize);
        substr(fbuff,74,1,fkanflg);
		substr(fbuff,75,1,fwd_flg);
        substr(fbuff,76,8,frdate);
        substr(fbuff,84,5,frtime);
        *(frep + 2) = ' '; *(frep + 3) = NULL;
        strcpy(fday,fdate); strcat(fday,ftime);  /* ﾋｶｸ ﾖｳ ﾍﾝｼｭｳ */
        if ( mail ) {
                      strcpy(fday,frdate); strcat(fday,frtime);
                    }
   if ( ! seek_flg )
      { if (numd == -9997 && strcmp(ftitle,nodtitle) != 0 ) continue;
                      /* node ｼﾃｲ ｼﾀ ﾀｲﾄﾙ ｲｶﾞｲ ﾖﾐﾄﾊﾞｼ */
        if ( ! mail && numd != -9997 && strcmp(nowjle,mainjle) != 0
                                     && strcmp(fjunle,nowjle) != 0)
                                                            continue;
                   /* ｼﾞｬﾝﾙ ｶﾞ ﾒｲﾝ ﾃﾞﾊ ﾅｸ､ ｲﾏ ﾉ ｼﾞｬﾝﾙ ｲｶﾞｲ ﾅﾗ ﾖﾐﾄﾊﾞｼ */
        if ( numd != -9997 && strcmp(nowjle,mainjle) == 0
                           && strcmp(fjunle,"PLAZA   ") == 0)   continue;
                        /* MAIN ﾃﾞﾊ PLAZA  ﾖﾐﾄﾊﾞｼ */

        if ( numd != -9997 && strcmp(nowjle,mainjle) == 0
                           && strcmp(fjunle,"CUG     ") == 0)   continue;
                        /* MAIN ﾃﾞﾊ CUG  ﾖﾐﾄﾊﾞｼ 90.11.30 */

        if (  numd != -9997 && strcmp(nowjle,mainjle) == 0
              && numd != -9999  )
           {  if ( rflg )
                 {  if ( strcmp(fjunle,wjunle) )     continue;
                 }
              else
                 {
                    for( ji = jj = 0 ; ji <= JUNLE_MAX ; ji++ )
			                    { if ( stbl[ji][0] == NULL ) break;
			                      if ( ! strcmp(fjunle,stbl[ji]) ) { jj = 1; break; }
			                    }
		                  if ( jj ) { continue; }
                 }
		         }

        if ( rflg && numd != -9997 && strcmp(nowjle,mainjle) == 0
                  && numd != -9999 && strcmp(fjunle,wjunle) )  continue;
                        /* MAIN ﾃﾞ ﾖﾐﾀﾞｼ ﾎﾞｰﾄﾞ ｾﾝﾀｸ */

        if ( mail && strcmp(fjunle,hiscall) && strcmp(fcall,hiscall) )
                                               continue;
                    /* mail ｼﾞｮｳﾀｲ ﾃﾞ ｶﾝｹｲ ﾅｲ ｷｮｸ ﾉ ﾌﾞﾝ ﾊ ﾖﾐﾄﾊﾞｼ */
        if ( mail && ! strcmp(fjunle,hiscall) && *(fmail) == 'X' )
                                               continue;
                   /* mail ｼﾞｮｳﾀｲ ﾃﾞ ｳｹﾄﾘ ﾉﾁ ｻｸｼﾞｮ ｼﾃｲ ｻﾚﾀ ﾓﾉ ﾊ ﾖﾐﾄﾊﾞｼ */
        if ( ! mail && numd == 0 && strcmp(fday,rday) < 0 ) continue;
                   /* mail ﾃﾞﾊ ﾅｸ ﾊﾟﾗﾒｰﾀ ｼﾃｲ ｶﾞ ﾅｸ､ 
                                          ﾖﾐﾀﾞｼ ﾋｽﾞｹ ﾖﾘ ﾏｴ ﾅﾗ ﾖﾐﾄﾊﾞｼ */
        if ( mail && *(fmail) != ' ' && 
                      numd == 0 && strcmp(fday,rday) < 0 ) continue;
                   /* mail ﾃﾞﾊ ﾖﾐｺﾐ ｽﾐ ﾉ ﾌｧｲﾙ ﾃﾞ ﾊﾟﾗﾒｰﾀ ｼﾃｲ ｶﾞ ﾅｸ､
                                          ﾖﾐﾀﾞｼ ﾋｽﾞｹ ﾖﾘ ﾏｴ ﾅﾗ ﾖﾐﾄﾊﾞｼ */
        if (numd == -9998 && strcmp(fcall,hiscall) != 0 ) continue;
                   /* ｱｸｾｽ ｷｮｸ ｲｶﾞｲ ﾉ ｶｷｺﾐ ﾊ ﾖﾐﾄﾊﾞｼ */
        if (numd > 0  && strcmp(fdate,wdate))  continue;
                    /* ﾊﾟﾗﾒｰﾀ ﾃﾞ ｼﾃｲ ｼﾀ ﾋｽﾞｹ ｲｶﾞｲ ﾊ ﾖﾐﾄﾊﾞｼ */
 
        if ( poit2 == -1L )  poit2 = poit3;
        
      } 

     if ( rflg )
      {
        if (k == 0)
           {                     /* ﾐﾀﾞｼ ﾉ ﾋｮｳｼﾞ */
              sprintf(ssent,"*** %d ﾌｧｲﾙ ***",fcnt);
              if ( exp_flg )
               { strcat(ssent,"\n");
				 if ( resv ) rsout();  /* 89.7.1 エキスパートのAUTOはこれだけ*/
               }
              else
               {
                if ( seek_flg )
                   {  sprintf(ssent,"*** %d ファイルあります。見出しを出しますか? \n",fcnt);
                      strcpy(ynsent,ssent);
                      if (y_or_n())  break; }

                if ( ! mail )
                   {strcat(ssent,"\n"); 
                    if ( ! resv && fcnt >= 50 )
                       { strcat(ssent,"... 50 ファイルごとに一旦停止します\n"); }
                    if (strcmp(nowjle,mainjle) == 0)
                                          /* ｼﾞｬﾝﾙ ｶﾞ ﾒｲﾝ ﾉ ﾄｷ */
                       { strcat(ssent,"No. ﾎﾞｰﾄﾞ       ﾀｲﾄﾙ                           ID         日付    時刻  ｻｲｽﾞ\n");}
                    else
                                        /* ｼﾞｬﾝﾙ ｶﾞ ﾒｲﾝ ｲｶﾞｲ ﾉ ﾄｷ */
                       { strcat(ssent,"  No.    ﾀｲﾄﾙ                             ID           日付     時刻  ｻｲｽﾞ\n");}     
                    }
                else    
                   { strcat(ssent,"   [[[ メールの保存期間は１か月です ]]]\n");
                     strcat(ssent," No. To          ﾀｲﾄﾙ                            From     日付      時刻  ｻｲｽﾞ\n");}
                if ( numd == -9997 )
                   { sprintf(ssent,"*** %d ﾌｧｲﾙ ***\n",fcnt);
                     strcat(ssent," No.     ID           日付     時刻   ｻｲｽﾞ\n");}
             }
           }
                k++;    /* ﾖﾐﾀﾞｼ No. ｺｳｼﾝ */ 
                rtbl[k] = atoi(fno);
                        /* R ｺﾏﾝﾄﾞ ﾆｭｳﾘｮｸ ﾀｲｵｳ ﾉ ﾀﾒ ﾌｧｲﾙ No.ｦ ﾃｰﾌﾞﾙ ﾆ ｶｸﾉｳ */

                if ( resv == 1 && ! strcmp(fcall,hiscall)) 
                       { rtbl[k] = -1; }
                        /* AUTO ｼﾞｮｳﾀｲ ﾃﾞ ｱﾘ､ ｺﾈｸﾄ ｷｮｸ ｲｶﾞｲ ﾉ ｶｷｺﾐ ﾉﾐ ｶｸﾉｳ */
                        /* ﾀﾀﾞｼ AUTO ALL ﾃﾞﾊ ｽﾍﾞﾃ ｵｸﾘ ﾀﾞｼ */
                        
                if (*(frep) != ' ' ) *(frep+2) = '>';

				*(fkanflg) = NULL;  /* 内容表示 停止  89.8.16  */

                if ( ! mail )
                   { if (strcmp(nowjle,mainjle) == 0)
                        {sprintf(fbuff,"%3d %s %s%s %s %s %s %s%s\n",k,fjunle,frep,ftitle,fcall,fdate,ftime,fsize,fkanflg);}
                     else    
                        {sprintf(fbuff," %3d  %s%s   %s   %s  %s %s%s\n",k,frep,ftitle,fcall,fdate,ftime,fsize,fkanflg);}
                   }
                else
                   {
                     {sprintf(fbuff,"%3d  %s %s %s  %s %s %s %s%s\n",k,fjunle,frep,ftitle,fcall,fdate,ftime,fsize,fkanflg);}
                     if ( ! strcmp(hiscall,fcall) )
                      { sprintf(fbuff,"%3d  %s %s%s           %s %s %s%s\n",k,fjunle,frep,ftitle,fdate,ftime,fsize,fkanflg);}
                     else
                      { sprintf(fbuff,"%3d           %s%s  %s %s %s %s%s\n",k,frep,ftitle,fcall,fdate,ftime,fsize,fkanflg);}

       /*              if ( *(fwd_flg) == 'F' )
                       {  if ( strcmp(hiscall,fcall) )
                                { strcat(fbuff,"      +++ VAP-NET BBS より転送 +++\n"); }
                           else { strcat(fbuff,"      --- VAP-NET BBS へ転送 ---\n"); }
                        }
       */
                 
                     if ( ! strcmp(hiscall,fcall) && *(fmail) != ' ' )
                        { strcat(fbuff,"      ***** 読みこみ済 ");
                          sprintf(fname,"%s %s",frdate,frtime);
                          strcat(fbuff,fname);
                          if ( *(fmail) == 'R' ) strcat(fbuff," 相手方保存中 *****\n");
                                         else    strcat(fbuff," *****\n");
                         }
                   }                   

                if ( numd == -9997 )
                        {sprintf(fbuff," %2d  %s %s   %s  %s %s%s\n",k,frep,fcall,fdate,ftime,fsize,fkanflg);}

				if ( ! mail && exp_flg && resv )
					ssent[0] = fbuff[0] = NULL;
						/* EXPERT の AUTO では見出しを送らない  */

                if ( mail || strlen(ssent) > 170)  { if (rsout() == 9) return(0);
                                            ssent[0] = NULL;  }
                                /* ﾂｷﾞ ﾉ ﾍｯﾀﾞ ｶﾞ ﾊｲﾘ ｷﾗﾅｲ ﾄｷ ﾊ ｿｳｼﾝ */
                strcat(ssent,fbuff);
                                /* ﾍｯﾀﾞ ｶｸﾉｳ */
                kcnt++;
                if (kcnt == 50) { rsout();
                               sprintf(ynsent,"\n: 続けますか? ");
                               if (y_or_n())  break;
                                    else      kcnt = 0;   }
                                /* R ﾃﾞ ﾖﾐﾀﾞｽ ﾌﾞﾝｼｮ ﾊ 50 ﾏﾃﾞ */
      }
    else { fcnt++; }
     }    
    if (rflg)
      {
        if (k == 0 && ! seek_flg)
                { strcpy(ssent,"   *** ファイルはありません ***\n");
                  if ( numd == 0 )
                     { strcpy(ssent,"   *** 最近のファイルはありません ***\n"); }
                  if ( mail )
                     { strcpy(ssent,"   *** メールはありません ***\n"); }
                  if ( strcmp(nowjle,"PLAZA   ") == 0 )
                     { sprintf(ssent,"   *** PLAZA にはファイルはありません ***\n"); }
                }
        if ( strlen(ssent) ) { rsout(); }
        if (numd == -9999) { rtbl[0] = -1;   }  /* F A ﾉ ｱﾄﾉ R A ﾎﾞｳｼ */
                else       { rtbl[0] =  0;   }  
        k++; rtbl[k] =  NULL;
      }
        fclose(fpw);
     }
        return(0);
   } 

