Keep the exec menu entries sorted.
Go for it okan@
This commit is contained in:
parent
52d6163acf
commit
0f1b286a2e
@ -14,7 +14,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: search.c,v 1.12 2008/07/11 14:21:28 okan Exp $
|
||||
* $Id: search.c,v 1.13 2008/09/03 04:39:12 canacar Exp $
|
||||
*/
|
||||
|
||||
#include "headers.h"
|
||||
@ -175,14 +175,24 @@ search_match_text(struct menu_q *menuq, struct menu_q *resultq, char *search)
|
||||
void
|
||||
search_match_exec(struct menu_q *menuq, struct menu_q *resultq, char *search)
|
||||
{
|
||||
struct menu *mi;
|
||||
struct menu *mi, *mj;
|
||||
|
||||
TAILQ_INIT(resultq);
|
||||
|
||||
TAILQ_FOREACH(mi, menuq, entry)
|
||||
if (_strsubmatch(search, mi->text, 1))
|
||||
TAILQ_FOREACH(mi, menuq, entry) {
|
||||
if (_strsubmatch(search, mi->text, 1) == 0)
|
||||
continue;
|
||||
for (mj = TAILQ_FIRST(resultq); mj != NULL;
|
||||
mj = TAILQ_NEXT(mj, resultentry)) {
|
||||
if (strcasecmp(mi->text, mj->text) < 0) {
|
||||
TAILQ_INSERT_BEFORE(mj, mi, resultentry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mj == NULL)
|
||||
TAILQ_INSERT_TAIL(resultq, mi, resultentry);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
_strsubmatch(char *sub, char *str, int zeroidx)
|
||||
|
Loading…
Reference in New Issue
Block a user