diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2014-11-15 18:28:24 +0100 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2014-11-15 18:28:24 +0100 |
commit | 5d8311960a8f993591075b3da6106559922183b4 (patch) | |
tree | 1efe45e1188606c895a4069c05a2501826e1f293 /storage/connect/plgdbutl.cpp | |
parent | 9ade2d088d12f6a2a6f901148ed72a45dd15e9ff (diff) | |
download | mariadb-git-5d8311960a8f993591075b3da6106559922183b4.tar.gz |
- Implement the NEWMSG and XMSG methods
They are still experimental and should not be used in production.
added:
storage/connect/encas.h
storage/connect/english.msg
storage/connect/enids.h
storage/connect/frcas.h
storage/connect/french.msg
storage/connect/frids.h
storage/connect/frmsg.h
modified:
storage/connect/connect.cc
storage/connect/engmsg.h
storage/connect/filamdbf.cpp
storage/connect/global.h
storage/connect/ha_connect.cc
storage/connect/msgid.h
storage/connect/plgdbutl.cpp
storage/connect/plugutil.c
storage/connect/rcmsg.c
storage/connect/resource.h
storage/connect/tabfmt.h
- Fix global variable not being properly initialized (MDEV-6690, MDEV-7094)
modified:
storage/connect/ha_connect.cc
storage/connect/plugutil.c
storage/connect/user_connect.cc
storage/connect/xindex.cpp
- Implement Rewind for ODBC tables (MDEV-7097)
modified:
storage/connect/odbconn.cpp
storage/connect/odbconn.h
storage/connect/tabmysql.cpp
storage/connect/tabodbc.cpp
- Reset N when reopening MYSQL tables
modified:
storage/connect/tabmysql.cpp
Diffstat (limited to 'storage/connect/plgdbutl.cpp')
-rw-r--r-- | storage/connect/plgdbutl.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/storage/connect/plgdbutl.cpp b/storage/connect/plgdbutl.cpp index ccfc1a348b7..88026c564bf 100644 --- a/storage/connect/plgdbutl.cpp +++ b/storage/connect/plgdbutl.cpp @@ -113,11 +113,17 @@ void CloseXMLFile(PGLOBAL, PFBLOCK, bool); /***********************************************************************/ /* Routines for file IO with error reporting to g->Message */ +/* Note: errno and strerror must be called before the message file */ +/* is read in the case of XMSG compile. */ /***********************************************************************/ -static void -global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode) +static void global_open_error_msg(GLOBAL *g, int msgid, const char *path, + const char *mode) { - int len; + int len, rno= (int)errno; + char errmsg[256]= ""; + + strncat(errmsg, strerror(errno), 256); + switch (msgid) { case MSGID_CANNOT_OPEN: @@ -129,7 +135,7 @@ global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode) case MSGID_OPEN_MODE_ERROR: len= snprintf(g->Message, sizeof(g->Message) - 1, MSG(OPEN_MODE_ERROR), // "Open(%s) error %d on %s" - mode, (int) errno, path); + mode, rno, path); break; case MSGID_OPEN_MODE_STRERROR: @@ -137,13 +143,13 @@ global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode) strcat(strcpy(fmt, MSG(OPEN_MODE_ERROR)), ": %s"); len= snprintf(g->Message, sizeof(g->Message) - 1, fmt, // Open(%s) error %d on %s: %s - mode, (int) errno, path, strerror(errno)); + mode, rno, path, errmsg); }break; case MSGID_OPEN_STRERROR: len= snprintf(g->Message, sizeof(g->Message) - 1, MSG(OPEN_STRERROR), // "open error: %s" - strerror(errno)); + errmsg); break; case MSGID_OPEN_ERROR_AND_STRERROR: @@ -151,13 +157,13 @@ global_open_error_msg(GLOBAL *g, int msgid, const char *path, const char *mode) //OPEN_ERROR does not work, as it wants mode %d (not %s) //MSG(OPEN_ERROR) "%s",// "Open error %d in mode %d on %s: %s" "Open error %d in mode %s on %s: %s", - errno, mode, path, strerror(errno)); + rno, mode, path, errmsg); break; case MSGID_OPEN_EMPTY_FILE: len= snprintf(g->Message, sizeof(g->Message) - 1, MSG(OPEN_EMPTY_FILE), // "Opening empty file %s: %s" - path, strerror(errno)); + path, errmsg); break; default: @@ -285,12 +291,9 @@ PQRYRES PlgAllocResult(PGLOBAL g, int ncol, int maxres, int ids, // Get header from message file strncpy(cname, PlugReadMessage(g, ids + crp->Ncol, NULL), NAM_LEN); cname[NAM_LEN] = 0; // for truncated long names -//#elif defined(WIN32) - // Get header from ressource file -// LoadString(s_hModule, ids + crp->Ncol, cname, sizeof(cname)); -#else // !WIN32 +#else // !XMSG GetRcString(ids + crp->Ncol, cname, sizeof(cname)); -#endif // !WIN32 +#endif // !XMSG crp->Name = (PSZ)PlugSubAlloc(g, NULL, strlen(cname) + 1); strcpy(crp->Name, cname); } else @@ -982,7 +985,7 @@ void PlugCleanup(PGLOBAL g, bool dofree) /* This is the place to reset the pointer on domains. */ /*******************************************************************/ dbuserp->Subcor = false; - dbuserp->Step = STEP(PARSING_QUERY); + dbuserp->Step = "New query"; // was STEP(PARSING_QUERY); dbuserp->ProgMax = dbuserp->ProgCur = dbuserp->ProgSav = 0; } // endif dofree |