• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ dbm_open函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中dbm_open函数的典型用法代码示例。如果您正苦于以下问题:C++ dbm_open函数的具体用法?C++ dbm_open怎么用?C++ dbm_open使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了dbm_open函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: database_initialize

/* This function initializes access to the database. If the parameter
   new_database is true, then a new database is started.
 */
int database_initialize(const int new_database)
{
    int open_mode = O_RDWR;

    /* If any existing database is open then close it */
    if (cdc_dbm_ptr) dbm_close(cdc_dbm_ptr);
    if (cdt_dbm_ptr) dbm_close(cdt_dbm_ptr);

    if (new_database) {
	/* delete the old files */
	(void) unlink(CDC_FILE_PAG);
	(void) unlink(CDC_FILE_DIR);
	(void) unlink(CDT_FILE_PAG);
	(void) unlink(CDT_FILE_DIR);

	open_mode = O_CREAT | O_RDWR;
    }
    /* Open some new files, creating them if required */
    cdc_dbm_ptr = dbm_open(CDC_FILE_BASE, open_mode, 0644);
    cdt_dbm_ptr = dbm_open(CDT_FILE_BASE, open_mode, 0644);
    if (!cdc_dbm_ptr || !cdt_dbm_ptr) {
	fprintf(stderr, "Unable to create database\n");
	cdc_dbm_ptr = cdt_dbm_ptr = NULL;
	return (0);
    }
    return (1);

} /* database_initialize */
开发者ID:Afaren,项目名称:reference,代码行数:31,代码来源:cd_dbm.c


示例2: open_yptol_files

/*
 * FUNCTION :	open_yptol_files()
 *
 * DESCRIPTION:	Opens both yptol files for a map. This is called both when a
 *		map is opened and when it is reopened as a result of an update
 *		operation. Must be called with map locked.
 *
 * GIVEN :	Initialized map_ctrl
 *
 * RETURNS :	SUCCESS = Maps opened
 *		FAILURE = Maps not opened (and mess tidied up)
 */
suc_code
open_yptol_files(map_ctrl *map)
{

	/* Open entries map */
	map->entries = dbm_open(map->map_path, map->open_flags, map->open_mode);

	if (NULL == map->entries) {
		/* Maybe we were asked to open a non-existent map. No problem */
		return (FAILURE);
	}

	if (yptol_mode) {
		/* Open TTLs map. Must always be writable */
		map->ttl = dbm_open(map->ttl_path, O_RDWR | O_CREAT, 0644);
		if (NULL == map->ttl) {
			logmsg(MSG_NOTIMECHECK, LOG_ERR,
				"Cannot open TTL file %s", map->ttl_path);
			dbm_close(map->entries);
			map->entries = NULL;
			return (FAILURE);
		}
	}

	return (SUCCESS);
}
开发者ID:apprisi,项目名称:illumos-gate,代码行数:38,代码来源:map_ctrl.c


示例3: fdbm_initialize

/*
 * call-seq:
 *   DBM.new(filename[, mode[, flags]]) -> dbm
 *
 * Open a dbm database with the specified name, which can include a directory
 * path. Any file extensions needed will be supplied automatically by the dbm
 * library. For example, Berkeley DB appends '.db', and GNU gdbm uses two
 * physical files with extensions '.dir' and '.pag'.
 *
 * The mode should be an integer, as for Unix chmod.
 *
 * Flags should be one of READER, WRITER, WRCREAT or NEWDB.
 */
static VALUE
fdbm_initialize(int argc, VALUE *argv, VALUE obj)
{
    volatile VALUE file;
    VALUE vmode, vflags;
    DBM *dbm;
    struct dbmdata *dbmp;
    int mode, flags = 0;

    if (rb_scan_args(argc, argv, "12", &file, &vmode, &vflags) == 1) {
	mode = 0666;		/* default value */
    }
    else if (NIL_P(vmode)) {
	mode = -1;		/* return nil if DB not exist */
    }
    else {
	mode = NUM2INT(vmode);
    }

    if (!NIL_P(vflags))
        flags = NUM2INT(vflags);

    FilePathValue(file);

    if (flags & RUBY_DBM_RW_BIT) {
        flags &= ~RUBY_DBM_RW_BIT;
        dbm = dbm_open(RSTRING_PTR(file), flags, mode);
    }
    else {
        dbm = 0;
        if (mode >= 0) {
            dbm = dbm_open(RSTRING_PTR(file), O_RDWR|O_CREAT, mode);
        }
        if (!dbm) {
            dbm = dbm_open(RSTRING_PTR(file), O_RDWR, 0);
        }
        if (!dbm) {
            dbm = dbm_open(RSTRING_PTR(file), O_RDONLY, 0);
        }
    }

    if (!dbm) {
	if (mode == -1) return Qnil;
	rb_sys_fail(RSTRING_PTR(file));
    }

    dbmp = ALLOC(struct dbmdata);
    DATA_PTR(obj) = dbmp;
    dbmp->di_dbm = dbm;
    dbmp->di_size = -1;

    return obj;
}
开发者ID:GunioRobot,项目名称:ruby,代码行数:66,代码来源:dbm.c


