[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