Пример #1
0
Файл: list.c Проект: caomw/grass
/* get list of running monitors */
void list_mon(char ***list, int *n)
{
    int i;
    const char *name;
    const char *env_prefix = "MONITOR_";
    int env_prefix_len;
    char **tokens;
    
    env_prefix_len = strlen(env_prefix);
    
    *list = NULL;
    *n    = 0;
    tokens = NULL;
    for (i = 0; (name = G_get_env_name(i)); i++) {
	if (strncmp(env_prefix, name, env_prefix_len) == 0) {
	    tokens = G_tokenize(name, "_");
	    if (G_number_of_tokens(tokens) != 3 ||
		strcmp(tokens[2], "ENVFILE") != 0)
		continue;
	    *list = G_realloc(*list, (*n + 1) * sizeof(char *));
	    /* GRASS variable names are upper case, but monitor names are lower
	     * case. */
	    (*list)[*n] = G_store_lower(tokens[1]);
	    (*n)++;
	    G_free_tokens(tokens);
	    tokens = NULL;
	}
    }
    
}
Пример #2
0
void clean_env(const char *name)
{
    int i;
    char *u_name;
    const char *env_prefix = "MONITOR_";
    const char *env;
    int env_prefix_len;
    char **tokens;

    u_name = G_store_upper(name);
    env_prefix_len = strlen(env_prefix);
    
    tokens = NULL;
    for (i = 0; (env = G_get_env_name(i)); i++) {
	if (strncmp(env_prefix, env, env_prefix_len) != 0)
	    continue;
	
	tokens = G_tokenize(env, "_");
	if (G_number_of_tokens(tokens) != 3 ||
	    strcmp(tokens[1], u_name) != 0)
	    continue;
	G_unsetenv(env);
	i--; /* env has been removed for the list */
	G_free_tokens(tokens);
	tokens = NULL;
    }

    G_unsetenv("MONITOR");
}