示例4: main

int main(int argc, char *argv[]) {
  int i;
  DBM *db;
  datum daKey, daVal;

  /* Open the database (create) */
  db = dbm_open("ndbmTest", O_RDWR, 0660);
  if(db == NULL) {
    printf("ERROR: Could not open the DB file.  Error number: %d.\n", errno);
    exit(1);
  } else {
    printf("DB handle created.\n");
    printf("DB file opened.\n");
  }

  /* At this point you can add and remove things from the DB just as in mkNDBM. */
 
  /* Traverse the entire DB and lookup each key. */
  printf("All the records in the DB:\n");
  for(i=1,daKey=dbm_firstkey(db); daKey.dptr!=NULL; daKey=dbm_nextkey(db),i++) {
    daVal = dbm_fetch(db, daKey);
    if(daVal.dptr == NULL) {
      printf("ERROR: Could not look up %s\n", (char *)daKey.dptr);
    } else {
      printf("  Record(%d): '%s' ==> '%s'\n", i, (char *)daKey.dptr, (char *)daVal.dptr);
    } /* end if/else */
  } /* end for */
  printf("Found %d records\n", i-1);

  /* Close the DB (flush everything to the file) */
  dbm_close(db);
  printf("DB closed... Bye!\n");

  return 0;
} /* end func main */
开发者ID:Wushaowei001,项目名称:CodeExamples,代码行数:35,代码来源:rdNDBM.c


示例5: ndbm_init

int
ndbm_init(mnt_map *m, char *map, time_t *tp)
{
  DBM *db;

  db = dbm_open(map, O_RDONLY, 0);
  if (db) {
    struct stat stb;
    int error;
#ifdef DBM_SUFFIX
    char dbfilename[256];

    xstrlcpy(dbfilename, map, sizeof(dbfilename));
    xstrlcat(dbfilename, DBM_SUFFIX, sizeof(dbfilename));
    error = stat(dbfilename, &stb);
#else /* not DBM_SUFFIX */
    error = fstat(dbm_pagfno(db), &stb);
#endif /* not DBM_SUFFIX */
    if (error < 0)
      *tp = clocktime(NULL);
    else
      *tp = stb.st_mtime;
    dbm_close(db);
    return 0;
  }
  return errno;
}
开发者ID:0mp,项目名称:freebsd,代码行数:27,代码来源:info_ndbm.c


示例6: otp_db_open

void *
otp_db_open (void)
{
  int lock;
  int i;
  void *ret;

  for(i = 0; i < RETRIES; ++i) {
    struct stat statbuf;

    lock = open (OTP_DB_LOCK, O_WRONLY | O_CREAT | O_EXCL, 0666);
    if (lock >= 0) {
      close(lock);
      break;
    }
    if (stat (OTP_DB_LOCK, &statbuf) == 0) {
      if (time(NULL) - statbuf.st_mtime > OTP_DB_TIMEOUT)
	unlink (OTP_DB_LOCK);
      else
	sleep (1);
    }
  }
  if (i == RETRIES)
    return NULL;
  ret = dbm_open (OTP_DB, O_RDWR | O_CREAT, 0600);
  if (ret == NULL)
    unlink (OTP_DB_LOCK);
  return ret;
}
开发者ID:crherar,项目名称:Admin,代码行数:29,代码来源:otp_db.c


示例7: cmp_access_cookie

/*
 * test_access_cookie
 * 
 * returns       -1:       error
 *                0:       not valid
 *                1:       ok
 */
