home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c160 / 1.ddi / SOURCE / I4REF.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-11-19  |  1.3 KB  |  60 lines

  1.  
  2. /*  i4ref.c   (c)Copyright Sequiter Software Inc., 1987-1990.  All rights reserved.
  3.  
  4.     Returns the reference base number corresponding to the name of a previously
  5.     opened index file.
  6.  
  7.     Return
  8.     >=0    Index File Reference Number
  9.      -1    Index File has not been opened
  10. */
  11.  
  12. #include "d4all.h"
  13. #include "p4misc.h"
  14.  
  15. #include <string.h>
  16.  
  17. extern   BASE   *v4base  ;
  18. extern   INDEX  *v4index ;
  19. extern   int     v4last_base ;
  20.  
  21.  
  22. i4ref( char *index_name )
  23. {
  24.    int   base_on, index_on, len ;
  25.    char  name[90] ;
  26.  
  27.    #ifdef CLIPPER
  28.       u4name_full( name, index_name, ".NTX" ) ;  
  29.    #else
  30.       u4name_full( name, index_name, ".NDX" ) ;  
  31.    #endif
  32.  
  33.    len = 0 ;
  34.    while ( name[len]  !=  ' '  &&  name[len] != '\000' )  len++ ;
  35.    if (len > 63)  len =  63 ;
  36.    name[len] = '\000' ;
  37.    u4upper( name ) ;
  38.  
  39.    base_on =  v4last_base ;
  40.    while ( base_on >= 0)
  41.    {
  42.       index_on =  v4base[base_on].index_ref ;
  43.       while ( index_on >= 0)
  44.       {
  45.      if ( memcmp( name, v4index[index_on].name, (size_t) len) == 0)
  46.      {
  47.         if (v4index[index_on].name[len] == ' ' || v4index[index_on].name[len] == '\000')
  48.            return( index_on) ;
  49.      }
  50.  
  51.      index_on =  v4index[index_on].prev ;
  52.       }
  53.  
  54.       base_on =  v4base[base_on].prev ;
  55.    }
  56.  
  57.    return( -1) ;
  58. }
  59.  
  60.