Commit bebe796c authored by Alessandro Rubini's avatar Alessandro Rubini

shell: remove environment commands

The environment was drafted but not actually used, so this commit
removes it.
Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
Acked-by: Grzegorz Daniluk's avatarGrzegorz Daniluk <grzegorz.daniluk@cern.ch>
Acked-by: Tomasz Wlostowski's avatarTomasz Wlostowski <tomasz.wlostowski@cern.ch>
parent a9ce831d
/*
* This work is part of the White Rabbit project
*
* Copyright (C) 2012 CERN (www.cern.ch)
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
*
* Released according to the GNU GPL, version 2 or any later version.
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <wrc.h>
#include "shell.h"
#define SH_ENVIRON_SIZE 256
/* Environment-related functions */
static char env_buf[SH_ENVIRON_SIZE];
void env_init()
{
env_buf[0] = 0xff;
}
static char *_env_get(const char *var)
{
int i = 0;
while (i < SH_ENVIRON_SIZE && env_buf[i] != 0xff) {
if (env_buf[i] == 0xaa
&& !strcasecmp((char *)env_buf + i + 1, var))
return (char *)env_buf + i;
i++;
}
return NULL;
}
char *env_get(const char *var)
{
char *p = _env_get(var);
if (!p)
return NULL;
return p + 2 + strlen(p + 1);
}
static int _env_end()
{
int i;
for (i = 0; i < SH_ENVIRON_SIZE; i++)
if (env_buf[i] == 0xff)
return i;
return 0;
}
int env_set(const char *var, const char *value)
{
char *vstart = _env_get(var), *p;
int end;
if (vstart) { /* entry already present? remove current and append at the end of environment */
p = vstart + 1;
while (*p != 0xaa && *p != 0xff)
p++;
memmove(vstart, p, SH_ENVIRON_SIZE - (p - env_buf));
}
end = _env_end();
if ((end + strlen(var) + strlen(value) + 3) >= SH_ENVIRON_SIZE)
return -ENOMEM;
p = &env_buf[end];
*p++ = 0xaa;
memcpy(p, var, strlen(var) + 1);
p += strlen(var) + 1;
memcpy(p, value, strlen(value) + 1);
p += strlen(value) + 1;
*p++ = 0xff;
p = env_buf;
return 0;
}
static int cmd_env(const char *args[])
{
char *p = env_buf;
while (*p != 0xff) {
if (*p == 0xaa)
mprintf("%s=%s\n", p + 1, p + strlen(p + 1) + 2);
p++;
}
return 0;
}
DEFINE_WRC_COMMAND(env) = {
.name = "env",
.exec = cmd_env,
};
static int cmd_saveenv(const char *args[])
{
return -ENOTSUP;
}
DEFINE_WRC_COMMAND(saveenv) = {
.name = "saveenv",
.exec = cmd_saveenv,
};
static int cmd_set(const char *args[])
{
if (!args[1])
return -EINVAL;
return env_set(args[0], args[1]);
}
DEFINE_WRC_COMMAND(set) = {
.name = "set",
.exec = cmd_set,
};
......@@ -125,7 +125,6 @@ int shell_exec(const char *cmd)
void shell_init()
{
env_init();
cmd_len = cmd_pos = 0;
state = SH_PROMPT;
}
......
obj-y += \
shell/shell.o \
shell/environ.o \
shell/cmd_version.o \
shell/cmd_pll.o \
shell/cmd_sfp.o \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment