This repository has been archived on 2024-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
ncsa-mosaic/libwww2/HTSort.c

72 lines
1.1 KiB
C

/* Simple string sorting support, thanks to qsort(). */
#include "../config.h"
#include "HTUtils.h"
#include <string.h>
#define SIZE_OF_HUNK 100
static char **hunk = NULL;
static int size_of_hunk;
static int count;
void HTSortInit (void)
{
count = 0;
if (!hunk)
{
size_of_hunk = SIZE_OF_HUNK;
hunk = (char **)malloc (sizeof (char *) * size_of_hunk);
}
return;
}
static void expand_hunk (void)
{
/* Make hunk bigger by SIZE_OF_HUNK elements. */
size_of_hunk += SIZE_OF_HUNK;
hunk = (char **)realloc (hunk, sizeof (char *) * size_of_hunk);
return;
}
void HTSortAdd (char *str)
{
/* If we don't have room, expand. */
if (count == size_of_hunk)
expand_hunk ();
hunk[count++] = str;
return;
}
static int dsortf (char **s1, char **s2)
{
return (strcmp (*(char **)s1, *(char **)s2));
}
void HTSortSort (void)
{
qsort ((void *)hunk,
count,
sizeof (char *),
(void *)dsortf);
return;
}
int HTSortCurrentCount (void)
{
return count;
}
char *HTSortFetch (int i)
{
if (i < count)
return hunk[i];
else
return NULL;
}