home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / CODE4-1.ZIP / SOURCE.ZIP / I4REF.C < prev    next >
Encoding:
C/C++ Source or Header  |  1989-10-14  |  1.3 KB  |  59 lines

  1.  
  2. /*  i4ref.c   (c)Copyright Sequiter Software Inc., 1987, 1988, 1989.  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 "d4base.h"
  13. #include <string.h>
  14.  
  15. extern   BASE   *v4base  ;
  16. extern   INDEX  *v4index ;
  17. extern   int     v4last_base ;
  18.  
  19.  
  20. i4ref( index_name )
  21. char  *index_name ;
  22. {
  23.    int   base_on, index_on, len ;
  24.    char  name[90] ;
  25.  
  26.    #ifdef CLIPPER
  27.       u4name_full( name, index_name, ".NTX" ) ;  
  28.    #else
  29.       u4name_full( name, index_name, ".NDX" ) ;  
  30.    #endif
  31.  
  32.    len = 0 ;
  33.    while ( name[len]  !=  ' '  &&  name[len] != '\0' )  len++ ;
  34.    if (len > 63)  len =  63 ;
  35.    name[len] = '\0' ;
  36.    strupr( name ) ;
  37.  
  38.    base_on =  v4last_base ;
  39.    while ( base_on >= 0)
  40.    {
  41.       index_on =  v4base[base_on].index_ref ;
  42.       while ( index_on >= 0)
  43.       {
  44.      if ( memcmp( name, v4index[index_on].name, len) == 0)
  45.      {
  46.         if (v4index[index_on].name[len] == ' ' || v4index[index_on].name[len] == '\0')
  47.            return( index_on) ;
  48.      }
  49.  
  50.      index_on =  v4index[index_on].prev ;
  51.       }
  52.  
  53.       base_on =  v4base[base_on].prev ;
  54.    }
  55.  
  56.    return( -1) ;
  57. }
  58.  
  59.