aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 11:17:10 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:41 +1000
commit2eb26d60cb02bab06d6ebe49bf40e0765e3a4d67 (patch)
tree0f7c0ca8dabbb93d8d424e8d47b30c3903f3c270
parent571fa65a6f3cf1c0a11d8c3b46440fe8457fa6fb (diff)
downloadjimtcl-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.txt5
-rw-r--r--jim-file.c2
-rw-r--r--jim.c19
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 ...}+
diff --git a/jim-file.c b/jim-file.c
index fdecccf..30f5cf3 100644
--- a/jim-file.c
+++ b/jim-file.c
@@ -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;
}
diff --git a/jim.c b/jim.c
index 4f8a500..67c527e 100644
--- a/jim.c
+++ b/jim.c
@@ -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;