libglvnd/src/util/uthash/tests/test30.c
Brian Nguyen 93bb43c5e7 Add uthash commit 2c8cd98e0be93d38ff3340a0fbce300bc6739b08 to src/util
uthash's hashtable implementation will be used by libGLX for storing
various mappings needed for correct dispatching.
2013-08-26 11:03:41 -07:00

44 lines
842 B
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "utlist.h"
#define BUFLEN 20
typedef struct el {
char bname[BUFLEN];
struct el *next, *prev;
} el;
int namecmp(void *_a, void *_b) {
el *a = (el*)_a;
el *b = (el*)_b;
return strcmp(a->bname,b->bname);
}
el *head = NULL;
int main(int argc, char *argv[]) {
el *name, *tmp;
char linebuf[BUFLEN];
FILE *file;
if ( (file = fopen( "test11.dat", "r" )) == NULL ) {
perror("can't open: ");
exit(-1);
}
while (fgets(linebuf,BUFLEN,file) != NULL) {
if ( (name = (el*)malloc(sizeof(el))) == NULL) exit(-1);
strncpy(name->bname,linebuf,BUFLEN);
CDL_PREPEND(head, name);
}
CDL_SORT(head, namecmp);
CDL_FOREACH(head,tmp) printf("%s", tmp->bname);
fclose(file);
return 0;
}