int cmp_access_cookie(char *accessdb, char *loginname, char *cookie,time_t timeout)
{
   DBM *db;
   datum key;
   datum data;
   time_t t;
   struct access_data access;
   db=dbm_open(accessdb, O_RDONLY, 0666);
   if(!db) return -1;
   key.dptr=(void *)loginname;
   key.dsize=strlen(loginname);
   data=dbm_fetch(db,key);
   if(!data.dptr) { dbm_close(db); return(0); }

   if(sizeof(access)!=data.dsize) { dbm_close(db); return(-1); }

   memcpy(&access,data.dptr,data.dsize);
   dbm_close(db);
   if(strcmp(access.cookie,cookie)) { 
      return(0);
   }
   time(&t);
   if(t-access.ti>timeout) {
      return(0);
   }
   return(1);
}
开发者ID:stafwag,项目名称:cgipaf,代码行数:34,代码来源:accessdb.c


示例8: ndbm_search

int
ndbm_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
{
  DBM *db;

  db = dbm_open(map, O_RDONLY, 0);
  if (db) {
    struct stat stb;
    int error;
#ifdef DBM_SUFFIX
    char dbfilename[256];

    xstrlcpy(dbfilename, map, sizeof(dbfilename));
    xstrlcat(dbfilename, DBM_SUFFIX, sizeof(dbfilename));
    error = stat(dbfilename, &stb);
#else /* not DBM_SUFFIX */
    error = fstat(dbm_pagfno(db), &stb);
#endif /* not DBM_SUFFIX */
    if (!error && *tp < stb.st_mtime) {
      *tp = stb.st_mtime;
      error = -1;
    } else {
      error = search_ndbm(m, db, key, pval);
    }
    (void) dbm_close(db);
    return error;
  }
  return errno;
}
开发者ID:0mp,项目名称:freebsd,代码行数:29,代码来源:info_ndbm.c


示例9: _ndbm_open

static int
_ndbm_open (mu_dbm_file_t db, int flags, int mode)
{
  int f;
  DBM *dbm;
  
  switch (flags)
    {
    case MU_STREAM_CREAT:
      f = O_CREAT|O_TRUNC|O_RDWR;
      break;
      
    case MU_STREAM_READ:
      f = O_RDONLY;
      break;
      
    case MU_STREAM_RDWR:
      f = O_CREAT|O_RDWR;
      break;
      
    default:
      errno = EINVAL;
      return -1;
    }
  dbm = dbm_open (db->db_name, f, mode);
  if (!dbm)
    return MU_ERR_FAILURE;
  db->db_descr = dbm;
  return 0;
}
开发者ID:Distrotech,项目名称:mailutils,代码行数:30,代码来源:ndbm.c


示例10: strlen

static char *get_dbm_pw(request_rec *r, char *user, char *auth_dbmpwfile)
{
    DBM *f;
    datum d, q;
    char *pw = NULL;

    q.dptr = user;
#ifndef NETSCAPE_DBM_COMPAT
    q.dsize = strlen(q.dptr);
#else
    q.dsize = strlen(q.dptr) + 1;
#endif


    if (!(f = dbm_open(auth_dbmpwfile, O_RDONLY, 0664))) {
	ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
		    "could not open dbm auth file: %s", auth_dbmpwfile);
	return NULL;
    }

    d = dbm_fetch(f, q);

    if (d.dptr) {
	pw = ap_palloc(r->pool, d.dsize + 1);
	strncpy(pw, d.dptr, d.dsize);
	pw[d.dsize] = '\0';	/* Terminate the string */
    }

    dbm_close(f);
    return pw;
}
开发者ID:paulur,项目名称:vul-apache,代码行数:31,代码来源:mod_auth_dbm.c


示例11: open_storage

static int open_storage(const char * fname) {

  if ( (pdb = dbm_open(fname, oflags, 0600 )) == NULL ) {
	perror("Couldn't open database");
	return 1;
  }
  return 0;
}
开发者ID:iliyap,项目名称:freeradius-server,代码行数:8,代码来源:rlm_dbm_parser.c


示例12: replay_db_cache_init

