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]

Reply via email to