Example #1
0
/* Inserts strings into a map in ascending order, then delete in ascending
   order. */
static void
test_insert_ordered (void)
{
  const int max_elems = 64;
  int *values;
  struct string_map map;
  int i;

  string_map_init (&map);
  values = xnmalloc (max_elems, sizeof *values);
  for (i = 0; i < max_elems; i++)
    {
      values[i] = i | random_value (i, 4);
      string_map_insert_nocopy (&map, xstrdup (make_key (values[i])),
                                xstrdup (make_value (values[i])));
      check_string_map (&map, values, i + 1);
    }
  for (i = 0; i < max_elems; i++)
    {
      string_map_delete (&map, make_key (i));
      check_string_map (&map, values + i + 1, max_elems - i - 1);
    }
  string_map_destroy (&map);
  free (values);
}
Example #2
0
void output_global_data(PERF_DATA_BLOCK *data, RuntimeSettings rt, int tdb_flags)
{
    int i;
    char key[NAME_LEN];
    char sdata[NAME_LEN];
    
     /* Initialize BaseIndex */
    make_key(key, NAME_LEN, 1, NULL);
    memset(sdata, 0, NAME_LEN);
    sprintf(sdata, "%d", data->num_counters);
    add_key(rt.cnames, key, sdata, tdb_flags);
    /* Initialize PerfTime, PerfFreq and PerfTime100nSec */
    memset(sdata, 0, NAME_LEN);
    make_key(key, NAME_LEN, 0, "PerfTime");
    sprintf(sdata, "%Lu", data->PerfTime);
    add_key(rt.cdata, key, sdata, tdb_flags);
    make_key(key, NAME_LEN, 0, "PerfTime100nSec");
    memset(sdata, 0, NAME_LEN);
    sprintf(sdata, "%Lu", data->PerfTime100nSec);
    add_key(rt.cdata, key, sdata, tdb_flags);
    memset(sdata, 0, NAME_LEN);
    make_key(key, NAME_LEN, 0, "PerfFreq");
    sprintf(sdata, "%Lu", data->PerfFreq);
    add_key(rt.cnames, key, sdata, tdb_flags);

    return;
}
Example #3
0
void output_perf_desc(PerfCounter counter, RuntimeSettings rt)
{
    char key[NAME_LEN];
    char sdata[NAME_LEN];

    /* First insert the counter name */
    make_key(key, NAME_LEN, counter.index, NULL);
    add_key(rt.cnames, key, counter.name, TDB_INSERT);
    /* Add the help string */
    make_key(key, NAME_LEN, counter.index + 1, NULL);
    add_key(rt.cnames, key, counter.help, TDB_INSERT);
    /* Add the relationships */
    make_key(key, NAME_LEN, counter.index, "rel");
    add_key(rt.cnames, key, counter.relationships, TDB_INSERT);
    /* Add type data if not PERF_OBJECT or PERF_INSTANCE */
    if(counter.record_type == PERF_COUNTER)
    {
	make_key(key, NAME_LEN, counter.index, "type");
	memset(sdata, 0, NAME_LEN);
	sprintf(sdata, "%d", counter.counter_type);
	add_key(rt.cnames, key, sdata, TDB_INSERT);
    }

    return;
}
Example #4
0
IPv4Reassembler::packet_status IPv4Reassembler::process(PDU &pdu) {
    IP *ip = pdu.find_pdu<IP>();
    if(ip && ip->inner_pdu()) {
        // There's fragmentation
        if(ip->is_fragmented()) {
            // Create it or look it up, it's the same
            Internals::IPv4Stream &stream = streams[make_key(ip)];
            stream.add_fragment(ip);
            if(stream.is_complete()) {
                PDU *pdu = stream.allocate_pdu();
                // The packet is corrupt
                if(!pdu)  {
                    streams.erase(make_key(ip));
                    return FRAGMENTED;
                }
                ip->inner_pdu(pdu);
                ip->frag_off(0);
                return REASSEMBLED;
            }
            else
                return FRAGMENTED;
        }
    }
    return NOT_FRAGMENTED;
}
Example #5
0
int main()
{
   struct hash_table *ht;
   struct hash_entry *entry;
   const uint32_t size = 1000;
   bool flags[size];
   uint32_t i;

   ht = _mesa_hash_table_create(NULL, key_hash, key_equal);

   for (i = 0; i < size; ++i) {
      flags[i] = false;
      _mesa_hash_table_insert(ht, make_key(i), &flags[i]);
   }

   _mesa_hash_table_clear(ht, delete_function);
   assert(_mesa_hash_table_next_entry(ht, NULL) == NULL);

   /* Check that delete_function was called and that repopulating the table
    * works. */
   for (i = 0; i < size; ++i) {
      assert(flags[i]);
      flags[i] = false;
      _mesa_hash_table_insert(ht, make_key(i), &flags[i]);
   }

   /* Check that exactly the right set of entries is in the table. */
   for (i = 0; i < size; ++i) {
      assert(_mesa_hash_table_search(ht, make_key(i)));
   }

   hash_table_foreach(ht, entry) {
      assert(key_id(entry->key) < size);
   }
Example #6
0
/*
 * Using random tcam entries and lookup keys (but unique priorities), compare
 * the tcam to a reference implementation.
 */
static void
test_random(void)
{
    const int num_entries = 10000;
    const int num_lookups = 10000;
    const int num_masks = 128;
    struct tcam *tcam = tcam_create(sizeof(struct tcam_key), 42);

    struct tcam_entry *es = calloc(num_entries, sizeof(*es));
    assert(es);

    int i;
    struct tcam_key key, mask;

    /* Add entries */
    for (i = 0; i < num_entries; i++) {
        uint64_t mask_pattern = rand() % num_masks;
        key = make_key(rand() & mask_pattern);
        mask = make_key(mask_pattern);
        tcam_insert(tcam, &es[i], &key, &mask, i);
        assert(tcam_match(tcam, &key) == &es[i]);
    }

    /* Random lookups */
    for (i = 0; i < num_lookups; i++) {
        key = make_key(rand());
        struct tcam_entry *tcam_result = tcam_match(tcam, &key);

        /* Linear search to find highest priority match */
        int j;
        struct tcam_entry *ref_result = NULL;
        for (j = num_entries-1; j >= 0; j--) {
            uint64_t key_pattern = ((struct tcam_key *)es[j].key)->data[0];
            uint64_t mask_pattern = ((struct tcam_key *)es[j].mask)->data[0];
            if ((key.data[0] & mask_pattern) == key_pattern) {
                ref_result = &es[j];
                break;
            }
        }

        AIM_ASSERT(tcam_result == ref_result, "mismatch with reference");
    }

    /* Remove entries */
    for (i = 0; i < num_entries; i++) {
        tcam_remove(tcam, &es[i]);
    }

    tcam_destroy(tcam);

    free(es);
}
Example #7
0
File: data.c Project: Tayyib/uludag
int
db_put_script(int node_no, const char *app, const char *buffer, size_t size)
{
	struct databases db;
	char *key;
	int e, ret = -1;

	if (open_env(&db, APP_DB | MODEL_DB | CODE_DB)) goto out;

	key = make_key(node_no, app);
	if (!key) goto out;

	e = append_item(db.app, app, model_get_path(node_no));
	if (e) goto out;

	e = put_data(db.code, key, buffer, size);
	if (e) goto out;

	e = append_item(db.model, model_get_path(node_no), app);
	if (e) goto out;

	ret = 0;
out:
	close_env(&db);
	return ret;
}
Example #8
0
/**
 * @brief Populates database given a .csv file.
 *
 * @return Returns 0 on success, -1 otherwise.
 */
int populate_database(char* table)
{
    int error_occurred = 0;
    char data_file[MAX_PATH_LEN] = {0};
    
    sprintf(data_file, "%s%s.csv", UP_FOLDER, table);
    
    // Open file for reading.
    FILE *file = fopen(data_file, "r");
    if (file == NULL)
        error_occurred = 1;
    
    // Process the config file.
    while (!error_occurred && !feof(file))
    {
        // Read a line from the file.
        char key[MAX_KEY_LEN] = {0}, value[MAX_VALUE_LEN] = {0};
        fscanf(file, "%[^,],%s", key, value); 
        make_key(key);
        make_value(value);
        // Send some data.
        char buf[MAX_CMD_LEN] = {0};
        snprintf(buf, sizeof buf, "SET #%.19s #%.19s #%.799s\0", table, key, value);
        error_occurred = server_set(buf);
    }
    
    return error_occurred ? -1 : 0;
}
Example #9
0
 bool FileRecord::Modify(const std::string& id, const std::string& owner, const std::list<std::string>& meta) {
   if(!valid_) return false;
   Glib::Mutex::Lock lock(lock_);
   Dbt key;
   Dbt data;
   make_key(id,owner,key);
   void* pkey = key.get_data();
   if(!dberr("Failed to retrieve record from database",db_rec_->get(NULL,&key,&data,0))) {
     ::free(pkey);
     return false;
   };
   std::string uid;
   std::string id_tmp;
   std::string owner_tmp;
   std::list<std::string> meta_tmp;
   parse_record(uid,id_tmp,owner_tmp,meta_tmp,key,data);
   ::free(pkey);
   make_record(uid,id,owner,meta,key,data);
   if(!dberr("Failed to store record to database",db_rec_->put(NULL,&key,&data,0))) {
     ::free(key.get_data());
     ::free(data.get_data());
     return false;
   };
   db_rec_->sync(0);
   ::free(key.get_data());
   ::free(data.get_data());
   return true;
 }
Example #10
0
static rc_t write_to_sorter( struct sorter * sorter, int64_t seq_spot_id, uint32_t seq_read_id,
        const String * unpacked_bases )
{
    /* we write it to the store...*/
    rc_t rc;
    const String * to_store;    
    pack_4na( unpacked_bases, &sorter->buf );
    rc = StringCopy( &to_store, &sorter->buf.S );
    if ( rc != 0 )
        ErrMsg( "StringCopy() -> %R", rc );
    else
    {
        uint64_t key = make_key( seq_spot_id, seq_read_id );
        rc = KVectorSetPtr( sorter->store, key, (const void *)to_store );
        if ( rc != 0 )
            ErrMsg( "KVectorSetPtr() -> %R", rc );
        else
        {
            size_t item_size = ( sizeof key ) + ( sizeof *to_store ) + to_store->size;
            sorter->bytes_in_store += item_size;
        }
    }
    
    if ( rc == 0 &&
         sorter->params.mem_limit > 0 &&
         sorter->bytes_in_store >= sorter->params.mem_limit )
        rc = save_store( sorter );
    return rc;
}
Example #11
0
char *
confsection_t::get_string(const char *name, const char *deflt)
{
    char *val;
    string_var key = make_key(name);

#if HAVE_LIBGCONF
    GError *e = 0;
    GConfValue *gcv = gconf_client_get(gconf_client_get_default(), key, &e);
    handle_error(secname_, e);
    if (gcv == 0)
    {
	val = (deflt == 0 ? 0 : g_strdup(deflt));
    }
    else
    {
	val = g_strdup(gconf_value_get_string(gcv));
	gconf_value_free(gcv);
    }
#else
    gboolean defaulted = FALSE;
    val = gnome_config_get_string_with_default(key.data(), &defaulted);
    if (defaulted)
	val = (deflt == 0 ? 0 : g_strdup(deflt));
#endif

    return val;
}
Example #12
0
passwand_error_t hmac(const m_t *master, const data_t *data, const salt_t *salt, mac_t *mac,
        int work_factor) {

    assert(master != NULL);
    assert(data != NULL);
    assert(salt != NULL);
    assert(mac != NULL);

    AUTO_K_T(k);
    if (k == NULL)
        return PW_NO_MEM;
    passwand_error_t err = make_key(master, salt, work_factor, *k);
    if (err != PW_OK)
        return err;

    const EVP_MD *sha512 = EVP_sha512();

    mac->data = malloc(EVP_MAX_MD_SIZE);
    if (mac->data == NULL)
        return PW_NO_MEM;
    unsigned md_len;
    unsigned char *r = HMAC(sha512, *k, AES_KEY_SIZE, data->data, data->length, mac->data, &md_len);
    if (r == NULL) {
        free(mac->data);
        return PW_CRYPTO;
    }

    mac->length = md_len;

    return PW_OK;
}
Example #13
0
EXPORTED char *jmapauth_tokenid(const struct jmapauth_token *tok)
{
    struct buf buf = BUF_INITIALIZER;
    unsigned mdlen, hexlen;
    char macbuf[EVP_MAX_MD_SIZE];
    char hexbuf[(JMAPAUTH_KEY_LEN + EVP_MAX_MD_SIZE)*2];
    int r;

    /* Build the key */
    r = make_key(&buf, tok);
    if (r) return NULL;

    /* Sign the extended key */
    if (!(HMAC(EVP_sha1(), tok->secret, JMAPAUTH_SECRET_LEN,
               (unsigned char*) buf.s, buf.len,
               (unsigned char*) macbuf, &mdlen))) {
        buf_free(&buf);
        return NULL;
    }
    buf_appendmap(&buf, macbuf, mdlen);

    /* And return it hex-encoded */
    hexlen = bin_to_hex(buf.s, buf.len, hexbuf, 0);
    if (hexlen != (mdlen + JMAPAUTH_KEY_LEN)*2) {
        buf_free(&buf);
        return NULL;
    }

    buf_free(&buf);
    return xstrndup(hexbuf, hexlen);
}
Example #14
0
void del_entry_to_dhcpr_table()
{

    of_list_bsn_tlv_t *key;
    dhc_relay_t       *dhc_relay;
    uint32_t          vlan_id = 1;
    uint32_t          vlan_ret = 0;


    printf("\nVlan %d Delete to dhcp table\n", vlan_id);

    if (! (dhc_relay = dhcpr_get_dhcpr_entry_from_vlan_table(vlan_id))) {
        printf("Error get_dhcp_conf Vlan %d\n", vlan_id);
    }

    key = make_key(vlan_id);

    ops->del(table_priv, dhc_relay, key);

    /* Test 3: routerip -> vlan
     * invalid vlan, no need to check circuit
     */
    dhcpr_virtual_router_key_to_vlan(&vlan_ret, dummy_dhcp_opt_info.vrouter_ip, dummy_dhcp_opt_info.vrouter_mac.addr);
    printf("router_ip_to_vlan = %d\n", vlan_ret);
    AIM_TRUE_OR_DIE(vlan_ret==INVALID_VLAN);

   printf("\nVlan %d Delete entry\n", vlan_id);
}
Example #15
0
 bool FileRecord::Remove(const std::string& id, const std::string& owner) {
   if(!valid_) return false;
   Glib::Mutex::Lock lock(lock_);
   Dbt key;
   Dbt data;
   make_key(id,owner,key);
   void* pkey = key.get_data();
   if(dberr("",db_locked_->get(NULL,&key,&data,0))) {
     ::free(pkey);
     error_str_ = "Record has active locks";
     return false; // have locks
   };
   if(!dberr("Failed to retrieve record from database",db_rec_->get(NULL,&key,&data,0))) {
     ::free(pkey);
     return false; // No such record?
   };
   std::string uid;
   std::string id_tmp;
   std::string owner_tmp;
   std::list<std::string> meta;
   parse_record(uid,id_tmp,owner_tmp,meta,key,data);
   if(!uid.empty()) {
     ::unlink(uid_to_path(uid).c_str()); // TODO: handle error
   };
   if(!dberr("Failed to delete record from database",db_rec_->del(NULL,&key,0))) {
     // TODO: handle error
     ::free(pkey);
     return false;
   };
   db_rec_->sync(0);
   ::free(pkey);
   return true;
 }
Example #16
0
IPv4Reassembler::PacketStatus IPv4Reassembler::process(PDU& pdu) {
    IP* ip = pdu.find_pdu<IP>();
    if (ip && ip->inner_pdu()) {
        // There's fragmentation
        if (ip->is_fragmented()) {
            key_type key = make_key(ip);
            // Create it or look it up, it's the same
            Internals::IPv4Stream& stream = streams_[key];
            stream.add_fragment(ip);
            if (stream.is_complete()) {
                PDU* pdu = stream.allocate_pdu();
                // Use all field values from the first fragment
                *ip = stream.first_fragment();

                // Erase this stream, since it's already assembled
                streams_.erase(key);
                // The packet is corrupt
                if (!pdu) {
                    return FRAGMENTED;
                }
                ip->inner_pdu(pdu);
                ip->fragment_offset(0);
                ip->flags(static_cast<IP::Flags>(0));
                return REASSEMBLED;
            }
            else {
                return FRAGMENTED;
            }
        }
    }
    return NOT_FRAGMENTED;
}
Example #17
0
  static rinteger add_method(Env* env, rtable methods, Method* meth,
                            KeyMap& keys)
  {
    rinteger key = make_key(env, meth, keys);

    // We already have the method, skip this.
    bool fetched = false;
    env->table_fetch(methods, key, &fetched);
    if(fetched) return env->cast_to_rinteger(key);

    rsymbol cumulative_sym = env->symbol("cumulative");
    rsymbol total_sym = env->symbol("total");
    rsymbol called_sym = env->symbol("called");

    rtable method = env->table_new();
    env->table_store(methods, key, method);

    env->table_store(method, env->symbol("name"), meth->to_s(env));
    env->table_store(method, cumulative_sym, env->integer_new(meth->timer.total()));
    env->table_store(method, total_sym, env->integer_new(meth->total()));
    env->table_store(method, called_sym, env->integer_new(meth->timer.count()));

    if(meth->file()) {
      if(env->is_nil(meth->file())) {
        env->table_store(method, env->symbol("file"), env->string_new("unknown file"));
      } else {
        env->table_store(method, env->symbol("file"),
                         env->symbol_to_string(meth->file()));
      }

      env->table_store(method, env->symbol("line"), env->integer_new(meth->line()));
    }

    return key;
  }
Example #18
0
EXPORTED void duplicate_mark(const duplicate_key_t *dkey, time_t mark, unsigned long uid)
{
    struct buf key = BUF_INITIALIZER;
    char data[100];
    int r;

    if (!duplicate_dbopen) return;

    r = make_key(&key, dkey);
    if (r) return;

    memcpy(data, &mark, sizeof(mark));
    memcpy(data + sizeof(mark), &uid, sizeof(uid));

    do {
	r = cyrusdb_store(dupdb, key.s, key.len,
		      data, sizeof(mark)+sizeof(uid), NULL);
    } while (r == CYRUSDB_AGAIN);

#if DEBUG
    syslog(LOG_DEBUG, "duplicate_mark: %-40s %-20s %-40s %ld %lu",
	   dkey->id, dkey->to, dkey->date, mark, uid);
#endif
    buf_free(&key);
}
Example #19
0
Arr *build_stachan_list(Pf *pf, int *nchan,int verbose)
{
	char sta[10], chan[10];
	char *key;
	Arr *a;
	int i;
	Tbl *t;
	char *line;
	int *channel_number;  /* value stored in arr */

	if(verbose)
		elog_notify(0,"Station   Channel_code    Channel_number\n");
	a = newarr(0);
	t = pfget_tbl(pf,"channels");
	if(t==NULL) elog_die(0,"Parameter file error:  no channels table\n");
	for(i=0;i<maxtbl(t);++i)
	{
		line = gettbl(t,i);
		sscanf(line,"%s %s",sta,chan);
		key = make_key(sta,chan);
		channel_number = (int *) malloc(sizeof(int));
		if(channel_number == NULL)
			elog_die(0,"malloc error for channel_number\n");
		*channel_number = i;
		setarr(a,key,(void *)channel_number);
		if(verbose)
			elog_notify(0,"%s  %s  %d\n",sta,chan,(*channel_number)+1);
		free(key);
	}
	*nchan = maxtbl(t);
	freetbl(t,free);
	return(a);
}
Example #20
0
const char* BBP_read_string(struct plugin_info *PI, char *dest, const char *rcs, const char *def)
{
    char buffer[256];
    const char *p = ReadString(PI->rcpath, make_key(buffer, PI, rcs), def);
    if (p && dest) return strcpy(dest, p);
    return p;
}
Example #21
0
static void write_default_font(void)
{
	HKEY key = make_key(REGISTRY_PATH);
	RegSetValueEx(key, "DefaultFont", 0,
			REG_BINARY,
			(LPBYTE) &fontlf, sizeof(fontlf));
	RegCloseKey(key);
}
Example #22
0
faction *gm_addfaction(const char *email, plane * p, region * r)
{
  attrib *a;
  unit *u;
  faction *f = calloc(1, sizeof(faction));

  assert(p != NULL);

  /* GM faction */
  a_add(&f->attribs, make_key(atoi36("quest")));
  f->banner = _strdup("quest faction");
  f->name = _strdup("quest faction");
  f->passw = _strdup(itoa36(rng_int()));
  if (set_email(&f->email, email) != 0) {
    log_error("Invalid email address for faction %s: %s\n", itoa36(f->no), email);
  }
  f->race = new_race[RC_TEMPLATE];
  f->age = 0;
  f->lastorders = turn;
  f->alive = true;
  f->locale = default_locale;
  f->options =
    want(O_COMPRESS) | want(O_REPORT) | want(O_COMPUTER) | want(O_ADRESSEN);
  {
    faction *xist;
    int id = atoi36("gm00") - 1;
    do {
      xist = findfaction(++id);
    } while (xist);

    f->no = id;
    addlist(&factions, f);
    fhash(f);
  }

  /* generic permissions */
  a = a_add(&f->attribs, a_new(&at_permissions));
  if (a) {
    attrib *ap = (attrib *) a->data.v;
    const char *keys[] =
      { "gmterf", "gmtele", "gmgive", "gmskil", "gmtake", "gmmsgr", "gmmsgu",
        "gmgate", 0 };
    const char **key_p = keys;
    while (*key_p) {
      add_key(&ap, atoi36(*key_p));
      ++key_p;
    }
    a_add(&ap, make_atgmcreate(resource2item(r_silver)));

    a->data.v = ap;
  }

  /* one initial unit */
  u = create_unit(r, f, 1, new_race[RC_TEMPLATE], 1, "quest master", NULL);
  u->irace = new_race[RC_GNOME];

  return f;
}
Example #23
0
 smthread_scanner_t(
                      const vid_t &v, int _id, int n, int sz) : 
     // not append-only unless persistent info says it should be 
                           smthread_main_t(0,0, false, "smthread_scanner_t"),
                           num_rec(n),
                           rec_size(sz)
 {   vid = v;
     key = make_key(_id, n);
 }
Example #24
0
void VTermMM::invalidate(VTermPos p)
{
  boost::mutex::scoped_lock lock(m_mutex);
  VTCell *c = &cells[p.row][p.col];
  std::string k = make_key(p.col, p.row);
  InvalidRegionPair v = InvalidRegionPair(k, c);
  if(invalid_region.find(k) == invalid_region.end())
    invalid_region.insert(v);
}
Example #25
0
SkPDFIndirectReference SkPDFGradientShader::Make(SkPDFDocument* doc,
                                             SkShader* shader,
                                             const SkMatrix& canvasTransform,
                                             const SkIRect& bbox) {
    SkASSERT(shader);
    SkASSERT(SkShader::kNone_GradientType != shader->asAGradient(nullptr));
    SkPDFGradientShader::Key key = make_key(shader, canvasTransform, bbox);
    bool alpha = gradient_has_alpha(key);
    return find_pdf_shader(doc, std::move(key), alpha);
}
Example #26
0
/* This is the routine that uses the Arr produced by build_stachan_list.
It returns and integer index of the station/channel defined by sta,chan.
If that station and channel are not found in the Arr, it returns -1.
*/
int get_channel_index(Arr *a, char *sta, char *chan)
{
	char *key;
	int *ichan;
	key = make_key(sta,chan);
	ichan = (int *)getarr(a,key);
	if(ichan == NULL)
		return(-1);
	else
		return(*ichan);
}
Example #27
0
File: data.c Project: Tayyib/uludag
int
db_del_app(const char *app)
{
	struct databases db;
	char *list, *list2, *t, *s;
	int e, ret = -1;

	if (open_env(&db, APP_DB | MODEL_DB | CODE_DB)) goto out;

	list = get_data(db.app, app, NULL, &e);
	if (!list) goto out;

	for (t = list; t; t = s) {
		s = strchr(t, '/');
		if (s) {
			*s = '\0';
			++s;
		}

		list2 = get_data(db.model, t, NULL, &e);

		if (list2) {
			char *k;
			int sa = strlen(app);
			k = strstr(list2, app);
			if (k) {
				if (k[sa] == '/') ++sa;
				memmove(k, k + sa, strlen(k) - sa + 1);
				sa = strlen(list2);
				if (sa > 0) {
					if (list2[sa-1] == '/')
						list2[sa-1] = '\0';
				}
				e = put_data(db.model, t, list2, strlen(list2) + 1);
				if (e) goto out;
			}
		}
		free(list2);

		e = db_delete_code(model_lookup_class(t), app);
		e = del_data(db.code, make_key(model_lookup_class(t), app));
		//if (e) goto out;
	}

	free(list);

	e = del_data(db.app, app);
	if (e) goto out;

	ret = 0;
out:
	close_env(&db);
	return ret;
}
Example #28
0
void
db_put_dn(char *data_dn)
{
    int ret;
    DBT key = {0};
    DBT data = {0};

	if(db_lock == NULL){
		db_lock = PR_NewLock();
	}
	PR_Lock(db_lock);
    create_db();
    
    if ((ret = DB_OPEN(dbp, NULL, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
        dbp->err(dbp, ret, "%s", DATABASE);
    } 
    memset(&key, 0, sizeof(key));
    memset(&data, 0, sizeof(data));
    

    key.data = (char *)malloc(key_buffer_size);
    /* make_key will set up the key and the data */ 
    make_key(&key);

    data.data = slapi_ch_strdup(data_dn);
    data.size = strlen(data_dn);


    switch (ret =
		dbp->put(dbp, NULL, &key, &data, DB_NOOVERWRITE)) {
	case 0: 
	   	slapi_log_error(SLAPI_LOG_PLUGIN, DB_PLUGIN_NAME, "db: %s: key stored.\n", (char *)key.data);
	break;
	case DB_KEYEXIST:
		slapi_log_error(SLAPI_LOG_PLUGIN, DB_PLUGIN_NAME, "db: %s: key previously stored.\n",
			(char *)key.data);
	break;
	default:
	   	dbp->err(dbp, ret, "DB->put");
	goto err;
    }

    err:
    if(ret){
		slapi_log_error(SLAPI_LOG_PLUGIN, DB_PLUGIN_NAME, "db: Error detected in db_put \n");
    }
	free(key.data);
	if (dbp){
		dbp->close(dbp,0);
		dbp=NULL;
	}
	PR_Unlock(db_lock);

}
Example #29
0
static struct ptr_descr *find_ptr(unsigned long long ptr)
{
	struct ptr_descr *ptrd;
	int key = make_key(&ptr, sizeof(ptr)) & HASH_MASK;

	for (ptrd = ptr_hash[key]; ptrd; ptrd = ptrd->next) {
		if (ptrd->ptr == ptr)
			return ptrd;
	}

	return NULL;
}
Example #30
0
void output_num_instances(PerfCounter obj, int numInst, RuntimeSettings rt)
{
    char key[NAME_LEN];
    char sdata[NAME_LEN];

    make_key(key, NAME_LEN, obj.index, "inst");
    memset(sdata, 0, NAME_LEN);
    sprintf(sdata, "%d", numInst);
    add_key(rt.cnames, key, sdata, TDB_INSERT);

    return;
}