/* * (C) Copyright 2000-2008 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ /* * Command line user interface to firmware (=U-Boot) environment. * * Implements: * fw_printenv [[ -n name ] | [ name ... ]] * - prints the value of a single environment variable * "name", the ``name=value'' pairs of one or more * environment variables "name", or the whole * environment if no names are specified. * fw_setenv name [ value ... ] * - If a name without any values is given, the variable * with this name is deleted from the environment; * otherwise, all "value" arguments are concatenated, * separated by single blank characters, and the * resulting string is assigned to the environment * variable "name" */ #include #include #include #include "fw_env.h" #define CMD_PRINTENV "fw_printenv" #define CMD_SETENV "fw_setenv" #define CMD_GETENV "fw_getenv" int main(int argc, char *argv[]) { char *p; char *cmdname = *argv; if ((p = strrchr (cmdname, '/')) != NULL) { cmdname = p + 1; } if (strcmp(cmdname, CMD_PRINTENV) == 0) { if (fw_printenv (argc, argv) != 0) return (EXIT_FAILURE); return (EXIT_SUCCESS); } else if (strcmp(cmdname, CMD_SETENV) == 0) { if (fw_setenv (argc, argv) != 0) return (EXIT_FAILURE); return (EXIT_SUCCESS); } else if (strcmp(cmdname, CMD_GETENV) == 0) { if (argc > 1) { while (--argc) { char *val = fw_getenv(argv[argc]); if (val) printf("%s\n", val); else fprintf(stderr, "%s: no such variable in environment\n", argv[argc]); } } return (EXIT_SUCCESS); } fprintf (stderr, "Identity crisis - may be called as `" CMD_PRINTENV "' or as `" CMD_SETENV "' but not as `%s'\n", cmdname); return (EXIT_FAILURE); }