Home | History | Annotate | Download | only in util

Lines Matching refs:HDF

8  * http://www.clearsilver.net/license.hdf
33 * we are merely using part of the HDF name for lookup, and that might
38 * it, we use the HDF node itself as the key, and have specific
44 HDF *ha = (HDF *)a;
45 HDF *hb = (HDF *)b;
52 HDF *ha = (HDF *)a;
56 static NEOERR *_alloc_hdf (HDF **hdf, const char *name, size_t nlen,
57 const char *value, int dup, int wf, HDF *top)
59 *hdf = calloc (1, sizeof (HDF));
60 if (*hdf == NULL)
62 return nerr_raise (NERR_NOMEM, "Unable to allocate memory for hdf element");
65 (*hdf)->top = top;
69 (*hdf)->name_len = nlen;
70 (*hdf)->name = (char *) malloc (nlen + 1);
71 if ((*hdf)->name == NULL)
73 free((*hdf));
74 (*hdf) = NULL;
76 "Unable to allocate memory for hdf element: %s", name);
78 strncpy((*hdf)->name, name, nlen);
79 (*hdf)->name[nlen] = '\0';
85 (*hdf)->alloc_value = 1;
86 (*hdf)->value = strdup(value);
87 if ((*hdf)->value == NULL)
89 free((*hdf)->name);
90 free((*hdf));
91 (*hdf) = NULL;
93 "Unable to allocate memory for hdf element %s", name);
98 (*hdf)->alloc_value = wf;
102 (*hdf)->value = (char *)value;
123 static void _dealloc_hdf (HDF **hdf)
125 HDF *myhdf = *hdf;
126 HDF *next = NULL;
162 *hdf = NULL;
165 NEOERR* hdf_init (HDF **hdf)
168 HDF *my_hdf;
170 *hdf = NULL;
182 *hdf = my_hdf;
187 void hdf_destroy (HDF **hdf)
189 if (*hdf == NULL) return;
190 if ((*hdf)->top == (*hdf))
192 _dealloc_hdf(hdf);
196 static int _walk_hdf (HDF *hdf, const char *name, HDF **node)
198 HDF *parent = NULL;
199 HDF *hp = hdf;
200 HDF hash_key;
207 if (hdf == NULL) return -1;
210 *node = hdf;
214 if (hdf->link)
216 r = _walk_hdf (hdf->top, hdf->value, &hp);
226 parent = hdf;
227 hp = hdf->child;
293 int hdf_get_int_value (HDF *hdf, const char *name, int defval)
295 HDF *node;
299 if ((_walk_hdf(hdf, name, &node) == 0) && (node->value != NULL))
310 char* hdf_get_value (HDF *hdf, const char *name, const char *defval)
312 HDF *node;
314 if ((_walk_hdf(hdf, name, &node) == 0) && (node->value != NULL))
321 char* hdf_get_valuevf (HDF *hdf, const char *namefmt, va_list ap)
323 HDF *node;
328 if ((_walk_hdf(hdf, name, &node) == 0) && (node->value != NULL))
337 char* hdf_get_valuef (HDF *hdf, const char *namefmt, ...)
343 val = hdf_get_valuevf(hdf, namefmt, ap);
348 NEOERR* hdf_get_copy (HDF *hdf, const char *name, char **value,
351 HDF *node;
353 if ((_walk_hdf(hdf, name, &node) == 0) && (node->value != NULL))
377 HDF* hdf_get_obj (HDF *hdf, const char *name)
379 HDF *obj;
381 _walk_hdf(hdf, name, &obj);
385 HDF* hdf_get_child (HDF *hdf, const char *name)
387 HDF *obj;
388 _walk_hdf(hdf, name, &obj);
393 HDF_ATTR* hdf_get_attr (HDF *hdf, const char *name)
395 HDF *obj;
396 _walk_hdf(hdf, name, &obj);
401 NEOERR* hdf_set_attr (HDF *hdf, const char *name, const char *key,
404 HDF *obj;
407 _walk_hdf(hdf, name, &obj);
460 HDF* hdf_obj_child (HDF *hdf)
462 HDF *obj;
463 if (hdf == NULL) return NULL;
464 if (hdf->link)
466 if (_walk_hdf(hdf->top, hdf->value, &obj))
470 return hdf->child;
473 HDF* hdf_obj_next (HDF *hdf)
475 if (hdf == NULL) return NULL;
476 return hdf->next;
479 HDF* hdf_obj_top (HDF *hdf)
481 if (hdf == NULL) return NULL;
482 return hdf->top;
485 HDF_ATTR* hdf_obj_attr (HDF *hdf)
487 if (hdf == NULL) return NULL;
488 return hdf->attr;
491 char* hdf_obj_name (HDF *hdf)
493 if (hdf == NULL) return NULL;
494 return hdf->name;
497 char* hdf_obj_value (HDF *hdf)
501 if (hdf == NULL) return NULL;
502 while (hdf->link && count < 100)
504 if (_walk_hdf (hdf->top, hdf->value, &hdf))
508 return hdf->value;
554 NEOERR* _hdf_hash_level(HDF *hdf)
557 HDF *child;
559 err = ne_hash_init(&(hdf->hash), hash_hdf_hash, hash_hdf_comp);
562 child = hdf->child;
565 err = ne_hash_insert(hdf->hash, child, child);
572 static NEOERR* _set_value (HDF *hdf, const char *name, const char *value,
574 HDF **set_node)
577 HDF *hn, *hp, *hs;
578 HDF hash_key;
585 if (hdf == NULL)
587 return nerr_raise(NERR_ASSERT, "Unable to set %s on NULL hdf", name);
594 if (hdf->attr == NULL)
596 hdf->attr = attr;
600 _merge_attr(hdf->attr, attr);
603 if (hdf->value == value)
605 if (set_node != NULL) *set_node = hdf;
608 if (hdf->alloc_value)
610 free(hdf->value);
611 hdf->value = NULL;
615 hdf->alloc_value = 0;
616 hdf->value = NULL;
620 hdf->alloc_value = 1;
621 hdf->value = strdup(value);
622 if (hdf->value == NULL)
628 hdf->alloc_value = wf;
629 hdf->value = (char *)value;
631 if (set_node != NULL) *set_node = hdf;
643 if (hdf->link)
645 char *new_name = (char *) malloc(strlen(hdf->value) + 1 + strlen(name) + 1);
650 strcpy(new_name, hdf->value);
653 err = _set_value (hdf->top, new_name, value, dup, wf, link, attr, set_node);
659 hn = hdf;
714 * at the last part of the HDF name) */
718 err = _alloc_hdf (&hp, n, x, NULL, 0, 0, hdf->top);
722 err = _alloc_hdf (&hp, n, x, value, dup, wf, hdf->top);
750 /* If there is a matching node and we're at the end of the HDF
799 err = _set_value (hdf->top, new_name, value, dup, wf, link, attr, set_node);
803 HDF name space to
821 NEOERR* hdf_set_value (HDF *hdf, const char *name, const char *value)
823 return nerr_pass(_set_value (hdf, name, value, 1, 1, 0, NULL, NULL));
826 NEOERR* hdf_set_value_attr (HDF *hdf, const char *name, const char *value,
829 return nerr_pass(_set_value (hdf, name, value, 1, 1, 0, attr, NULL));
832 NEOERR* hdf_set_symlink (HDF *hdf, const char *src, const char *dest)
834 return nerr_pass(_set_value (hdf, src, dest, 1, 1, 1, NULL, NULL));
837 NEOERR* hdf_set_int_value (HDF *hdf, const char *name, int value)
842 return nerr_pass(_set_value (hdf, name, buf, 1, 1, 0, NULL, NULL));
845 NEOERR* hdf_set_buf (HDF *hdf, const char *name, char *value)
847 return nerr_pass(_set_value (hdf, name, value, 0, 1, 0, NULL, NULL));
850 NEOERR* hdf_set_copy (HDF *hdf, const char *dest, const char *src)
852 HDF *node;
853 if ((_walk_hdf(hdf, src, &node) == 0) && (node->value != NULL))
855 return nerr_pass(_set_value (hdf, dest, node->value, 0, 0, 0, NULL, NULL));
860 NEOERR* hdf_set_valuevf (HDF *hdf, const char *fmt, va_list ap)
879 err = hdf_set_value(hdf, k, v);
884 NEOERR* hdf_set_valuef (HDF *hdf, const char *fmt, ...)
890 err = hdf_set_valuevf(hdf, fmt, ap);
895 NEOERR* hdf_get_node (HDF *hdf, const char *name, HDF **ret)
897 _walk_hdf(hdf, name, ret);
900 return nerr_pass(_set_value (hdf, name, NULL, 0, 1, 0, NULL, ret));
908 NEOERR *hdf_sort_obj (HDF *h, int (*compareFunc)(const void *, const void *))
912 HDF *p, *c;
943 NEOERR* hdf_remove_tree (HDF *hdf, const char *name)
945 HDF *hp = hdf;
946 HDF *lp = NULL, *ln = NULL; /* last parent, last node */
951 if (hdf == NULL) return STATUS_OK;
953 hp = hdf->child;
959 lp = hdf;
1051 static NEOERR * _copy_nodes (HDF *dest, HDF *src)
1054 HDF *dt, *st;
1077 NEOERR* hdf_copy (HDF *dest, const char *name, HDF *src)
1080 HDF *node;
1142 static NEOERR* hdf_dump_cb(HDF *hdf, const char *prefix, int dtype, int lvl,
1159 if (hdf != NULL) hdf = hdf->child;
1161 while (hdf != NULL)
1164 if (hdf->value)
1166 if (hdf->link) op = ':';
1169 err = dump_cbf(rock, "%s.%s", prefix, hdf->name);
1173 err = dump_cbf(rock, "%s%s", whsp, hdf->name);
1176 if (hdf->attr)
1178 HDF_ATTR *attr = hdf->attr;
1207 if (strchr (hdf->value, '\n'))
1209 int vlen = strlen(hdf->value);
1211 while (strstr(hdf->value, ml) || ((vlen > ml_len) && !strncmp(hdf->value + vlen - ml_len + 1, ml, strlen(ml) - 1)))
1216 if (hdf->value[strlen(hdf->value)-1] != '\n')
1217 err = dump_cbf(rock, " << %s%s%s", ml+1, hdf->value, ml);
1219 err = dump_cbf(rock, " << %s%s%s", ml+1, hdf->value, ml+1);
1223 err = dump_cbf(rock, " %c %s\n", op, hdf->value);
1227 if (hdf->child)
1231 p = (char *) malloc (strlen(hdf->name) + strlen(prefix) + 2);
1232 sprintf (p, "%s.%s", prefix, hdf->name);
1233 err = hdf_dump_cb (hdf, p, dtype, lvl+1, rock, dump_cbf);
1238 if (hdf->name && (dtype != DUMP_TYPE_DOTTED))
1240 err = dump_cbf(rock, "%s%s {\n", whsp, hdf->name);
1242 err = hdf_dump_cb (hdf, hdf->name, dtype, lvl+1, rock, dump_cbf);
1248 err = hdf_dump_cb (hdf, hdf->name, dtype, lvl+1, rock, dump_cbf);
1253 hdf = hdf->next;
1258 NEOERR* hdf_dump_str (HDF *hdf, const char *prefix, int dtype, STRING *str)
1260 return nerr_pass(hdf_dump_cb(hdf, prefix, dtype, 0, str, _string_dump_cb));
1263 NEOERR* hdf_dump(HDF *hdf, const char *prefix)
1265 return nerr_pass(hdf_dump_cb(hdf, prefix, DUMP_TYPE_DOTTED, 0, stdout, _fp_dump_cb));
1268 NEOERR* hdf_dump_format (HDF *hdf, int lvl, FILE *fp)
1270 return nerr_pass(hdf_dump_cb(hdf, "", DUMP_TYPE_PRETTY, 0, fp, _fp_dump_cb));
1273 NEOERR *hdf_write_file (HDF *hdf, const char *path)
1282 err = hdf_dump_format (hdf, 0, fp);
1292 NEOERR *hdf_write_file_atomic (HDF *hdf, const char *path)
1305 err = hdf_dump_format (hdf, 0, fp);
1324 NEOERR *hdf_write_string (HDF *hdf, char **s)
1333 err = hdf_dump_str (hdf, NULL, 1, &str);
1558 static NEOERR* _hdf_read_string (HDF *hdf, const char **str, STRING *line,
1562 HDF *lower;
1596 err = hdf_read_file(hdf, name);
1621 /* Valid hdf name is [0-9a-zA-Z_.]+ */
1644 err = _set_value (hdf, name, value, 1, 1, 0, attr, NULL);
1656 value = hdf_get_value(hdf->top, value, "");
1657 err = _set_value (hdf, name, value, 1, 1, 0, attr, NULL);
1669 err = _set_value (hdf, name, value, 1, 1, 1, attr, NULL);
1679 lower = hdf_get_obj (hdf, name);
1682 err = _set_value (hdf, name, NULL, 1, 1, 0, attr, &lower);
1745 err = _set_value (hdf, name, m, 0, 1, 0, attr, NULL);
1764 NEOERR * hdf_read_string (HDF *hdf, const char *str)
1770 err = _hdf_read_string(hdf, &str, &line, "<string>", &lineno, INCLUDE_ERROR);
1775 NEOERR * hdf_read_string_ignore (HDF *hdf, const char *str, int ignore)
1781 err = _hdf_read_string(hdf, &str, &line, "<string>", &lineno,
1787 /* The search path is part of the HDF by convention */
1788 NEOERR* hdf_search_path (HDF *hdf, const char *path, char *full)
1790 HDF *paths;
1793 for (paths = hdf_get_child (hdf, "hdf.loadpaths");
1821 NEOERR* hdf_read_file (HDF *hdf, const char *path)
1828 HDF *top = hdf->top;
1838 err = top->fileload(top->fileload_ctx, hdf, path, &ibuf);
1844 err = hdf_search_path (hdf, path, fpath);
1854 err = _hdf_read_string(hdf, &ptr, &line, path, &lineno, INCLUDE_FILE);
1860 void hdf_register_fileload(HDF *hdf, void *ctx, HDFFILELOAD fileload)
1862 if (hdf == NULL) return;
1863 if (hdf->top != NULL) hdf = hdf->top;
1864 hdf->fileload_ctx = ctx;
1865 hdf->fileload = fileload;