home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume17 / e2 / part01 / normal.c < prev    next >
C/C++ Source or Header  |  1989-02-08  |  2KB  |  83 lines

  1. #include "e.h"
  2.  
  3. /* 
  4.  * normal()
  5.  *
  6.  * A normal filename was found, put it into arg. First of all if there
  7.  * is a history and this file is already in it (which means they could
  8.  * have gotten to this file in other ways), then reconstruct the history
  9.  * as though they had. Also offer spelling help.
  10.  *
  11.  */
  12.  
  13. void
  14. normal(string)
  15. char *string;
  16. {
  17.     ok_sprintf(arg, "%s", string);
  18.  
  19.     if (hist_count != -1){
  20.  
  21.         register int i;
  22.  
  23.         /* 
  24.          * If it is in the history then reconstruct and return. 
  25.          *
  26.          */
  27.         for (i = 0; i < hist_count; i++){
  28.             if (!strcmp(hist[i], arg)){
  29.                 reconstruct(i);
  30.                 return;
  31.             }
  32.         }
  33.  
  34.         /* 
  35.          * It's not in the history, help with spelling then reconstruct. 
  36.          *
  37.          */
  38.         if (!spell_help(0)){
  39.             dir_find();
  40.         }
  41.  
  42.         /* 
  43.          * If it is in the history then reconstruct and return. 
  44.          * (It may now be in the history even if it wasn't before - this
  45.          * is because dir_find() or spell_help() may have done something to 
  46.          * arg.)
  47.          *
  48.          */
  49.         for (i = 0; i < hist_count; i++){
  50.             if (!strcmp(hist[i], arg)){
  51.                 reconstruct(i);
  52.                 return;
  53.             }
  54.         }
  55.  
  56.         /*
  57.          * Reconstruct and leave out the oldest if needed.
  58.          *
  59.          */
  60.         if (hist_count == HIST_LINES){
  61.             reconstruct(0);
  62.         }
  63.         else{
  64.             reconstruct(-1);
  65.         }
  66.     }
  67.     else{
  68.  
  69.         /* 
  70.          * There is no history around so help with spelling and set up a 
  71.          * history for next time.
  72.          *
  73.          */
  74.  
  75.         if (!spell_help(0)){
  76.             dir_find();
  77.         }
  78.         new_vi();
  79.     }
  80.     return;
  81. }
  82.  
  83.