home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / dbase_c.zip / DBOPEN.C < prev    next >
Text File  |  1989-03-20  |  2KB  |  41 lines

  1. #include  "libc.h"
  2. #include  "dbase.h"
  3.  
  4.  
  5.  
  6. /***************************************************************************
  7. *  db_open(filename) opens the DBASE .DBF file contained in "filename"     *
  8. * and returns a pointer to the block containing the DBASE file discription *
  9. * block.  A value of -1 is returned if the file doesn't exist and execution*
  10. * is terminated if there is insufficient memory availible to allocate the  *
  11. * file descriptor block                                                    *
  12. ***************************************************************************/
  13. db_open(filename){          
  14.    int         i, *inptr, variables ;
  15.    DBASE_FILE  *db_pointer ;
  16.  
  17.    /*----- allocate the storage area -----*/
  18.    if( (db_pointer = alloc(DB_HDR_SZ+5)) == 0 ){
  19.      puts("Insufficient HEAP space to open DBASE file description block");
  20.      puts("Called from db_open");
  21.      exit();
  22.      }
  23.  
  24.    if( (inptr=open(filename,O_RDWR)) == ERROR)  /* open the file */
  25.       return(inptr);                            /* return the errror if not found */
  26.    read(inptr,db_pointer,DB_HDR_SZ);            /* read in the header information */
  27.                                                 /* reset the number of variables */
  28.    variables = 0;
  29.    while(db_pointer->field_desc[variables].var_len != 0 ) variables++;
  30.  
  31.    /*----- fill in the rest of the file descriptor and return -----*/
  32.    db_pointer->file_ptr = inptr;
  33.    db_pointer->var_num  = variables ;
  34.    db_pointer->chng_ind = FALSE ;
  35.    lseek(inptr,DATA_START,0);                   /* set to the beginning of data */
  36.    db_pointer->curr_rec = 0 ;  
  37.  
  38.    return(db_pointer);
  39.    }
  40.  
  41.