Changeset: ae9f83be9aba for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ae9f83be9aba
Modified Files:
clients/examples/C/testsfile.c
clients/mapilib/msettings.c
clients/mapilib/parseurl.c
Branch: odbc-tls
Log Message:
Add error buffer to struct msettings
diffs (118 lines):
diff --git a/clients/examples/C/testsfile.c b/clients/examples/C/testsfile.c
--- a/clients/examples/C/testsfile.c
+++ b/clients/examples/C/testsfile.c
@@ -85,7 +85,7 @@ handle_set_command(const char *location,
{
msettings_error msg = msetting_set_named(mp, true, key, value);
if (msg) {
- fprintf(stderr, "%s: cannot set '%s': %s\n", location, key,
msg);
+ fprintf(stderr, "%s: %s\n", location, msg);
return false;
}
return true;
diff --git a/clients/mapilib/msettings.c b/clients/mapilib/msettings.c
--- a/clients/mapilib/msettings.c
+++ b/clients/mapilib/msettings.c
@@ -213,6 +213,7 @@ struct msettings {
char *unix_sock_name_buffer;
char certhash_digits_buffer[64 + 2 + 1]; // fit more than required plus
trailing '\0'
bool validated;
+ char error_message[256];
};
static
@@ -321,6 +322,20 @@ msettings_destroy(msettings *mp)
return NULL;
}
+static const char *format_error(msettings *mp, const char *fmt, ...)
+ __attribute__((__format__(__printf__, 2, 3)));
+
+static const char *
+format_error(msettings *mp, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(mp->error_message, sizeof(mp->error_message), fmt, ap);
+ va_end(ap);
+
+ return mp->error_message;
+}
+
const char*
msetting_string(const msettings *mp, mparm parm)
{
@@ -457,15 +472,15 @@ msetting_parse(msettings *mp, mparm parm
case MPCLASS_BOOL:
b = msetting_parse_bool(text);
if (b < 0)
- return "invalid boolean value";
+ return format_error(mp, "%s: invalid boolean
value", mparm_name(parm));
return msetting_set_bool(mp, parm, b);
case MPCLASS_LONG:
if (text[0] == '\0')
- return "integer parameter cannot be empty
string";
+ return format_error(mp, "%s: integer parameter
cannot be empty string", mparm_name(parm));
char *end;
long l = strtol(text, &end, 10);
if (*end != '\0')
- return "invalid integer";
+ return format_error(mp, "%s: invalid integer",
mparm_name(parm));
return msetting_set_long(mp, parm, l);
case MPCLASS_STRING:
return msetting_set_string(mp, parm, text);
@@ -533,13 +548,13 @@ msetting_set_named(msettings *mp, bool a
{
mparm parm = mparm_parse(key);
if (parm == MP_UNKNOWN)
- return "unknown parameter";
+ return format_error(mp, "%s: unknown parameter", key);
if (parm == MP_IGNORE)
return msetting_set_ignored(mp, key, value);
if (!allow_core && mparm_is_core(parm))
- return "parameter not allowed here";
+ return format_error(mp, "%s: parameter not allowed here",
mparm_name(parm));
return msetting_parse(mp, parm, value);
}
@@ -572,7 +587,7 @@ validate_certhash(msettings *mp)
if (strncmp(certhash, "sha256:", 7) == 0) {
certhash += 7;
} else {
- return "expected certhash to start with 'sha256:'";
+ return "certhash: expected to start with 'sha256:'";
}
size_t i = 0;
diff --git a/clients/mapilib/parseurl.c b/clients/mapilib/parseurl.c
--- a/clients/mapilib/parseurl.c
+++ b/clients/mapilib/parseurl.c
@@ -230,7 +230,7 @@ store(msettings *mp, scanner *sc, mparm
{
msettings_error msg = msetting_parse(mp, parm, value);
if (msg)
- return complain(sc, "cannot set %s to '%s':
%s",mparm_name(parm), value, msg);
+ return complain(sc, "%s: %s", msg, value);
else
return true;
}
@@ -358,7 +358,7 @@ parse_modern(msettings *mp, scanner *sc)
msettings_error msg = msetting_set_named(mp, false,
key, value);
if (msg)
- return complain(sc, "%s: %s", key, msg);
+ return complain(sc, "%s", msg);
} while (sc->c == '&');
}
@@ -388,7 +388,7 @@ parse_classic_query_parameters(msettings
case MP_LANGUAGE:
msg = msetting_set_string(mp, parm, value);
if (msg)
- return complain(sc, "parameter '%s':
%s", key, msg);
+ return complain(sc, "%s", msg);
break;
default:
// ignore
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]