Files
rtems/tools/schedsim/shell/shared/shell_makeargs.c
Joel Sherrill abff6d226a 2010-12-17 Joel Sherrill <joel.sherrill@oarcorp.com>
Jennifer Averett <jennifer.averett@oarcorp.com>

	Add RTEMS Scheduler Simulator.  This is the shell scripting portion.
	* .cvsignore, ChangeLog, Makefile.am, schedsim_priority/.cvsignore,
	schedsim_priority/Makefile.am, schedsim_priority/config.c,
	schedsim_priority/printheir_executing.c,
	schedsim_priority/schedsim.cc,
	schedsim_priority/wrap_thread_dispatch.c, scripts/script01,
	scripts/script02, scripts/script03, scripts/script04,
	scripts/script05, scripts/script06, shared/.cvsignore,
	shared/Makefile.am, shared/commands.c, shared/getopt.c,
	shared/lookup_semaphore.c, shared/lookup_task.c,
	shared/main_clocktick.c, shared/main_echo.c, shared/main_executing.c,
	shared/main_heir.c, shared/main_help.c, shared/main_rtemsinit.c,
	shared/main_semcreate.c, shared/main_semdelete.c,
	shared/main_semflush.c, shared/main_semobtain.c,
	shared/main_semrelease.c, shared/main_taskcreate.c,
	shared/main_taskdelete.c, shared/main_taskmode.c,
	shared/main_taskpriority.c, shared/main_taskresume.c,
	shared/main_tasksuspend.c, shared/main_taskwakeafter.c,
	shared/schedsim_shell.h, shared/shell_cmdset.c,
	shared/shell_makeargs.c, shared/include/shell.h,
	shared/include/newlib/_ansi.h, shared/include/newlib/getopt.h: New
	files.
2010-12-17 14:49:40 +00:00

69 lines
1.1 KiB
C

/*
* Split string into argc/argv style argument list
*
* COPYRIGHT (c) 1989-2010.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE.
*
* $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
#include <ctype.h>
int rtems_shell_make_args(
char *commandLine,
int *argc_p,
char **argv_p,
int max_args
)
{
int argc;
char *ch;
int status = 0;
argc = 0;
ch = commandLine;
while ( *ch ) {
while ( isspace((unsigned char)*ch) ) ch++;
if ( *ch == '\0' )
break;
if ( *ch == '"' ) {
argv_p[ argc ] = ++ch;
while ( ( *ch != '\0' ) && ( *ch != '"' ) ) ch++;
} else {
argv_p[ argc ] = ch;
while ( ( *ch != '\0' ) && ( !isspace((unsigned char)*ch) ) ) ch++;
}
argc++;
if ( *ch == '\0' )
break;
*ch++ = '\0';
if ( argc == (max_args-1) ) {
status = -1;
break;
}
}
argv_p[ argc ] = NULL;
*argc_p = argc;
return status;
}