=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/systat/pool.c,v retrieving revision 1.1 retrieving revision 1.2 diff -c -r1.1 -r1.2 *** src/usr.bin/systat/pool.c 2008/11/02 06:23:28 1.1 --- src/usr.bin/systat/pool.c 2008/11/02 07:14:16 1.2 *************** *** 1,4 **** ! /* $OpenBSD: pool.c,v 1.1 2008/11/02 06:23:28 canacar Exp $ */ /* * Copyright (c) 2008 Can Erkin Acar * --- 1,4 ---- ! /* $OpenBSD: pool.c,v 1.2 2008/11/02 07:14:16 canacar Exp $ */ /* * Copyright (c) 2008 Can Erkin Acar * *************** *** 32,37 **** --- 32,38 ---- /* qsort callbacks */ int sort_name_callback(const void *s1, const void *s2); + int sort_req_callback(const void *s1, const void *s2); struct pool_info { char name[32]; *************** *** 82,88 **** }; order_type pool_order_list[] = { ! {"name", "name", 0, sort_name_callback}, {NULL, NULL, 0, NULL} }; --- 83,90 ---- }; order_type pool_order_list[] = { ! {"name", "name", 'N', sort_name_callback}, ! {"requests", "requests", 'Q', sort_req_callback}, {NULL, NULL, 0, NULL} }; *************** *** 105,113 **** p1 = (struct pool_info *)s1; p2 = (struct pool_info *)s2; ! return strcmp(p1->name, p2->name); } void sort_pool(void) { --- 107,130 ---- p1 = (struct pool_info *)s1; p2 = (struct pool_info *)s2; ! return strcmp(p1->name, p2->name) * sortdir; } + int + sort_req_callback(const void *s1, const void *s2) + { + struct pool_info *p1, *p2; + p1 = (struct pool_info *)s1; + p2 = (struct pool_info *)s2; + + if (p1->pool.pr_nget < p2->pool.pr_nget) + return sortdir; + if (p1->pool.pr_nget > p2->pool.pr_nget) + return -sortdir; + + return sort_name_callback(s1, s2); + } + void sort_pool(void) { *************** *** 127,133 **** if (num_pools <= 0) return; ! qsort(pools, num_pools, sizeof(struct pool_info), ordering->func); } int --- 144,150 ---- if (num_pools <= 0) return; ! mergesort(pools, num_pools, sizeof(struct pool_info), ordering->func); } int