This is gdbm.c in view mode; [Download] [Up]
/***********************************************************************
*
* GDBM interface definitions for GNU Smalltalk
*
* $Revision: 1.1 $
* $Date: 1995/06/05 17:00:08 $
* $Author: sbb $
*
***********************************************************************/
/***********************************************************************
*
* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
* Written by Steve Byrne.
*
* This file is part of GNU Smalltalk.
*
* GNU Smalltalk is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 1, or (at your option) any later
* version.
*
* GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* GNU Smalltalk; see the file COPYING. If not, write to the Free Software
* Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
***********************************************************************/
/*
* Change Log
* ============================================================================
* Author Date Change
* sbb 16 Sep 95 created change log.
*
*/
#include "gstpub.h"
#include <gdbm.h>
#include <malloc.h>
/* It might be a good idea to have the make file in this directory
* automatically run configure if it hasn't already been run, to ensure
* that the definitions in use reflect things which are actually present
* in the local environment (such as some of the gdbm_ functions which are
* only present after particular versions) */
/*
GDBM_FILE gdbm_open(name, block_size, flags, mode, fatal_func);
void gdbm_close(dbf);
int gdbm_store(dbf, key, content, flag);
datum gdbm_fetch(dbf, key);
int gdbm_delete(dbf, key);
datum gdbm_firstkey(dbf);
datum gdbm_nextkey(dbf, key);
int gdbm_reorganize(dbf);
void gdbm_sync(dbf); -- new
int gdbm_exists(dbf, key); not present
char *gdbm_strerror(errno); -- new
int gdbm_setopt(dbf, option, value, size) -- new
*/
int Wrapped_gdbm_store(dbf, key, content, flag)
GDBM_FILE dbf;
datum* key;
datum* content;
int flag;
{
return gdbm_store(dbf, *key, *content, flag);
}
datum* Wrapped_gdbm_fetch(dbf, key)
GDBM_FILE dbf;
datum* key;
{
datum* result;
/*
printf("key is %d\n", key->dsize);
printf("key value is %s\n", key->dptr);
*/
result = (datum*)malloc(sizeof(datum));
*result = gdbm_fetch(dbf, *key);
/*
printf("result length is %d ptr is %x\n", result->dsize, result->dptr);
*/
return result;
}
int Wrapped_gdbm_delete(dbf, key)
GDBM_FILE dbf;
datum* key;
{
return gdbm_delete(dbf, *key);
}
datum* Wrapped_gdbm_firstkey(dbf)
GDBM_FILE dbf;
{
datum* result;
result = (datum*)malloc(sizeof(datum));
*result = gdbm_firstkey(dbf);
return result;
}
datum* Wrapped_gdbm_nextkey(dbf, key)
GDBM_FILE dbf;
datum* key;
{
datum* result;
result = (datum*)malloc(sizeof(datum));
*result = gdbm_nextkey(dbf, *key);
return result;
}
/*
int Wrapped_gdbm_exists(dbf, key)
GDBM_FILE dbf;
datum* key;
{
return gdbm_exists(dbf, *key);
}
*/
void
initGdbm()
{
/* the use of the Wrapped_ functions is an artifact of the limitation of C
that you cannot reliably and portably synthesize a function call where
some of the parameters are by-value structs. Other than the use of
pointers to datums instead of by-value datum structures, the signatures
are identical to the normal gdbm functions */
defineCFunc("gdbm_open", gdbm_open);
defineCFunc("gdbm_close", gdbm_close);
defineCFunc("gdbm_store", Wrapped_gdbm_store);
defineCFunc("gdbm_fetch", Wrapped_gdbm_fetch);
defineCFunc("gdbm_delete", Wrapped_gdbm_delete);
defineCFunc("gdbm_firstkey", Wrapped_gdbm_firstkey);
defineCFunc("gdbm_nextkey", Wrapped_gdbm_nextkey);
defineCFunc("gdbm_reorganize", gdbm_reorganize);
/* defineCFunc("gdbm_sync", gdbm_sync); not universal */
/* defineCFunc("gdbm_exists", Wrapped_gdbm_exists); */
/* defineCFunc("gdbm_strerror", gdbm_strerror); not universal */
/* defineCFunc("gdbm_setopt", gdbm_setopt); not universal */
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.