diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2017-11-04 01:17:16 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2017-11-24 05:06:39 +0300 |
commit | 43d743e75b7b747341b9a5c36a933b490548bebb (patch) | |
tree | 03d3c056929c9b8f51dd5d7cbd42c544f14c591b /mysql/libmariadb/ma_init.c | |
parent | 9b1a5c3c0633240b2da16e57503cb67c392fdb3d (diff) |
Add implementation
Diffstat (limited to 'mysql/libmariadb/ma_init.c')
-rw-r--r-- | mysql/libmariadb/ma_init.c | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/mysql/libmariadb/ma_init.c b/mysql/libmariadb/ma_init.c new file mode 100644 index 0000000..077bb87 --- /dev/null +++ b/mysql/libmariadb/ma_init.c @@ -0,0 +1,115 @@ +/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB + 2016 MariaDB Corporation AB + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02111-1301, USA */ + +#include <ma_global.h> +#include <ma_sys.h> +#include "mariadb_ctype.h" +#include <ma_string.h> +#include <mariadb_ctype.h> +#ifdef HAVE_GETRUSAGE +#include <sys/resource.h> +/* extern int getrusage(int, struct rusage *); */ +#endif +#include <signal.h> +#ifdef _WIN32 +#ifdef _MSC_VER +#include <locale.h> +#include <crtdbg.h> +#endif +static my_bool my_win_init(void); +#else +#define my_win_init() +#endif + +my_bool ma_init_done=0; + + + +/* Init ma_sys functions and ma_sys variabels */ + +void ma_init(void) +{ + if (ma_init_done) + return; + ma_init_done=1; + { +#ifdef _WIN32 + my_win_init(); +#endif + return; + } +} /* ma_init */ + + + +void ma_end(int infoflag __attribute__((unused))) +{ +#ifdef _WIN32 + WSACleanup( ); +#endif /* _WIN32 */ + ma_init_done=0; +} /* ma_end */ + +#ifdef _WIN32 + +/* + This code is specially for running MySQL, but it should work in + other cases too. + + Inizializzazione delle variabili d'ambiente per Win a 32 bit. + + Vengono inserite nelle variabili d'ambiente (utilizzando cosi' + le funzioni getenv e putenv) i valori presenti nelle chiavi + del file di registro: + + HKEY_LOCAL_MACHINE\software\MySQL + + Se la kiave non esiste nonn inserisce nessun valore +*/ + +/* Crea la stringa d'ambiente */ + +void setEnvString(char *ret, const char *name, const char *value) +{ + sprintf(ret, "%s=%s", name, value); + return ; +} + +static my_bool my_win_init() +{ + WORD VersionRequested; + int err; + WSADATA WsaData; + const unsigned int MajorVersion=2, + MinorVersion=2; + VersionRequested= MAKEWORD(MajorVersion, MinorVersion); + /* Load WinSock library */ + if ((err= WSAStartup(VersionRequested, &WsaData))) + { + return 0; + } + /* make sure 2.2 or higher is supported */ + if ((LOBYTE(WsaData.wVersion) * 10 + HIBYTE(WsaData.wVersion)) < 22) + { + WSACleanup(); + return 1; + } + return 0; +} +#endif + |