]> pd.if.org Git - zpackage/blobdiff - lib/jsw/jsw_atree.c
support for package dependencies
[zpackage] / lib / jsw / jsw_atree.c
index 82c24ca81aa1bef809df5b3bfca26d83a29c269b..d73e22afc18898ad80d579f5c61efa0e2ce4075f 100644 (file)
@@ -1,3 +1,4 @@
+#define _POSIX_C_SOURCE 200809L
 /*
   Andersson tree library
 
@@ -66,6 +67,10 @@ struct jsw_atrav {
   }                                                                \
 } while(0)
 
+int jsw_afind_strcmp(const void *a, const void *b) {
+       return strcmp(a, b);
+}
+
 static jsw_anode_t *new_node ( jsw_atree_t *tree, void *data )
 {
   jsw_anode_t *rn = malloc ( sizeof *rn );
@@ -80,6 +85,10 @@ static jsw_anode_t *new_node ( jsw_atree_t *tree, void *data )
   return rn;
 }
 
+jsw_atree_t *jsw_anew_str(void) {
+       return jsw_anew(jsw_afind_strcmp, (dup_f)strdup, (rel_f)free);
+}
+
 jsw_atree_t *jsw_anew ( cmp_f cmp, dup_f dup, rel_f rel )
 {
   jsw_atree_t *rt = malloc ( sizeof *rt );
@@ -108,10 +117,16 @@ jsw_atree_t *jsw_anew ( cmp_f cmp, dup_f dup, rel_f rel )
   return rt;
 }
 
-void jsw_adelete ( jsw_atree_t *tree )
-{
-  jsw_anode_t *it = tree->root;
-  jsw_anode_t *save;
+void jsw_adelete(jsw_atree_t *tree) {
+       jsw_anode_t *it;
+       jsw_anode_t *save;
+
+       if (!tree) {
+               return;
+       }
+
+       it = tree->root;
+
 
   /* Destruction by rotation */
   while ( it != tree->nil ) {