Пример #1
0
static uint_t
utf8_get_char_bytes(YogEnv* env, YogHandle* self, const char* s)
{
#define RETURN_IF_MATCH(x, v) do { \
    if ((s[0] & (x)) == (x)) { \
        return (v); \
    } \
} while (0)
    RETURN_IF_MATCH(0xfc, 6);
    RETURN_IF_MATCH(0xf8, 5);
    RETURN_IF_MATCH(0xf0, 4);
    RETURN_IF_MATCH(0xe0, 3);
    RETURN_IF_MATCH(0xc0, 2);
#undef RETURN_IF_MATCH
    return 1;
}
Пример #2
0
int
convert_resource(char *input)
{
#define RETURN_IF_MATCH(i, r) \
	if (strcmp((i), (#r)) == 0) return (RLIMIT_##r)
	RETURN_IF_MATCH(input, AS);
	RETURN_IF_MATCH(input, CORE);
	RETURN_IF_MATCH(input, CPU);
	RETURN_IF_MATCH(input, DATA);
	RETURN_IF_MATCH(input, FSIZE);
	RETURN_IF_MATCH(input, LOCKS);
	RETURN_IF_MATCH(input, MEMLOCK);
	RETURN_IF_MATCH(input, MSGQUEUE);
	RETURN_IF_MATCH(input, NICE);
	RETURN_IF_MATCH(input, NOFILE);
	RETURN_IF_MATCH(input, NPROC);
	RETURN_IF_MATCH(input, RSS);
	RETURN_IF_MATCH(input, RTPRIO);
	RETURN_IF_MATCH(input, RTTIME);
	RETURN_IF_MATCH(input, SIGPENDING);
#undef RETURN_IF_MATCH
	/* FIXME: the returned value may collide with the defined resources */
	return -1;
}