Пример #1
0
/*
 * $levelctl(LEVELS)
 * $levelctl(ADD name)
 * $levelctl(ALIAS old-name new-name)
 * $levelctl(LOOKUP name-or-number)
 * $levelctl(NORMALIZE string)
 */
char *levelctl	(char *input)
{
	char	*listc, *retval;
	const char *newlevel, *oldlevel;
	int	oldnum, newnum;

	GET_FUNC_ARG(listc, input);
        if (!my_strnicmp(listc, "LEVELS", 2)) {
		retval = get_all_levels();
		RETURN_MSTR(retval);
        } else if (!my_strnicmp(listc, "ADD", 2)) {
		GET_FUNC_ARG(newlevel, input);
		newnum = add_new_level(newlevel);
		RETURN_INT(newnum);
        } else if (!my_strnicmp(listc, "ALIAS", 2)) {
		GET_FUNC_ARG(oldlevel, input);
		GET_FUNC_ARG(newlevel, input);
		oldnum = str_to_level(oldlevel);
		newnum = add_new_level_alias(oldnum, newlevel);
		RETURN_INT(newnum);
        } else if (!my_strnicmp(listc, "LOOKUP", 2)) {
		GET_FUNC_ARG(newlevel, input);
		if (is_number(newlevel)) {
			oldnum = STR2INT(newlevel);
			oldlevel = level_to_str(oldnum);
			RETURN_STR(oldlevel);
		} else {
			oldnum = str_to_level(newlevel);
			RETURN_INT(oldnum);
		}
        } else if (!my_strnicmp(listc, "NORMALIZE", 1)) {
		Mask m;
		const char *r;
		char *err = NULL;

		mask_unsetall(&m);
		str_to_mask(&m, input, &err);	/* Errors are ignored */
		r = mask_to_str(&m);
		RETURN_STR(r);
	}

        RETURN_EMPTY;
}
Пример #2
0
int	add_new_level_alias (int level, const char *name)
{
	const char *name_copy;
	int *	levelnum;
	int	i;

	if ((i = str_to_level(name)) != -1)
		return i;

	name_copy = malloc_strdup(name);
	levelnum = new_malloc(sizeof(int));
	*levelnum = level;
	add_to_bucket(level_bucket, name_copy, levelnum);
	return *levelnum;
}
Пример #3
0
int	add_new_level (const char *name)
{
	const char *name_copy;
	int *	levelnum;
	int	i;

	if ((i = str_to_level(name)) != -1)
		return i;

	/* Don't allow overflow */
	if (next_level >= BIT_MAXBIT)
		return -1;

	name_copy = malloc_strdup(name);
	levelnum = new_malloc(sizeof(int));
	*levelnum = next_level++;
	add_to_bucket(level_bucket, name_copy, levelnum);
	return *levelnum;
}
Пример #4
0
int main(int argc, char **argv)
{
    io_cache_handle_t handle = 0;
    int err;
    int c;
    long long block_size = 16<<20LL;
    long long cache_size = 128<<20LL;
    long long file_size = 0;
    char filename[PATH_MAX];
    char log_level[40];
    struct stat stbuf;

    if( (prog = strrchr(argv[0], '/') ) )
        ++prog;
    else prog = argv[0];

    filename[0] = 0;
    log_level[0] = 0;
    strncat(log_level, "info", 4);
    opterr = 0;
    while( ( c = getopt(argc, argv, "f:b:c:l:h") ) != EOF )
        switch(c)
        {
        case 'f':
            strncat(filename, optarg, sizeof(filename)-1);
            break;
        case 'b': /* file read block size */
            block_size = get_size(optarg, block_size);
            break;
        case 'c':
            cache_size = get_size(optarg, cache_size);
            break;
        case 'l':
            log_level[0] = 0;
            strncat(log_level, optarg, sizeof(log_level)-1);
            break;
        case 'h':
        case '?':
        default:
            usage();
        }

    if(optind != argc)
        usage();

    io_cache_log_level_set(str_to_level(log_level));
    if(stat(filename, &stbuf))
    {
        fprintf(stderr, "Error [%s] stating file [%s]\n", strerror(errno), filename);
        return -1;
    }
    file_size = (long long)stbuf.st_size;
    printf("IO cache test read buffer block size [%lld] bytes, cache_size [%lld] bytes, filesize [%lld] bytes\n", 
           block_size, cache_size, file_size);
    err = io_cache_initialize(filename, cache_size, NULL, &handle);
    assert(err == 0);
    test_cache_read_extended(handle, file_size, block_size);
    err = io_cache_offset_set(handle, 0); 
    assert(err == 0);
    test_cache_read_1(handle, file_size, block_size);
    err = io_cache_finalize(&handle);
    assert(err == 0);
    return 0;
}