zzsh/src/builtin-exec/builtin_alias.c
2023-07-05 00:23:04 +02:00

37 lines
742 B
C

#include "./builtin.h"
#include <stddef.h>
#include <stdio.h>
#include <string.h>
int builtin_alias(data_t* data, cmd_t* cmd)
{
const char* equal;
char* result;
char* key;
if (tablen((const void**) cmd->args) == 1)
print_aliases(data->aliases, cmd->output[0]);
for (size_t i = 1; cmd->args[i] != NULL; i++)
{
equal = strchr(cmd->args[i], '=');
if (equal == NULL)
{
result = get_alias(data->aliases, cmd->args[i]);
if (result != NULL)
dprintf(cmd->output[0], "%s=%s\n", cmd->args[i], result);
}
else
{
key = strndup(cmd->args[i], equal - cmd->args[i]);
if (key == NULL)
return 1;
if (add_alias(data->aliases, key, equal + 1))
{
free(key);
return 1;
}
free(key);
}
}
return 0;
}