[Dctrl-tools-devel] dctrl-tools-experimental: export para_compare from lib/sorter.[ch]

Antti-Juhani Kaijanaho ajk at debian.org
Tue Apr 10 21:19:08 UTC 2007


Tue Apr 10 21:52:34 EEST 2007  Antti-Juhani Kaijanaho <ajk at debian.org>
  * export para_compare from lib/sorter.[ch]
diff -rN -u old-dctrl-tools-experimental/lib/paragraph.h new-dctrl-tools-experimental/lib/paragraph.h
--- old-dctrl-tools-experimental/lib/paragraph.h	2007-04-11 00:19:07.000000000 +0300
+++ new-dctrl-tools-experimental/lib/paragraph.h	2007-04-11 00:19:07.000000000 +0300
@@ -80,7 +80,7 @@
 }
 
 static inline
-char * get_field_as(para_t * p, size_t fld_inx)
+char * get_field_as(const para_t * p, size_t fld_inx)
 {
 	struct field_data * fd = &p->fields[fld_inx];
 	return fsaf_getas(p->common->fp, fd->start, fd->end - fd->start);
diff -rN -u old-dctrl-tools-experimental/lib/sorter.c new-dctrl-tools-experimental/lib/sorter.c
--- old-dctrl-tools-experimental/lib/sorter.c	2007-04-11 00:19:07.000000000 +0300
+++ new-dctrl-tools-experimental/lib/sorter.c	2007-04-11 00:19:07.000000000 +0300
@@ -28,17 +28,12 @@
 
 static keys_t *keys;
 
-static
-int para_compare(const void * av, const void * bv)
+int para_compare(keys_t *keys, const para_t *a, const para_t *b)
 {
-	debug("cmp: av = %p, bv = %p", av, bv);
-	para_t ** a = (para_t **)av;
-	para_t ** b = (para_t **)bv;
-
 	int r = 0;
 	for (size_t i = 0; i < keys->nks; i++) {
-		char * af = get_field_as(*a, keys->keys[i].field_inx);
-		char * bf = get_field_as(*b, keys->keys[i].field_inx);
+		char * af = get_field_as(a, keys->keys[i].field_inx);
+		char * bf = get_field_as(b, keys->keys[i].field_inx);
 		if (af == 0 || bf == 0) fatal_enomem(0);
 		switch (keys->keys[i].type) {
 		case FT_STRING:
@@ -69,6 +64,16 @@
 	return r;
 }
 
+static
+int compare(const void * av, const void * bv)
+{
+	debug("cmp: av = %p, bv = %p", av, bv);
+	para_t ** a = (para_t **)av;
+	para_t ** b = (para_t **)bv;
+
+        return para_compare(keys, *a, *b);
+}
+
 void sort_bundle(keys_t * ks, struct para_bundle * pb)
 {
 	size_t num_paras = bundle_size(pb);
@@ -81,5 +86,5 @@
 	debug("sort_bundle: paras = %p, paras+num_paras*sizeof *paras = %p",
 	      paras, paras+num_paras*sizeof *paras);
 
-	qsort(paras, num_paras, sizeof *paras, para_compare);
+	qsort(paras, num_paras, sizeof *paras,  compare);
 }
diff -rN -u old-dctrl-tools-experimental/lib/sorter.h new-dctrl-tools-experimental/lib/sorter.h
--- old-dctrl-tools-experimental/lib/sorter.h	2007-04-11 00:19:07.000000000 +0300
+++ new-dctrl-tools-experimental/lib/sorter.h	2007-04-11 00:19:07.000000000 +0300
@@ -69,9 +69,12 @@
 	ks->keys = 0;
 }
 
+int para_compare(keys_t *, const para_t *, const para_t *);
+
 /*
   Note that this function is NOT reentrant!
 */
 void sort_bundle(keys_t *, struct para_bundle *);
 
+
 #endif /* SORTER_H */





More information about the Dctrl-tools-devel mailing list