コード例 #1
0
static int
convert_line(struct _citrus_db_factory *df, const char *line, size_t len)
{
	const char *p;
	char data[LINE_MAX], key[LINE_MAX];

	/* cut off trailing comment */
	p = memchr(line, T_COMM, len);
	if (p)
		len = p - line;

	/* key */
	line = _bcs_skip_ws_len(line, &len);
	if (len == 0)
		return (0);
	p = _bcs_skip_nonws_len(line, &len);
	if (p == line)
		return (0);
	snprintf(key, sizeof(key), "%.*s", (int)(p-line), line);
	_bcs_convert_to_lower(key);

	/* data */
	line = _bcs_skip_ws_len(p, &len);
	_bcs_trunc_rws_len(line, &len);
	snprintf(data, sizeof(data), "%.*s", (int)len, line);

	return (_db_factory_addstr_by_s(df, key, data));
}
コード例 #2
0
ファイル: citrus_lookup.c プロジェクト: AgamAgarwal/minix
static int
seq_lookup_db(struct _citrus_lookup *cl, const char *key,
	      struct _region *data)
{
	cl->cl_rewind = 0;
	free(cl->cl_key);
	cl->cl_key = strdup(key);
	if (cl->cl_ignore_case)
		_bcs_convert_to_lower(cl->cl_key);
	cl->cl_keylen = strlen(cl->cl_key);
	_db_locator_init(&cl->cl_dblocator);
	return _db_lookup_by_s(cl->cl_db, cl->cl_key, data, &cl->cl_dblocator);
}
コード例 #3
0
ファイル: citrus_lookup.c プロジェクト: AgamAgarwal/minix
static int
seq_lookup_plain(struct _citrus_lookup *cl, const char *key,
		 struct _region *data)
{
	size_t len;
	const char *p;

	cl->cl_rewind = 0;
	free(cl->cl_key);
	cl->cl_key = strdup(key);
	if (cl->cl_ignore_case)
		_bcs_convert_to_lower(cl->cl_key);
	cl->cl_keylen = strlen(cl->cl_key);
	_memstream_bind(&cl->cl_plainms, &cl->cl_plainr);
	p = _memstream_matchline(&cl->cl_plainms, cl->cl_key, &len, 0);
	if (p == NULL)
		return ENOENT;
	if (data)
		_region_init(data, __UNCONST(p), len);

	return 0;
}