14 #include <grass/gis.h>
15 #include <grass/glocale.h>
17 static char **scan_rules(
int *);
18 static int cmp(
const void *,
const void *);
29 int size, len, nrules;
35 rules = scan_rules(&nrules);
37 for (i = 0; i < nrules; i++) {
41 if (size < len + n + 2) {
43 list = G_realloc(list, size);
49 memcpy(&list[len], name, n + 1);
67 int result_len, result_max;
68 char *result, **rules;
69 const char *
name, *desc;
74 result = G_malloc(result_max);
81 rules = scan_rules(&nrules);
83 for (i = 0; i < nrules; i++) {
88 desc = _(
"no description");
92 len = strlen(name) + strlen(desc) + 2;
93 if (result_len + len >= result_max) {
94 result_max = result_len + len + 1000;
95 result = G_realloc(result, result_max);
98 sprintf(result + result_len,
"%s;%s;", name, desc);
108 char **scan_rules(
int *nrules)
111 char path[GPATH_MAX];
115 rules =
G_ls2(path, nrules);
117 rules = G_realloc(rules, (*nrules + 3) *
sizeof (
const char *));
119 rules[(*nrules)++] =
G_store(
"random");
120 rules[(*nrules)++] =
G_store(
"grey.eq");
121 rules[(*nrules)++] =
G_store(
"grey.log");
123 qsort(rules, *nrules,
sizeof (
char *), cmp);
128 int cmp(
const void *aa,
const void *bb)
130 char *
const *a = (
char *
const *) aa;
131 char *
const *
b = (
char *
const *) bb;
133 return strcmp(*a, *b);
146 rules = scan_rules(&nrules);
148 for (i = 0; i < nrules; i++)
149 fprintf(out,
"%s\n", rules[i]);
165 rules = scan_rules(&nrules);
167 for (i = 0; i < nrules; i++)
168 if (strcmp(name, rules[i]) == 0)
const char * G_find_key_value(const char *key, const struct Key_Value *kv)
Find given key (case sensitive)
char * G_store(const char *s)
Copy string to allocated memory.
void G_free_key_value(struct Key_Value *kv)
Free allocated Key_Value structure.
int G_snprintf(char *str, size_t size, const char *fmt,...)
snprintf() clone.
void G_list_color_rules(FILE *out)
Print color rules.
struct Key_Value * G_read_key_value_file(const char *file)
Read key/values pairs from file.
char ** G_ls2(const char *dir, int *num_files)
Stores a sorted directory listing in an array.
char * G_color_rules_descriptions(void)
Get color rules description for Option->descriptions.
char * G_color_rules_options(void)
Get list of color rules for Option->options.
void G_free(void *buf)
Free allocated memory.
const char * G_gisbase(void)
Get full path name of the top level module directory.
int G_find_color_rule(const char *name)
Check if color rule is defined.