示例#1
0
Kvs_t* in(const char* path) {
    Kvs_t* kvs = init_kvs();

    FILE* instream;
    if ((instream = fopen(path, "rb")) == NULL) {
        return kvs;
    }

    int count;
    fread(&count, sizeof(int), 1, instream);
    if(count <= 0) {
        fclose(instream);
        return kvs;
    }

    Key_t key;
    size_t size;
    for(int i = 0; i < count; i++) {
        fread(&key, sizeof(Key_t), 1, instream);
        fread(&size, sizeof(size_t), 1, instream);

        Value_t value = malloc(size);
        fread(value, size, 1, instream);

        kvs = add_kv(kvs, make_kv(key, value, size));
    }

    fclose(instream);
    return kvs;
}
示例#2
0
文件: util.c 项目: rhennigan/code
hash_table_t * load_alts(const char * path, size_t hs, char a[][BUFSIZ]) {
  char           buffer[BUFSIZ];
  FILE *         alts_file;
  hash_table_t * hash_table;
  uint32_t       i, j, k;

  hash_table = hash_table_init(hs);
  alts_file  = fopen(path, "r");

  for (i = 0; i < NUMA; i++) {
    fgets(buffer, BUFSIZ, alts_file);
    char * key = malloc(BUFSIZ);
    char * val = malloc(BUFSIZ);
    memset(key, '\0', BUFSIZ);
    memset(val, '\0', BUFSIZ);
    for (j = 0; j < BUFSIZ; j++) {
      if (buffer[j] == ',') {
        key[j] = '\0';
        break;
      }
      key[j] = buffer[j];
    }
    for (k = j + 1; k < BUFSIZ; k++) {
      if (buffer[k] == '\n') {
        val[k-j-1] = '\0';
        break;
      }
      val[k-j-1] = buffer[k];
      if (buffer[k] == '\0') break;
    }
    snprintf(a[i], BUFSIZ, "%s", key);
    key_val_t * kv = make_kv(key, strlen(key)+1, val, strlen(val)+1);
    hash_table_insert(hash_table, kv);
    free(kv);
  }

  fclose(alts_file);
  return hash_table;
}
示例#3
0
/**
 * 添加一个参数
 */
Kvs_t* add_param(Kvs_t* kvs, Param_t* pParam) {
	Kv_t* kv = make_kv(pParam -> id, pParam, sizeof(Param_t));
	return add_kv(kvs, kv);
}
示例#4
0
/**
 * 添加一条记录
 */
Kvs_t* add_record(Kvs_t* kvs, Record_t* pRecord) {
	Kv_t* kv = make_kv(pRecord -> id, pRecord, sizeof(Record_t));
	return add_kv(kvs, kv);
}