/* Check for the existence of the replay dbm file, and create it if it does
 * not exist.  Returns the number of db entries or -1 on error.
*/
static int
replay_db_cache_init(fko_srv_options_t *opts)
{
#ifdef NO_DIGEST_CACHE
    return(-1);
#else

#ifdef HAVE_LIBGDBM
    GDBM_FILE   rpdb;
#elif HAVE_LIBNDBM
    DBM        *rpdb;
    datum       db_ent;
#endif

    datum       db_key, db_next_key;
    int         db_count = 0;

#ifdef HAVE_LIBGDBM
    rpdb = gdbm_open(
        opts->config[CONF_DIGEST_DB_FILE], 512, GDBM_WRCREAT, S_IRUSR|S_IWUSR, 0
    );
#elif HAVE_LIBNDBM
    rpdb = dbm_open(
        opts->config[CONF_DIGEST_DB_FILE], O_RDWR|O_CREAT, S_IRUSR|S_IWUSR
    );
#endif

    if(!rpdb)
    {
        log_msg(LOG_ERR,
            "Unable to open digest cache file: '%s': %s",
            opts->config[CONF_DIGEST_DB_FILE],
            MY_DBM_STRERROR(errno)
        );

        return(-1);
    }

#ifdef HAVE_LIBGDBM
    db_key = gdbm_firstkey(rpdb);

    while (db_key.dptr != NULL)
    {
        db_count++;
        db_next_key = gdbm_nextkey(rpdb, db_key);
        free(db_key.dptr);
        db_key = db_next_key;
    }
#elif HAVE_LIBNDBM
    for (db_key = dbm_firstkey(rpdb); db_ent.dptr != NULL; db_key = dbm_nextkey(rpdb))
        db_count++;
#endif

    MY_DBM_CLOSE(rpdb);

    return(db_count);
#endif /* NO_DIGEST_CACHE */
}
开发者ID:DigitalDJ,项目名称:fwknop,代码行数:61,代码来源:replay_cache.c


示例13: main

int main()
{
	const char *database_name = "/tmp/ndbm" ;
	//create a dbm
	DBM *dbmptr = 0 ;
	TFUNVR(0, dbmptr, dbm_open(database_name, O_RDWR | O_CREAT,  0666))
	
	//append some item to dbm from user
	const int DATA_MAX_LEN = 101 ;
	datum key_datum, data_datum ;
	int key, result ;
	char data[DATA_MAX_LEN] ;

	printf("Enter a database item, form is 'key data', when key is -1 to end.\n") ;
	scanf("%d", &key) ;
	while(-1 != key) {
		key_datum.dptr = (void *)&key ;
		key_datum.dsize = sizeof(key) ;
		
		fgets(data, DATA_MAX_LEN , stdin) ;
		data_datum.dptr = data ;
		data_datum.dsize = strlen(data) ;
		
		do{
		if(1 == (result = dbm_store(dbmptr, key_datum, data_datum, DBM_INSERT))) {
			fprintf(stderr, "dbm_store has been a same key\n") ;
			break ;
		} else if(0 > result) {
			fprintf(stderr, "dbm_store failed\n") ;
			exit(1) ;
		}
		}while(0) ; //use for break can scanf
		scanf("%d", &key) ;
	}
	

	//read data frm dbm
	printf("Now you can search itme, enter a key, when key is -1 to end\n") ;
	scanf("%d", &key) ;
	while(-1 != key) 
	{
		key_datum.dptr = (void *)&key ;
		key_datum.dsize = sizeof(key) ;
		data_datum = dbm_fetch(dbmptr, key_datum) ;
		if(NULL == data_datum.dptr) {
			printf("No has this key item, try again:") ;
		} else {
			printf("key:%-4d:%s\n", key, (char *)data_datum.dptr) ; 
		}
		scanf("%d", &key) ;
	}

	//close dbm
	dbm_close(dbmptr) ;

	return 0 ;
}
开发者ID:NEXUS1000,项目名称:Linux-learning,代码行数:57,代码来源:dbm1.c


示例14: kalog_Init

void
kalog_Init(void)
{
    OpenLog(AFSDIR_SERVER_KALOGDB_FILEPATH);	/* set up logging */
    SetupLogSignals();
    kalog_db =
	dbm_open(AFSDIR_SERVER_KALOG_FILEPATH, O_WRONLY | O_CREAT,
		 KALOG_DB_MODE);
    if (!kalog_db)
	ViceLog(0, ("Cannot open dbm database - no DB logging possible\n"));
}
开发者ID:adeason,项目名称:openafs,代码行数:11,代码来源:kalog.c


示例15: dbm_open

	void RawStoreFile::open() {
		if (_dbm != NULL) {
			throw std::runtime_error("Fichier DBM deja ouvert");
		}
		
		const char* filenameStartPt = _filenameStart.c_str();
		_dbm = dbm_open(filenameStartPt, _flags, _mode);
		if (_dbm == NULL) {
			throw std::runtime_error("Erreur a l'ouverture de la base DBM");
		}
	}
