/* * $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; }
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; }
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; }
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; }