Skip to content
Snippets Groups Projects
fw_env_main.c 2.09 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * (C) Copyright 2000
     * 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 [ name ... ]
     *		- prints the values of the 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 sinlge blank characters, and the
     *		  resulting string is assigned to the environment
     *		  variable "name"
     */
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include "fw_env.h"
    
    #define	CMD_PRINTENV	"fw_printenv"
    #define CMD_SETENV	"fw_setenv"
    
    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) {
    
    			fw_printenv (argc, argv);
    
    			return (EXIT_SUCCESS);
    
    	} else if (strcmp(cmdname, CMD_SETENV) == 0) {
    
    			if (fw_setenv (argc, argv) != 0)
    				return (EXIT_FAILURE);
    
    			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);
    }