开发者ID:pgentile,项目名称:tests-cxx,代码行数:11,代码来源:RawStoreFile.cpp


示例16: ldbm_open

/* ARGSUSED */
LDBM
ldbm_open( DB_ENV *env, char *name, int rw, int mode, int dbcachesize )
{
	LDBM ldbm;

	LDBM_WLOCK;
	ldbm = dbm_open( name, rw, mode );
	LDBM_WUNLOCK;

	return( ldbm );
}
开发者ID:BackupTheBerlios,项目名称:wl530g-svn,代码行数:12,代码来源:ldbm.c


示例17: caml_dbm_open

/* Dbm.open : string -> Sys.open_flag list -> int -> t */
value caml_dbm_open(value vfile, value vflags, value vmode) /* ML */
{
  char *file = String_val(vfile);
  int flags = convert_flag_list(vflags, dbm_open_flags);
  int mode = Int_val(vmode);
  DBM *db = dbm_open(file,flags,mode);

  if (db == NULL) 
    raise_dbm("Can't open file");
  else
    return (alloc_dbm(db));
}
开发者ID:puppeh,项目名称:ocaml-sh4,代码行数:13,代码来源:cldbm.c


示例18: NDBM_open

static krb5_error_code
NDBM_open(krb5_context context, HDB *db, int flags, mode_t mode)
{
    krb5_error_code ret;
    struct ndbm_db *d = malloc(sizeof(*d));
    char *lock_file;

    if(d == NULL) {
	krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
	return ENOMEM;
    }
    asprintf(&lock_file, "%s.lock", (char*)db->hdb_name);
    if(lock_file == NULL) {
	free(d);
	krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
	return ENOMEM;
    }
    d->db = dbm_open((char*)db->hdb_name, flags, mode);
    if(d->db == NULL){
	ret = errno;
	free(d);
	free(lock_file);
	krb5_set_error_message(context, ret, "dbm_open(%s): %s", db->hdb_name,
			       strerror(ret));
	return ret;
    }
    d->lock_fd = open(lock_file, O_RDWR | O_CREAT, 0600);
    if(d->lock_fd < 0){
	ret = errno;
	dbm_close(d->db);
	free(d);
	krb5_set_error_message(context, ret, "open(%s): %s", lock_file,
			       strerror(ret));
	free(lock_file);
	return ret;
    }
    free(lock_file);
    db->hdb_db = d;
    if((flags & O_ACCMODE) == O_RDONLY)
	ret = hdb_check_db_format(context, db);
    else
	ret = hdb_init_db(context, db);
    if(ret == HDB_ERR_NOENTRY)
	return 0;
    if (ret) {
	NDBM_close(context, db);
	krb5_set_error_message(context, ret, "hdb_open: failed %s database %s",
			       (flags & O_ACCMODE) == O_RDONLY ?
			       "checking format of" : "initialize",
			       db->hdb_name);
    }
    return ret;
}
开发者ID:0x24bin,项目名称:winexe-1,代码行数:53,代码来源:ndbm.c


示例19: main

int main()
{
	test_data_t items_to_store[ITEMS_USED];
	test_data_t item_retrieved;

	char key_datum;
	
	DBM *dbm_ptr;
	dbm_ptr = dbm_open(TEST_DB_FILE,O_RDWR | O_CREAT,0666);
	menset(items_to_store,'\0',sizeof(items_to_store));


}
开发者ID:huangguojun,项目名称:linux_programming,代码行数:13,代码来源:dbm1.c


示例20: create_dbm_file

/*
 * Create a new dbmgroupfile.  If it exists, truncate it.
 */
DBM* create_dbm_file(char *filename) {
  DBM *db;
  mode_t mode;
  mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
  
  db = dbm_open(filename, O_RDWR | O_CREAT | O_TRUNC, mode);
  if (!db) {
    fprintf(stderr,"Can't create the database %s.\n", filename);
    perror("dbm_open");
    exit(1);
  }
  else fprintf(stderr,"Created the database %s.\n", filename);
  return db;
}
开发者ID:TooDumbForAName,项目名称:ncsa-httpd,代码行数:17,代码来源:dbmgroup.c



注:本文中的dbm_open函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ dbmsghandle函数代码示例发布时间:2022-05-30
下一篇:
C++ dbm_fetch函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap