From 715bc12d3b7295a3953ed3e1b6bd9eb99c027a56 Mon Sep 17 00:00:00 2001 From: Andrea Bonomi Date: Tue, 21 Aug 2012 12:50:27 +0200 Subject: [PATCH 1/3] show default & set default command added Hello, I fixed the show/set default commands and tested on the following host platform: OSX(x64), Linux(arm), FreeBSD(x86), Windows(x64), OpenVMS(VAX). The commands are very simple and the code is the same for all the *nix and VMS, and it is a little different for Windows. Andrea --- scp.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/scp.c b/scp.c index 3dcad038..d9b7d2f5 100644 --- a/scp.c +++ b/scp.c @@ -219,6 +219,11 @@ #include #include #include +#if defined(_WIN32) +#include +#else +#include +#endif #include #if defined(HAVE_DLOPEN) /* Dynamic Readline support */ @@ -328,6 +333,7 @@ t_stat set_dev_enbdis (DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat set_dev_debug (DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat set_unit_enbdis (DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat ssh_break (FILE *st, char *cptr, int32 flg); +t_stat set_default_cmd (int32 flg, char *cptr); t_stat show_cmd_fi (FILE *ofile, int32 flag, char *cptr); t_stat show_config (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat show_queue (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); @@ -341,6 +347,7 @@ t_stat show_dev_logicals (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char * t_stat show_dev_modifiers (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat show_dev_show_commands (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat show_version (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); +t_stat show_default (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat show_break (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat show_on (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); t_stat show_device (FILE *st, DEVICE *dptr, int32 flag); @@ -638,6 +645,7 @@ static CTAB cmd_table[] = { " enable console debugging to the\n" " specified destination {LOG,STDOUT or filename)\n" "set console NODEBUG disable console debugging\n" + "set default set the default directory\n" "set log log_file specify the log destination\n" " (STDOUT,DEBUG or filename)\n" "set nolog disables any currently active logging\n" @@ -687,6 +695,7 @@ static CTAB cmd_table[] = { "sh{ow} th{rottle} show simulation rate\n" "sh{ow} a{synch} show asynchronouse I/O state\n" "sh{ow} ve{rsion} show simulator version\n" + "sh{ow} def{ault} show current directory\n" "sh{ow} RADIX show device display radix\n" "sh{ow} DEBUG show device debug flags\n" "sh{ow} MODIFIERS show device modifiers\n" @@ -1755,6 +1764,7 @@ C1TAB *ctbr, *glbr; static CTAB set_glob_tab[] = { { "CONSOLE", &sim_set_console, 0 }, { "BREAK", &brk_cmd, SSH_ST }, + { "DEFAULT", &set_default_cmd, 1 }, { "NOBREAK", &brk_cmd, SSH_CL }, { "TELNET", &sim_set_telnet, 0 }, /* deprecated */ { "NOTELNET", &sim_set_notelnet, 0 }, /* deprecated */ @@ -2034,6 +2044,7 @@ static SHTAB show_glob_tab[] = { { "NAMES", &show_log_names, 0 }, { "SHOW", &show_show_commands, 0 }, { "VERSION", &show_version, 1 }, + { "DEFAULT", &show_default, 0 }, { "CONSOLE", &sim_show_console, 0 }, { "BREAK", &show_break, 0 }, { "LOG", &sim_show_log, 0 }, /* deprecated */ @@ -2540,6 +2551,38 @@ if (dptr->modifiers) { return SCPE_OK; } +/* Show/change the current working directiory commands */ + +t_stat show_default (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) +{ +#if defined(_WIN32) +char *wd = _getcwd(NULL, 0); +fprintf (st, "%s\n", wd); +free(wd); +#else +char buffer[PATH_MAX]; +char *wd = getcwd(buffer, PATH_MAX); +fprintf (st, "%s\n", wd); +#endif +return SCPE_OK; +} + +t_stat set_default_cmd (int32 flg, char *cptr) +{ +if ((!cptr) || (*cptr == 0)) + return SCPE_2FARG; +sim_trim_endspc(cptr); +#if defined(_WIN32) +if (_chdir(cptr) != 0) { +#else +if (chdir(cptr) != 0) { +#endif + printf("Unable to change to: %s\n", cptr); + return SCPE_IOERR & SCPE_NOMESSAGE; +} +return SCPE_OK; +} + /* Breakpoint commands */ t_stat brk_cmd (int32 flg, char *cptr) From a1a6a8a40d932b57d7e680efe036fa6323d77876 Mon Sep 17 00:00:00 2001 From: Andrea Bonomi Date: Thu, 23 Aug 2012 17:18:31 +0200 Subject: [PATCH 2/3] show_default fix --- scp.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/scp.c b/scp.c index d9b7d2f5..edfe1b6c 100644 --- a/scp.c +++ b/scp.c @@ -2555,15 +2555,13 @@ return SCPE_OK; t_stat show_default (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) { -#if defined(_WIN32) -char *wd = _getcwd(NULL, 0); -fprintf (st, "%s\n", wd); -free(wd); -#else char buffer[PATH_MAX]; +#if defined(_WIN32) +char *wd = _getcwd(buffer, PATH_MAX); +#else char *wd = getcwd(buffer, PATH_MAX); -fprintf (st, "%s\n", wd); #endif +fprintf (st, "%s\n", wd); return SCPE_OK; } From 405c70bccd6f9584478ee99e726eda5669ed340c Mon Sep 17 00:00:00 2001 From: Andrea Bonomi Date: Tue, 28 Aug 2012 07:40:42 +0200 Subject: [PATCH 3/3] set default/show default commands fix --- scp.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/scp.c b/scp.c index edfe1b6c..3cdc678a 100644 --- a/scp.c +++ b/scp.c @@ -2556,11 +2556,7 @@ return SCPE_OK; t_stat show_default (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) { char buffer[PATH_MAX]; -#if defined(_WIN32) -char *wd = _getcwd(buffer, PATH_MAX); -#else char *wd = getcwd(buffer, PATH_MAX); -#endif fprintf (st, "%s\n", wd); return SCPE_OK; } @@ -2570,11 +2566,7 @@ t_stat set_default_cmd (int32 flg, char *cptr) if ((!cptr) || (*cptr == 0)) return SCPE_2FARG; sim_trim_endspc(cptr); -#if defined(_WIN32) -if (_chdir(cptr) != 0) { -#else if (chdir(cptr) != 0) { -#endif printf("Unable to change to: %s\n", cptr); return SCPE_IOERR & SCPE_NOMESSAGE; }