diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-01-24 11:17:10 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 11:02:41 +1000 |
commit | 2eb26d60cb02bab06d6ebe49bf40e0765e3a4d67 (patch) | |
tree | 0f7c0ca8dabbb93d8d424e8d47b30c3903f3c270 | |
parent | 571fa65a6f3cf1c0a11d8c3b46440fe8457fa6fb (diff) | |
download | jimtcl-2eb26d60cb02bab06d6ebe49bf40e0765e3a4d67.zip jimtcl-2eb26d60cb02bab06d6ebe49bf40e0765e3a4d67.tar.gz jimtcl-2eb26d60cb02bab06d6ebe49bf40e0765e3a4d67.tar.bz2 |
Enhance env, fix error messages
env command allows a default to be supplied
Fix wrong 'file rename' error message
-rw-r--r-- | doc/jim_tcl.txt | 5 | ||||
-rw-r--r-- | jim-file.c | 2 | ||||
-rw-r--r-- | jim.c | 19 |
3 files changed, 15 insertions, 11 deletions
diff --git a/doc/jim_tcl.txt b/doc/jim_tcl.txt index bfdde6f..a33c7c9 100644 --- a/doc/jim_tcl.txt +++ b/doc/jim_tcl.txt @@ -1348,11 +1348,12 @@ the loop's body but continue with the next iteration of the loop. env ~~~ -+*env* '?name?'+ ++*env* '?name? ?default?'+ If *name* is supplied, returns the value of *name* from the initial environment (see getenv(3)). An error is returned if *name* does not -exist in the environment. +exist in the environment, unless *default* is supplied - in which case +that value is returned instead. If no arguments are supplied, returns a list of all environment variables and their values as +{name value ...}+ @@ -361,7 +361,7 @@ static int file_cmd_rename(Jim_Interp *interp, int argc, Jim_Obj *const *argv) if (!force && access(dest, F_OK) == 0) { Jim_SetResultString(interp, "", 0); - Jim_AppendStrings(interp, Jim_GetResult(interp), "error renaming \"", source, "\" to \"", dest, "\": ", strerror(errno), NULL); + Jim_AppendStrings(interp, Jim_GetResult(interp), "error renaming \"", source, "\" to \"", dest, "\": target exists", NULL); return JIM_ERR; } @@ -11707,7 +11707,7 @@ static int Jim_EnvCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { const char *key; - char *val; + const char *val; if (argc == 1) { extern char **environ; @@ -11727,18 +11727,21 @@ static int Jim_EnvCoreCommand(Jim_Interp *interp, int argc, return JIM_OK; } - if (argc != 2) { - Jim_WrongNumArgs(interp, 1, argv, "varName"); + if (argc < 2) { + Jim_WrongNumArgs(interp, 1, argv, "varName ?default?"); return JIM_ERR; } key = Jim_GetString(argv[1], NULL); val = getenv(key); if (val == NULL) { - Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); - Jim_AppendStrings(interp, Jim_GetResult(interp), - "environment variable \"", - key, "\" does not exist", NULL); - return JIM_ERR; + if (argc < 3) { + Jim_SetResult(interp, Jim_NewEmptyStringObj(interp)); + Jim_AppendStrings(interp, Jim_GetResult(interp), + "environment variable \"", + key, "\" does not exist", NULL); + return JIM_ERR; + } + val = Jim_GetString(argv[2], NULL); } Jim_SetResult(interp, Jim_NewStringObj(interp, val, -1)); return JIM_OK; |