Changeset: 7a75706679ba for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7a75706679ba
Modified Files:
        clients/mapiclient/dotmonetdb.c
        clients/mapiclient/dotmonetdb.h
        clients/mapiclient/mclient.1
        clients/mapiclient/mclient.c
        clients/mapiclient/msqldump.c
        clients/mapiclient/stethoscope.c
        clients/mapiclient/tachograph.c
        clients/mapiclient/tomograph.c
        gdk/gdk_bbp.c
        gdk/gdk_select.c
        tools/merovingian/daemon/argvcmds.c
        tools/merovingian/daemon/client.c
        tools/merovingian/daemon/controlrunner.c
        tools/merovingian/daemon/controlrunner.h
        tools/merovingian/daemon/discoveryrunner.c
        tools/merovingian/daemon/discoveryrunner.h
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/daemon/merovingian.h
        tools/merovingian/daemon/multiplex-funnel.c
        tools/merovingian/daemon/proxy.c
Branch: default
Log Message:

Merge with Dec2016 branch.


diffs (truncated from 945 to 300 lines):

diff --git a/clients/mapiclient/dotmonetdb.c b/clients/mapiclient/dotmonetdb.c
--- a/clients/mapiclient/dotmonetdb.c
+++ b/clients/mapiclient/dotmonetdb.c
@@ -17,7 +17,7 @@
 #endif
 
 void
