#include "config.h"
#endif
-#include "replacements.h"
+#if !BUILD_ECOSBOARD
+/* see Embedder-HOWTO.txt in Jim Tcl project hosted on BerliOS*/
+#define JIM_EMBEDDED
+#endif
+
+// @todo the inclusion of target.h here is a layering violation
#include "target.h"
#include "command.h"
#include "configuration.h"
-
#include "log.h"
#include "time_support.h"
#include "jim-eventloop.h"
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <errno.h>
int fast_and_dangerous = 0;
Jim_Interp *interp = NULL;
free((void *)full_name);
/* we now need to add an overrideable proc */
- const char *override_name=alloc_printf("proc %s%s%s {args} {if {[catch {eval \"ocd_%s%s%s $args\"}]==0} {return \"\"} else { return -code error }", t1, t2, t3, t1, t2, t3);
+ const char *override_name=alloc_printf("proc %s%s%s {args} {if {[catch {eval ocd_%s%s%s $args}]==0} {return \"\"} else { return -code error }", t1, t2, t3, t1, t2, t3);
Jim_Eval_Named(interp, override_name, __THIS__FILE__, __LINE__ );
free((void *)override_name);
/* find command */
c = context->commands;
-
+
while(NULL != c)
- {
+ {
if (strcmp(name, c->name) == 0)
{
/* unlink command */
/* first element in command list */
context->commands = c->next;
}
-
+
/* unregister children */
while(NULL != c->children)
{
free(c2);
c2 = NULL;
}
-
+
/* delete command */
free(c->name);
c->name = NULL;
c = NULL;
return ERROR_OK;
}
-
+
/* remember the last command for unlinking */
p = c;
c = c->next;
if (!((context->mode == COMMAND_CONFIG) || (c->mode == COMMAND_ANY) || (c->mode == context->mode) ))
{
/* Config commands can not run after the config stage */
- LOG_ERROR("Illegal mode for command");
+ LOG_ERROR("Command '%s' only runs during configuration stage", c->name);
return ERROR_FAIL;
}
int reslen;
result = Jim_GetString(Jim_GetResult(interp), &reslen);
- if (reslen) {
+ if (reslen>0)
+ {
int i;
char buff[256+1];
for (i = 0; i < reslen; i += 256)
}
LOG_USER_N("%s", "\n");
}
+ retval=ERROR_OK;
}
return retval;
}
{
command_context_t* context = malloc(sizeof(command_context_t));
extern const char startup_tcl[];
+ const char *HostOs;
context->mode = COMMAND_EXEC;
context->commands = NULL;
context->output_handler = NULL;
context->output_handler_priv = NULL;
-#ifdef JIM_EMBEDDED
+#if !BUILD_ECOSBOARD
Jim_InitEmbedded();
/* Create an interpreter */
interp = Jim_CreateInterp();
Jim_RegisterCoreCommands(interp);
#endif
+#if defined( _MSC_VER )
+ /* WinXX - is generic, the forward
+ * looking problem is this:
+ *
+ * "win32" or "win64"
+ *
+ * "winxx" is generic.
+ */
+ HostOs = "winxx";
+#elif defined( __LINUX__)
+ HostOs = "linux";
+#elif defined( __DARWIN__ )
+ HostOs = "darwin";
+#elif defined( __CYGWIN__ )
+ HostOs = "cygwin";
+#elif defined( __MINGW32__ )
+ HostOs = "mingw32";
+#else
+ HostOs = "other";
+#endif
+ Jim_SetGlobalVariableStr( interp, "ocd_HOSTOS", Jim_NewStringObj( interp, HostOs , strlen(HostOs)) );
+
Jim_CreateCommand(interp, "ocd_find", jim_find, NULL, NULL);
Jim_CreateCommand(interp, "echo", jim_echo, NULL, NULL);
Jim_CreateCommand(interp, "capture", jim_capture, NULL, NULL);
add_default_dirs();
-#ifdef JIM_EMBEDDED
+#if !BUILD_ECOSBOARD
Jim_EventLoopOnLoad(interp);
#endif
if (Jim_Eval_Named(interp, startup_tcl, "embedded:startup.tcl",1)==JIM_ERR)
} else
{
long long then=timeval_ms();
- while ((timeval_ms()-then)<duration)
+ while ((timeval_ms()-then)<(long long)duration)
{
target_call_timer_callbacks_now();
usleep(1000);
void process_jim_events(void)
{
-#ifdef JIM_EMBEDDED
+#if !BUILD_ECOSBOARD
static int recursion = 0;
if (!recursion)