Newer
Older
/*
** alias.c for 42sh
**
** Made by Seblu
** Login <seblu@epita.fr>
**
** Started on Wed Aug 23 00:39:17 2006 Seblu
new->size = step;
new->pos = 0;
new->db = NULL;
return new;
}
void alias_add(s_alias *aliases, const char *name, const char *value)
int freeplace = 0;
size_t index;
//check if already exist and if free place exist
for (register int i = 0; aliases && aliases->db[i]; ++i)
if (!strcmp(aliases->db[i]->name, name)) {
free(aliases->db[i]->value);
aliases->db[i]->value = strdup(value);
return;
}
else if (!freeplace && *aliases->db[i]->name == 0)
index = i;
//if a place is free, fill it
if (freeplace) {
aliases->db[index]->name = strdup(name);
aliases->db[index]->value = strdup(value);
return;
}
//create a new one
new->name = strdup(name);
new->value = strdup(value);
//add a new alias if not find
if (aliases->pos >= aliases->size) {
aliases->size += step;
secrealloc(aliases->db, aliases->db, aliases->size * sizeof (s_alias_item));
}
aliases->db[aliases->pos] = new;
++aliases->pos;
}
{
//find alias index
for (register int i = 0; aliases && aliases->db[i]; ++i)
if (!strcmp(aliases->db[i]->name, name)) {
free(aliases->db[i]->name);
free(aliases->db[i]->value);
aliases->db[i]->name = "";
return 1;
}
return 0;
}