aboutsummaryrefslogtreecommitdiff
path: root/jim-file.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 13:53:11 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:46 +1000
commitb149e4415f9a448740cd41e5fd2a5f065262e791 (patch)
tree8c26563d127da56135188800d5863a2137e34201 /jim-file.c
parent289cf6dfe86b9b8a4e67b908a8bf8afc9fba76be (diff)
downloadjimtcl-b149e4415f9a448740cd41e5fd2a5f065262e791.zip
jimtcl-b149e4415f9a448740cd41e5fd2a5f065262e791.tar.gz
jimtcl-b149e4415f9a448740cd41e5fd2a5f065262e791.tar.bz2
Add Jim_SetResultFormatted() for simplied messages
Makes creating error messages much simpler Also convert a couple of long if/else to switch Also some error message improvements Also fix some memory leaks
Diffstat (limited to 'jim-file.c')
-rw-r--r--jim-file.c38
1 files changed, 16 insertions, 22 deletions
diff --git a/jim-file.c b/jim-file.c
index e6de923..9a2046c 100644
--- a/jim-file.c
+++ b/jim-file.c
@@ -143,8 +143,7 @@ static int
StoreStatData(Jim_Interp *interp, Jim_Obj *varName, const struct stat *sb)
{
if (set_array_int_value(interp, varName, "dev", sb->st_dev) != JIM_OK) {
- Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- Jim_AppendStrings(interp, Jim_GetResult(interp), "can't set \"", Jim_GetString(varName, NULL), "(dev)\": variable isn't array", NULL);
+ Jim_SetResultFormatted(interp, "can't set \"%#s(dev)\": variables isn't array", varName);
return JIM_ERR;
}
set_array_int_value(interp, varName, "ino", sb->st_ino);
@@ -289,7 +288,7 @@ static int file_access(Jim_Interp *interp, Jim_Obj *filename, int mode)
const char *path = Jim_GetString(filename, NULL);
int rc = access(path, mode);
- Jim_SetResult(interp, Jim_NewIntObj(interp, rc != -1));
+ Jim_SetResultBool(interp, rc != -1);
return JIM_OK;
}
@@ -319,8 +318,7 @@ static int file_cmd_delete(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
while (argc--) {
const char *path = Jim_GetString(argv[0], NULL);
if (unlink(path) == -1 && errno != ENOENT) {
- Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- Jim_AppendStrings(interp, Jim_GetResult(interp), "couldn't delete \"", path, "\"", NULL);
+ Jim_SetResultFormatted(interp, "couldn't delete file \"%s\": %s", path, strerror(errno));
return JIM_ERR;
}
argv++;
@@ -367,28 +365,29 @@ static int file_cmd_tempfile(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
static int file_cmd_rename(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
- const char *source = Jim_GetString(argv[0], NULL);
+ const char *source;
const char *dest;
int force = 0;
if (argc == 3) {
- if (strcmp(source, "-force") != 0) {
+ if (!Jim_CompareStringImmediate(interp, argv[0], "-force")) {
return -1;
}
force++;
- source = Jim_GetString(argv[1], NULL);
+ argv++;
+ argc--;
}
- dest = Jim_GetString(argv[force + 1], NULL);
+
+ source = Jim_GetString(argv[0], NULL);
+ dest = Jim_GetString(argv[1], NULL);
if (!force && access(dest, F_OK) == 0) {
- Jim_SetResultString(interp, "", 0);
- Jim_AppendStrings(interp, Jim_GetResult(interp), "error renaming \"", source, "\" to \"", dest, "\": target exists", NULL);
+ Jim_SetResultFormatted(interp, "error renaming \"%#s\" to \"%#s\": target exists", argv[0], argv[1]);
return JIM_ERR;
}
if (rename(source, dest) != 0) {
- Jim_SetResultString(interp, "", 0);
- Jim_AppendStrings(interp, Jim_GetResult(interp), "error renaming \"", source, "\": ", strerror(errno), NULL);
+ Jim_SetResultFormatted(interp, "error renaming \"%#s\" to \"%#s\": %s", argv[0], argv[1], strerror(errno));
return JIM_ERR;
}
@@ -399,8 +398,7 @@ static int file_stat(Jim_Interp *interp, Jim_Obj *filename, struct stat *sb)
{
const char *path = Jim_GetString(filename, NULL);
if (stat(path, sb) == -1) {
- Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- Jim_AppendStrings(interp, Jim_GetResult(interp), "could not read \"", path, "\": ", strerror(errno), NULL);
+ Jim_SetResultFormatted(interp, "could not read \"%#s\": %s", filename, strerror(errno));
return JIM_ERR;
}
return JIM_OK;
@@ -410,8 +408,7 @@ static int file_lstat(Jim_Interp *interp, Jim_Obj *filename, struct stat *sb)
{
const char *path = Jim_GetString(filename, NULL);
if (lstat(path, sb) == -1) {
- Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- Jim_AppendStrings(interp, Jim_GetResult(interp), "could not read \"", path, "\": ", strerror(errno), NULL);
+ Jim_SetResultFormatted(interp, "could not read \"%#s\": %s", filename, strerror(errno));
return JIM_ERR;
}
return JIM_OK;
@@ -495,8 +492,7 @@ static int file_cmd_readlink(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
int linkLength = readlink(path, linkValue, MAXPATHLEN);
if (linkLength == -1) {
Jim_Free(linkValue);
- Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
- Jim_AppendStrings(interp, Jim_GetResult(interp), "couldn't readlink \"", path, "\"", NULL);
+ Jim_SetResultFormatted(interp, "couldn't readlink \"%s\": %s", argv[0], strerror(errno));
return JIM_ERR;
}
linkValue[linkLength] = 0;
@@ -724,9 +720,7 @@ static int Jim_CdCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
path = Jim_GetString(argv[1], NULL);
if (chdir(path) != 0) {
- Jim_SetResultString(interp, "", 0);
- Jim_AppendStrings(interp, Jim_GetResult(interp),
- "couldn't change working directory to \"", path, "\": ", strerror(errno), NULL);
+ Jim_SetResultFormatted(interp, "couldn't change working directory to \"%s\": %s", argv[1], strerror(errno));
return JIM_ERR;
}
return JIM_OK;