diff --git a/jtag/ChangeLog b/jtag/ChangeLog index 10e84233..3ff8462c 100644 --- a/jtag/ChangeLog +++ b/jtag/ChangeLog @@ -3,6 +3,9 @@ * doc/UrJTAG.txt: How to use initbus (and ejtag/prototype bus driver) and some other smaller updates in the "commands" section. Also added note about unsupported spiflash* commands + * Merged src/script.c into src/include.c. The command looks for the + specified file in the repository if it's neither an absolute path + nor begins with ./ or ../, otherwise it takes the filename as is. 2008-02-17 Arnim Laeuger diff --git a/jtag/src/cmd/Makefile.am b/jtag/src/cmd/Makefile.am index dbefd5fc..90d423ae 100644 --- a/jtag/src/cmd/Makefile.am +++ b/jtag/src/cmd/Makefile.am @@ -57,7 +57,6 @@ libcmd_a_SOURCES = \ writemem.c \ flashmem.c \ eraseflash.c \ - script.c \ include.c \ cmd.c diff --git a/jtag/src/cmd/include.c b/jtag/src/cmd/include.c index 9b390ea4..656bf3ac 100644 --- a/jtag/src/cmd/include.c +++ b/jtag/src/cmd/include.c @@ -35,23 +35,48 @@ static int cmd_include_run( char *params[] ) { - int go; + int go = 0, i, j = 1; char *path; int len; - if (cmd_params( params ) != 2) + if (cmd_params( params ) < 2) return -1; - path = malloc( len = strlen( JTAG_DATA_DIR ) + strlen( params[1] ) + 2 ); + /* If "params[1]" begins with a slash, or dots followed by a slash, + * assume that user wants to ignore the search path */ + + path = params[1]; + while( *path == '.' ) path++; + if(*path == '/') // TODO: use sysdependent PATH_SEP + { + path = strdup(params[1]); + } + else + { + path = malloc(len = strlen( JTAG_DATA_DIR ) + strlen( params[1] ) + 2); + if(path != NULL) + { + snprintf( path, len, "%s/%s", JTAG_DATA_DIR, params[1] ); + } + } if (path == NULL) { printf( _("Out of memory\n") ); return 1; } - snprintf( path, len, "%s/%s", JTAG_DATA_DIR, params[1] ); - go = jtag_parse_file( path ); - if (go < 0) - printf( _("Unable to open file `%s'!\n"), params[1] ); + if (cmd_params( params ) > 2) { + sscanf(params[2],"%d",&j); /* loop n times option */ + }; + + for(i = 0; i < j ;i++) { + go = jtag_parse_file( path ); + + if (go < 0) { + if (go != -99) + printf( _("Unable to open file `%s go=%d'!\n"), path, go ); + break; + } + } free( path ); @@ -59,19 +84,27 @@ cmd_include_run( char *params[] ) } static void -cmd_include_help( void ) +cmd_script_help( void ) { printf( _( - "Usage: %s FILENAME\n" - "Run command sequence from external FILENAME from the repository.\n" + "Usage: %s FILENAME [n] \n" + "Run command sequence n times from external FILENAME.\n" "\n" "FILENAME Name of the file with commands\n" - ), "include" ); + ), "script" ); } cmd_t cmd_include = { "include", N_("include command sequence from external repository"), - cmd_include_help, + cmd_script_help, cmd_include_run }; + +cmd_t cmd_script = { + "script", + N_("run command sequence from external file"), + cmd_script_help, + cmd_include_run +}; + diff --git a/jtag/src/cmd/script.c b/jtag/src/cmd/script.c deleted file mode 100644 index c81d8f09..00000000 --- a/jtag/src/cmd/script.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * $Id$ - * - * Copyright (C) 2003 ETC s.r.o. - * - * 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. - * - * Written by Marcel Telka , 2003. - * - */ - -#include "sysdep.h" - -#include - -#include "jtag.h" - -#include "cmd.h" - -static int -cmd_script_run( char *params[] ) -{ - int i, j; - int go = 0; - i = 0; j = 1; - if (cmd_params( params ) == 3) { - sscanf(params[2],"%d",&j); /* loop n times option */ - } - else if (cmd_params( params ) != 2) - return -1; - - for(i = 0; i < j ;i++) { - go = jtag_parse_file( params[1] ); - - if (go < 0) { - if (go != -99) - printf( _("Unable to open file `%s go=%d'!\n"), params[1], go ); - break; - } - } - if(debug_mode & 1)printf("Return at cmd_script_run\n"); - return go ? 1 : 0; -} - -static void -cmd_script_help( void ) -{ - printf( _( - "Usage: %s FILENAME [n] \n" - "Run command sequence n times from external FILENAME.\n" - "\n" - "FILENAME Name of the file with commands\n" - ), "script" ); -} - -cmd_t cmd_script = { - "script", - N_("run command sequence from external file"), - cmd_script_help, - cmd_script_run -};