-parse_dotmonetdb(char **user, char **passwd, char **language, int 
*save_history, char **output, int *pagewidth)
+parse_dotmonetdb(char **user, char **passwd, char **dbname, char **language, 
int *save_history, char **output, int *pagewidth)
 {
        char *cfile;
        FILE *config = NULL;
@@ -52,6 +52,8 @@ parse_dotmonetdb(char **user, char **pas
                *user = NULL;
        if (passwd)
                *passwd = NULL;
+       if (dbname)
+               *dbname = NULL;
        if (language)
                *language = NULL;
        if (output)
@@ -88,6 +90,10 @@ parse_dotmonetdb(char **user, char **pas
                                if (passwd)
                                        *passwd = strdup(q);
                                q = NULL;
+                       } else if (strcmp(buf, "database") == 0) {
+                               if (dbname)
+                                       *dbname = strdup(q);
+                               q = NULL;
                        } else if (strcmp(buf, "language") == 0) {
                                /* make sure we don't set garbage */
                                if (strcmp(q, "sql") != 0 &&
diff --git a/clients/mapiclient/dotmonetdb.h b/clients/mapiclient/dotmonetdb.h
--- a/clients/mapiclient/dotmonetdb.h
+++ b/clients/mapiclient/dotmonetdb.h
@@ -6,5 +6,5 @@
  * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
  */
 
-extern void parse_dotmonetdb(char **user, char **passwd, char **language,
+extern void parse_dotmonetdb(char **user, char **passwd, char **dbname, char 
**language,
                             int *save_history, char **output, int *pagewidth);
diff --git a/clients/mapiclient/mclient.1 b/clients/mapiclient/mclient.1
--- a/clients/mapiclient/mclient.1
+++ b/clients/mapiclient/mclient.1
@@ -72,6 +72,7 @@ This file can contain defaults for the f
 .BR user ,
 .BR password ,
 .BR language ,
+.BR database ,
 .BR save_history ,
 .BR format ,
 and
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3034,7 +3034,7 @@ main(int argc, char **argv)
 #endif
 
        /* parse config file first, command line options override */
-       parse_dotmonetdb(&user, &passwd, &language, &save_history, &output, 
&pagewidth);
+       parse_dotmonetdb(&user, &passwd, &dbname, &language, &save_history, 
&output, &pagewidth);
        pagewidthset = pagewidth != 0;
        if (language) {
                if (strcmp(language, "sql") == 0) {
@@ -3157,7 +3157,9 @@ main(int argc, char **argv)
                        break;
                case 'd':
                        assert(optarg);
-                       dbname = optarg;
+                       if (dbname)
+                               free(dbname);
+                       dbname = strdup(optarg);
                        break;
                case 's':
                        assert(optarg);
@@ -3255,7 +3257,7 @@ main(int argc, char **argv)
 
        if (dbname == NULL && has_fileargs &&
            (fp = fopen(argv[optind], "r")) == NULL) {
-               dbname = argv[optind];
+               dbname = strdup(argv[optind]);
                optind++;
                has_fileargs = optind != argc;
        }
@@ -3271,6 +3273,9 @@ main(int argc, char **argv)
        if (passwd)
                free(passwd);
        passwd = NULL;
+       if (dbname)
+               free(dbname);
+       dbname = NULL;
        if (mid && mapi_error(mid) == MOK)
                mapi_reconnect(mid);    /* actually, initial connect */
 
diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c
--- a/clients/mapiclient/msqldump.c
+++ b/clients/mapiclient/msqldump.c
@@ -99,7 +99,7 @@ main(int argc, char **argv)
                {0, 0, 0, 0}
        };
 
-       parse_dotmonetdb(&user, &passwd, NULL, NULL, NULL, NULL);
+       parse_dotmonetdb(&user, &passwd, &dbname, NULL, NULL, NULL, NULL);
 
        while ((c = getopt_long(argc, argv, "h:p:d:Dft:NXu:q?", long_options, 
NULL)) != -1) {
                switch (c) {
@@ -117,7 +117,9 @@ main(int argc, char **argv)
                        port = atoi(optarg);
                        break;
                case 'd':
-                       dbname = optarg;
+                       if (dbname)
+                               free(dbname);
+                       dbname = strdup(optarg);
                        break;
                case 'D':
                        describe = 1;
@@ -152,7 +154,7 @@ main(int argc, char **argv)
        }
 
        if (optind == argc - 1)
-               dbname = argv[optind];
+               dbname = strdup(argv[optind]);
        else if (optind != argc)
                usage(argv[0], -1);
 
@@ -170,6 +172,8 @@ main(int argc, char **argv)
                free(user);
        if (passwd)
                free(passwd);
+       if (dbname)
+               free(dbname);
        if (mid == NULL) {
                fprintf(stderr, "failed to allocate Mapi structure\n");
                exit(2);
diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c
--- a/clients/mapiclient/stethoscope.c
+++ b/clients/mapiclient/stethoscope.c
@@ -205,7 +205,7 @@ main(int argc, char **argv)
        }
 
        /* parse config file first, command line options override */
-       parse_dotmonetdb(&user, &password, NULL, NULL, NULL, NULL);
+       parse_dotmonetdb(&user, &password, &dbname, NULL, NULL, NULL, NULL);
 
        while (1) {
                int option_index = 0;
@@ -221,7 +221,9 @@ main(int argc, char **argv)
                        beat = atoi(optarg ? optarg : "5000");
                        break;
                case 'd':
-                       dbname = optarg;
+                       if (dbname)
+                               free(dbname);
+                       dbname = strdup(optarg);
                        break;
                case 'u':
                        if (user)
diff --git a/clients/mapiclient/tachograph.c b/clients/mapiclient/tachograph.c
--- a/clients/mapiclient/tachograph.c
+++ b/clients/mapiclient/tachograph.c
@@ -405,7 +405,7 @@ main(int argc, char **argv)
        };
 
        /* parse config file first, command line options override */
-       parse_dotmonetdb(&user, &password, NULL, NULL, NULL, NULL);
+       parse_dotmonetdb(&user, &password, &dbname, NULL, NULL, NULL, NULL);
 
        while (1) {
                int option_index = 0;
@@ -418,7 +418,9 @@ main(int argc, char **argv)
                        debug = 1;
                        break;
                case 'd':
-                       dbname = optarg;
+                       if (dbname)
+                               free(dbname);
+                       dbname = strdup(optarg);
                        break;
                case 'u':
                        if (user)
diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c
--- a/clients/mapiclient/tomograph.c
+++ b/clients/mapiclient/tomograph.c
@@ -1643,7 +1643,7 @@ main(int argc, char **argv)
        };
 
        /* parse config file first, command line options override */
-       parse_dotmonetdb(&user, &password, NULL, NULL, NULL, NULL);
+       parse_dotmonetdb(&user, &password, &dbname, NULL, NULL, NULL, NULL);
 
        if( argc == 1){
                usageTomograph();
@@ -1669,7 +1669,9 @@ main(int argc, char **argv)
                        debug = 1;
                        break;
                case 'd':
-                       prefix = dbname = optarg;
+                       if (dbname)
+                               free(dbname);
+                       prefix = dbname = strdup(optarg);
                        break;
                case 'i':
                        inputfile = optarg;
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1210,7 +1210,10 @@ BBPheader(FILE *fp, oid *BBPoid, int *OI
            bbpversion != GDKLIBRARY_OLDWKB &&
            bbpversion != GDKLIBRARY_INSERTED &&
            bbpversion != GDKLIBRARY_HEADED) {
-               GDKfatal("BBPinit: incompatible BBP version: expected 0%o, got 
0%o.", GDKLIBRARY, bbpversion);
+               GDKfatal("BBPinit: incompatible BBP version: expected 0%o, got 
0%o.\n"
+                        "This database was probably created by %s version of 
MonetDB.",
+                        GDKLIBRARY, bbpversion,
+                        bbpversion > GDKLIBRARY ? "a newer" : "a too old");
        }
        if (fgets(buf, sizeof(buf), fp) == NULL) {
                GDKfatal("BBPinit: short BBP");
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -287,9 +287,10 @@ do {                                                       
\
                        }                               \
                }                                       \
        } else {                                        \
-               while (p <= q && o < e) {               \
+               while (p < q && o < e) {                \
                        p++;                            \
-                       CAND;                           \
+                       if (p < q)                      \
+                               CAND;                   \
                }                                       \
        }                                               \
 } while (0)
diff --git a/tools/merovingian/daemon/argvcmds.c 
b/tools/merovingian/daemon/argvcmds.c
--- a/tools/merovingian/daemon/argvcmds.c
+++ b/tools/merovingian/daemon/argvcmds.c
@@ -504,15 +504,16 @@ command_stop(confkeyval *ckv, int argc, 
        /* wait up to 5 seconds for monetdbd to actually stop */
        for (i = 0; i < 10; i++) {
                tv.tv_sec = 0;
-               tv.tv_usec = 500;
+               tv.tv_usec = 500000;
                select(0, NULL, NULL, NULL, &tv);
-               if (kill(daemon, 0) == -1)
-                       break;
-               if (i == 9) {
-                       /* done waiting, use harsher measures */
-                       kill(daemon, SIGKILL);
+               if (kill(daemon, 0) == -1) {
+                       /* daemon has died */
+                       return(0);
                }
        }
 
+       /* done waiting, use harsher measures */
+       kill(daemon, SIGKILL);
+
        return(0);
 }
diff --git a/tools/merovingian/daemon/client.c 
b/tools/merovingian/daemon/client.c
--- a/tools/merovingian/daemon/client.c
+++ b/tools/merovingian/daemon/client.c
@@ -411,7 +411,7 @@ handleClient(void *data)
                        free(algos);
                        self->dead = 1;
                        return(e);
-               };
+               }
        }
 
        msab_freeStatus(&top);
@@ -532,34 +532,35 @@ acceptConnections(int sock, int usock)
                        }
 
                        switch (*buf) {
-                               case '0':
-                                       /* nothing special, nothing to do */
+                       case '0':
+                               /* nothing special, nothing to do */
                                break;
-                               case '1':
-                                       /* filedescriptor, no way */
-                                       close(msgsock);
-                                       Mfprintf(stderr, "client error: fd 
passing not supported\n");
+                       case '1':
+                               /* filedescriptor, no way */
+                               close(msgsock);
+                               Mfprintf(stderr, "client error: fd passing not 
supported\n");
                                continue;
-                               default:
-                                       /* some unknown state */
-                                       close(msgsock);
-                                       Mfprintf(stderr, "client error: unknown 
initial byte\n");
+                       default:
+                               /* some unknown state */
+                               close(msgsock);
+                               Mfprintf(stderr, "client error: unknown initial 
byte\n");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to