summaryrefslogtreecommitdiffhomepage
path: root/mixutils/mixvm_loop.c
diff options
context:
space:
mode:
authorJose Antonio Ortega Ruiz <jao@gnu.org>2001-07-07 23:34:55 +0000
committerJose Antonio Ortega Ruiz <jao@gnu.org>2001-07-07 23:34:55 +0000
commit8cecf0ae927eae1dfb5ab2eef78f55e8e162a7f9 (patch)
tree8c150bf6c112d1033342556cb520fb34cf7e220a /mixutils/mixvm_loop.c
parentfd39c4abe462ec9e749a1a65370cd7a1c11ae705 (diff)
downloadmdk-8cecf0ae927eae1dfb5ab2eef78f55e8e162a7f9.tar.gz
mdk-8cecf0ae927eae1dfb5ab2eef78f55e8e162a7f9.tar.bz2
use of devdir command
Diffstat (limited to 'mixutils/mixvm_loop.c')
-rw-r--r--mixutils/mixvm_loop.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/mixutils/mixvm_loop.c b/mixutils/mixvm_loop.c
index 89a3953..ad49829 100644
--- a/mixutils/mixvm_loop.c
+++ b/mixutils/mixvm_loop.c
@@ -23,6 +23,10 @@
#include <stdio.h>
#include <mixlib/mix.h>
+#include <mixlib/mix_config.h>
+#include <mixlib/mix_vm.h>
+#include <mixlib/mix_device.h>
+#include <mixlib/mix_vm_dump.h>
#include "mixvm_command.h"
#ifdef HAVE_LIBHISTORY
@@ -46,7 +50,9 @@ readline (char *prompt)
/* A static variable for holding the line. */
static char *line_read = (char *)NULL;
+
static const char *PROMPT = N_("MIX > ");
+static const char *CONFIG_FILE_ = "mixvm.config";
/* Read a string, and return a pointer to it. Returns NULL on EOF. */
static char *
@@ -75,9 +81,31 @@ rl_gets ()
void
mix_vmloop (const gchar *file, gboolean use_emacs)
{
- mixvm_cmd_init ((char *)file, use_emacs);
+ mix_config_t *config = mix_config_new (NULL, CONFIG_FILE_);
+ mix_config_set_autosave (config, TRUE);
+ mixvm_cmd_init (config, (char *)file, use_emacs);
while ( mixvm_cmd_exec (rl_gets ()) )
;
+ if (config) mix_config_delete (config);
}
-
+/* run a program and exit */
+void
+mix_vmrun (const gchar *code_file, gboolean dump)
+{
+ mix_vm_t *vm = mix_vm_new ();
+ if (!mix_vm_load_file (vm, code_file)) {
+ fprintf (stderr, _("Error loading %s file\n"), code_file);
+ return;
+ }
+ mix_vm_run (vm);
+ printf (_("** Execution time: %ld\n"), mix_vm_get_uptime (vm));
+ if (dump) {
+ mix_dump_context_t *dc = mix_dump_context_new (MIX_DUMP_DEF_CHANNEL,
+ 0, 0,
+ MIX_DUMP_ALL_NOMEM);
+ mix_vm_dump (vm, dc);
+ mix_dump_context_delete (dc);
+ }
+ mix_vm_delete (vm);
+}