mirror of
https://github.com/mariusgreuel/avrdude.git
synced 2025-12-16 10:41:07 +00:00
patch #7671: Sorting programmers and parts lists for console output
git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1019 81a1dc3b-b13d-400b-aceb-764788c761c2
This commit is contained in:
37
lists.c
37
lists.c
@@ -1280,6 +1280,43 @@ lsrch ( LISTID lid, void * p, int (* compare)(void * p1, void * p2) )
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
| lsort
|
||||
|
|
||||
| sort list - sorts list inplace (using bubble sort)
|
||||
|
|
||||
----------------------------------------------------------------------*/
|
||||
void
|
||||
lsort ( LISTID lid, int (* compare)(void * p1, void * p2) )
|
||||
{
|
||||
LIST * l;
|
||||
LISTNODE * lt; /* this */
|
||||
LISTNODE * ln; /* next */
|
||||
int unsorted = 1;
|
||||
|
||||
l = (LIST *)lid;
|
||||
|
||||
CKLMAGIC(l);
|
||||
|
||||
while(unsorted){
|
||||
lt = l->top;
|
||||
unsorted = 0;
|
||||
while (lt!=NULL) {
|
||||
CKMAGIC(lt);
|
||||
ln = lt->next;
|
||||
if (ln!= NULL && compare(lt->data,ln->data) > 0) {
|
||||
void * p = ln->data;
|
||||
ln->data = lt->data;
|
||||
lt->data = p;
|
||||
unsorted = 1;
|
||||
}
|
||||
lt = ln;
|
||||
}
|
||||
}
|
||||
|
||||
CKLMAGIC(l);
|
||||
}
|
||||
|
||||
|
||||
int lprint ( FILE * f, LISTID lid )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user