Changeset 525 for trunk


Ignore:
Timestamp:
1999-09-02T21:50:43+12:00 (25 years ago)
Author:
rjmcnab
Message:

added need_filelock option to open

Location:
trunk/gsdl/packages/wingdbm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/packages/wingdbm/gdbmdefs.h

    r18 r525  
    161161    void (*fatal_err) ();
    162162
     163    int need_filelock;
     164
    163165    /* The gdbm file descriptor which is set in gdbm_open.  */
    164166    int  desc;
  • trunk/gsdl/packages/wingdbm/gdbmopen.c

    r18 r525  
    6060
    6161gdbm_file_info *
    62 gdbm_open (file, block_size, flags, mode, fatal_func)
     62gdbm_open (file, block_size, flags, mode, fatal_func, need_filelock)
    6363     char *file;
    6464     int  block_size;
     
    6666     int  mode;
    6767     void (*fatal_func) ();
     68     int need_filelock;
    6869{
    6970  gdbm_file_info *dbf;      /* The record to return. */
     
    9192  /* Initialize some fields for known values.  This is done so gdbm_close
    9293     will work if called before allocating some structures. */
     94  dbf->need_filelock = need_filelock;
    9395  dbf->dir  = NULL;
    9496  dbf->bucket = NULL;
     
    166168    }
    167169      /* Sets lock_val to 0 for success.  See systems.h. */
    168       READLOCK_FILE(dbf);
     170      if (dbf->need_filelock) {
     171          READLOCK_FILE(dbf);
     172      } else {
     173          lock_val = 0;
     174      }
    169175    }
    170176  else
    171177    {
    172178      /* Sets lock_val to 0 for success.  See systems.h. */
    173       WRITELOCK_FILE(dbf);
     179      if (dbf->need_filelock) {
     180        WRITELOCK_FILE(dbf);
     181      } else {
     182          lock_val = 0;
     183      }
    174184    }
    175185  if (lock_val != 0)
  • trunk/gsdl/packages/wingdbm/gdbmreorg.c

    r18 r525  
    182182
    183183  /* Fix up DBF to have the correct information for the new file. */
    184   UNLOCK_FILE(dbf);
     184  if (dbf->need_filelock) {
     185      UNLOCK_FILE(dbf);
     186  }
    185187  close (dbf->desc);
    186188  free (dbf->header);
  • trunk/gsdl/packages/wingdbm/proto.h

    r18 r525  
    7676gdbm_file_info *gdbm_open _ARGS((char *file, int block_size,
    7777                 int flags, int mode,
    78                  void (*fatal_func) (void)));
     78                 void (*fatal_func) (void), int need_filelock));
    7979int   gdbm_reorganize     _ARGS((gdbm_file_info *dbf ));
    8080datum gdbm_firstkey       _ARGS((gdbm_file_info *dbf ));
Note: See TracChangeset for help on using the changeset viewer.