Пример #1
0
int
_citrus_db_lookup8_by_string(struct _citrus_db *db, const char *key,
                             uint8_t *rval, struct _citrus_db_locator *dl)
{
    struct _region r;
    int ret;

    ret = _citrus_db_lookup_by_string(db, key, &r, dl);
    if (ret)
        return (ret);

    if (_region_size(&r) != 1)
        return (EFTYPE);

    if (rval)
        memcpy(rval, _region_head(&r), 1);

    return (0);
}
Пример #2
0
int
_citrus_db_lookup_string_by_string(struct _citrus_db *db, const char *key,
                                   const char **rdata, struct _citrus_db_locator *dl)
{
    struct _region r;
    int ret;

    ret = _citrus_db_lookup_by_string(db, key, &r, dl);
    if (ret)
        return (ret);

    /* check whether the string is null terminated */
    if (_region_size(&r) == 0)
        return (EFTYPE);
    if (*((const char*)_region_head(&r)+_region_size(&r)-1) != '\0')
        return (EFTYPE);

    if (rdata)
        *rdata = _region_head(&r);

    return (0);
}
Пример #3
0
int
_citrus_db_lookup32_by_string(struct _citrus_db *db, const char *key,
                              uint32_t *rval, struct _citrus_db_locator *dl)
{
    struct _region r;
    uint32_t val;
    int ret;

    ret = _citrus_db_lookup_by_string(db, key, &r, dl);
    if (ret)
        return (ret);

    if (_region_size(&r) != 4)
        return (EFTYPE);

    if (rval) {
        memcpy(&val, _region_head(&r), 4);
        *rval = be32toh(val);
    }

    return (0);
}
Пример #4
0
int
_citrus_db_lookup16_by_string(struct _citrus_db *db, const char *key,
			      uint16_t *rval, struct _citrus_db_locator *dl)
{
	int ret;
	struct _region r;
	uint16_t val;

	ret = _citrus_db_lookup_by_string(db, key, &r, dl);
	if (ret)
		return ret;

	if (_region_size(&r) != 2)
		return EFTYPE;

	if (rval) {
		memcpy(&val, _region_head(&r), 2);
		*rval = be16toh(val);
	}

	return 0;
}