diff options
| -rw-r--r-- | mixlib/xmix_vm_handlers.c | 33 | 
1 files changed, 27 insertions, 6 deletions
| diff --git a/mixlib/xmix_vm_handlers.c b/mixlib/xmix_vm_handlers.c index ed240fb..02c7ca9 100644 --- a/mixlib/xmix_vm_handlers.c +++ b/mixlib/xmix_vm_handlers.c @@ -1,7 +1,7 @@  /* -*-c-*- -------------- xmix_vm_handlers.c :   * Implementation of the functions declared in xmix_vm_handlers.h   * ------------------------------------------------------------------ - *  Last change: Time-stamp: "01/08/26 04:01:54 jao" + *  $Id: xmix_vm_handlers.c,v 1.3 2001/09/12 23:14:24 jao Exp $   * ------------------------------------------------------------------   * Copyright (C) 2001 Free Software Foundation, Inc.   *   @@ -41,6 +41,7 @@ mix_vm_command_info_t commands_[] = {      "run [FILENAME]"},    { "next", cmd_next_, N_("Execute next instruction(s)"),       "next [NO_OF_INS]"}, +  { "pstat", cmd_pstat_, N_("Print current vm status"), "pstat"},    { "pc", cmd_pc_, N_("Print program counter value"), "pc" },    { "psym", cmd_psym_, N_("Print symbol value"), "psym [SYMBOLNAME]"},    { "preg", cmd_preg_, N_("Print register value"),  @@ -131,10 +132,10 @@ trace_ (mix_vm_cmd_dispatcher_t *dis)  static int  run_and_trace_ (mix_vm_cmd_dispatcher_t *dis)  { -  int k = MIX_VM_OK; +  int k = MIX_VM_RUNNING;    if (!dis->trace)      return mix_vm_run (dis->vm); -  else while (k == MIX_VM_OK) +  else while (k == MIX_VM_RUNNING)      {        trace_ (dis);        k = mix_vm_exec_next (dis->vm); @@ -324,7 +325,7 @@ cmd_run_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)  	    log_message_ (dis, _("... stopped: %s (address %d)"),  			  mix_vm_get_last_breakpoint_message (dis->vm),  			  mix_vm_get_prog_count (dis->vm)); -      } +	}        break;      case MIX_VM_ERROR:        log_error_ (dis, _("... error executing loaded file")); @@ -1310,7 +1311,8 @@ gboolean  cmd_pprog_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)  {    const gchar *path = mix_vm_cmd_dispatcher_get_program_path (dis); -  fprintf (dis->out, path? path : _("No program currently loaded\n")); +  fprintf (dis->out, path? path : _("No program currently loaded")); +  fprintf (dis->out, "\n");    return (path != NULL);  } @@ -1319,6 +1321,7 @@ cmd_psrc_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)  {    const gchar *path = mix_vm_cmd_dispatcher_get_src_file_path (dis);    fprintf (dis->out, path? path : _("No program currently loaded\n")); +  fprintf (dis->out, "\n");    return (path != NULL);  } @@ -1342,7 +1345,7 @@ cmd_pline_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)    if (line == 0)      txt = "No such line (debug info not available)\n";    else -    txt = mix_vm_cmd_dispatcher_get_src_file_line (dis, line); +    txt = mix_vm_cmd_dispatcher_get_src_file_line (dis, line, TRUE);    if (txt == NULL || strlen (txt) == 0) txt = "No such line\n"; @@ -1350,3 +1353,21 @@ cmd_pline_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg)    return TRUE;  } + +gboolean +cmd_pstat_ (mix_vm_cmd_dispatcher_t *dis, const gchar *arg) +{ +  static const gchar *MSGS[MIX_VM_EMPTY + 1] = { +    N_("Error loading or executing file"), +    N_("Execution stopped: breakpoint encountered"), +    N_("Execution stopped: conditional breakpoint encountered"), +    N_("Program successfully terminated"), +    N_("Execution stopped"), +    N_("Program successfully loaded"), +    N_("No program loaded") +  }; +  mix_vm_status_t status = +    mix_vm_get_run_status (mix_vm_cmd_dispatcher_get_vm (dis)); +  fprintf (dis->out, "VM status: %s\n", MSGS[status]); +  return TRUE; +} | 
