Beispiel #1
0
/*
 * =========================================================================
 */
am_sl_t *
calc_load_file(
    char *	filename)
{
    char pattern[1025];

    am_sl_t *sl_list;

    FILE *file = fopen(filename, "r");

    if (!file) {
	return NULL;
    }

    sl_list = new_sl();

    while(fgets(pattern, 1025, file)) {
	if(strlen(pattern)>0 && pattern[strlen(pattern)-1] == '\n')
	    pattern[strlen(pattern)-1] = '\0';
	sl_list = append_sl(sl_list, pattern);
    }  
    fclose(file);

    return sl_list;
}
Beispiel #2
0
am_sl_t *
insert_sort_sl(
    am_sl_t *	sl,
    char *	name)
{
    sle_t *a, *b;

    if(!sl) {
	sl = new_sl();
    }

    for(b=sl->first; b != NULL; b=b->next) {
	int i = strcmp(b->name, name);
	if(i==0) return(sl); /* already there, no need to insert */
	if(i>0) break;
    }

    if(b == sl->first) return insert_sl(sl, name);
    if(b == NULL)      return append_sl(sl, name);

    a = g_malloc(sizeof(sle_t));
    a->name = g_strdup(name);

    /* insert before b */
    a->next = b;
    a->prev = b->prev;
    b->prev->next = a;
    b->prev = a;
    sl->nb_element++;
    return(sl);
}
Beispiel #3
0
am_sl_t *
append_sl(
    am_sl_t *	sl,
    char *	name)
{
    sle_t *a;

    if(!sl) {
	sl = new_sl();
    }
    a = g_malloc(sizeof(sle_t));
    a->name = g_strdup(name);
    a->prev = sl->last;
    a->next = NULL;
    if(a->prev)
	a->prev->next = a;
    else
	sl->first = a;
    sl->last = a;
    sl->nb_element++;
    return(sl);
}