From 1da5382a9fa37ffd9ebdf30b74b0a515af879a64 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 19 May 2005 16:02:14 -0500 Subject: [PATCH 01/22] BUG# 10687 - MERGE engine fails under Windows This patch was submitted by Ingo and it appears to work correctly. sql/ha_myisammrg.cc: use FN_LIBCHAR instead of / so buff works correctly on Windows strings/my_vsnprintf.c: add support for %c to my_vsnprintf --- sql/ha_myisammrg.cc | 5 +++-- strings/my_vsnprintf.c | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/sql/ha_myisammrg.cc b/sql/ha_myisammrg.cc index 7a5d4fcf0a1..1bf2f8a31ad 100644 --- a/sql/ha_myisammrg.cc +++ b/sql/ha_myisammrg.cc @@ -406,8 +406,8 @@ int ha_myisammrg::create(const char *name, register TABLE *form, This means that it might not be possible to move the DATADIR of an embedded server without changing the paths in the .MRG file. */ - uint length= my_snprintf(buff, FN_REFLEN, "%s/%s/%s", mysql_data_home, - tables->db, tables->real_name); + uint length= my_snprintf(buff, FN_REFLEN, "%s%c%s/%s", mysql_data_home, + FN_LIBCHAR, tables->db, tables->real_name); /* If a MyISAM table is in the same directory as the MERGE table, we use the table name without a path. This means that the @@ -422,6 +422,7 @@ int ha_myisammrg::create(const char *name, register TABLE *form, } else table_name=(*tbl)->path; + DBUG_PRINT("info",("MyISAM table_name: '%s'", table_name)); *pos++= table_name; } *pos=0; diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c index 268f7d18f2a..d92b291321b 100644 --- a/strings/my_vsnprintf.c +++ b/strings/my_vsnprintf.c @@ -28,7 +28,8 @@ %#[l]u %#[l]x %#.#s Note first # is ignored - + %c + RETURN length of result string */ @@ -120,6 +121,11 @@ int my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap) to+= res_length; continue; } + else if (*fmt == 'c') + { + *(to++)= (char) va_arg(ap, int); + continue; + } /* We come here on '%%', unknown code or too long parameter */ if (to == end) break; From 31cffb8a7f8e21659d11d1b6cad8af5c0577323a Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 20 May 2005 15:17:13 +0200 Subject: [PATCH 02/22] my_vsnprintf.c, sql_select.cc, sql_delete.cc, field_conv.cc, rt_split.c: Fixes for valgrind errors and compatiblity issues by Monty myisam/rt_split.c: Fixes for valgrind errors and compatiblity issues by Monty sql/field_conv.cc: Fixes for valgrind errors and compatiblity issues by Monty sql/sql_delete.cc: Fixes for valgrind errors and compatiblity issues by Monty sql/sql_select.cc: Fixes for valgrind errors and compatiblity issues by Monty strings/my_vsnprintf.c: Fixes for valgrind errors and compatiblity issues by Monty --- myisam/rt_split.c | 17 ++++++++--------- sql/field_conv.cc | 6 +++++- sql/sql_delete.cc | 2 +- sql/sql_select.cc | 4 ++-- strings/my_vsnprintf.c | 10 ++++++++++ 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/myisam/rt_split.c b/myisam/rt_split.c index 005e86805bb..7dc8576cada 100644 --- a/myisam/rt_split.c +++ b/myisam/rt_split.c @@ -257,18 +257,17 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key, int n_dim; uchar *source_cur, *cur1, *cur2; uchar *new_page; - int err_code = 0; - - uint nod_flag = mi_test_if_nod(page); - uint full_length = key_length + (nod_flag ? nod_flag : - info->s->base.rec_reflength); - - int max_keys = (mi_getint(page)-2) / (full_length); + int err_code= 0; + uint nod_flag= mi_test_if_nod(page); + uint full_length= key_length + (nod_flag ? nod_flag : + info->s->base.rec_reflength); + int max_keys= (mi_getint(page)-2) / (full_length); n_dim = keyinfo->keysegs / 2; - if (!(coord_buf= my_alloca(n_dim * 2 * sizeof(double) * (max_keys + 1 + 4) + - sizeof(SplitStruct) * (max_keys + 1)))) + if (!(coord_buf= (double*) my_alloca(n_dim * 2 * sizeof(double) * + (max_keys + 1 + 4) + + sizeof(SplitStruct) * (max_keys + 1)))) return -1; task= (SplitStruct *)(coord_buf + n_dim * 2 * (max_keys + 1 + 4)); diff --git a/sql/field_conv.cc b/sql/field_conv.cc index ae784ae0293..15598e59bb9 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -605,7 +605,11 @@ void field_conv(Field *to,Field *from) to->type() != FIELD_TYPE_DATE && to->type() != FIELD_TYPE_DATETIME)) { // Identical fields - memcpy(to->ptr,from->ptr,to->pack_length()); +#ifdef HAVE_purify + /* This may happen if one does 'UPDATE ... SET x=x' */ + if (to->ptr != from->ptr) +#endif + memcpy(to->ptr,from->ptr,to->pack_length()); return; } } diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index cded9e2a13e..ca7bf174abf 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -48,7 +48,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, { my_error(ER_VIEW_DELETE_MERGE_VIEW, MYF(0), table_list->view_db.str, table_list->view_name.str); - DBUG_RETURN(-1); + DBUG_RETURN(TRUE); } table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK); thd->proc_info="init"; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 99373276410..71414f8cc76 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -12655,8 +12655,10 @@ static bool setup_sum_funcs(THD *thd, Item_sum **func_ptr) Item_sum *func; DBUG_ENTER("setup_sum_funcs"); while ((func= *(func_ptr++))) + { if (func->setup(thd)) DBUG_RETURN(TRUE); + } DBUG_RETURN(FALSE); } @@ -12943,8 +12945,6 @@ bool JOIN::rollup_make_fields(List &fields_arg, List &sel_fields, */ item= item->copy_or_same(thd); ((Item_sum*) item)->make_unique(); - if (((Item_sum*) item)->setup(thd)) - return 1; *(*func)= (Item_sum*) item; (*func)++; } diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c index 4d7c17e977c..935cc2d380d 100644 --- a/strings/my_vsnprintf.c +++ b/strings/my_vsnprintf.c @@ -135,6 +135,16 @@ int my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap) to+= res_length; continue; } + else if (*fmt == 'c') /* Character parameter */ + { + register int larg; + if (to == end) + break; + larg = va_arg(ap, int); + *to++= (char) larg; + continue; + } + /* We come here on '%%', unknown code or too long parameter */ if (to == end) break; From 27b7f85a0beafedfe97e8a95b9599ac0c0f53e29 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 20 May 2005 18:35:49 +0400 Subject: [PATCH 03/22] Fixes for numerous compatibility problems in yaSSL. extra/yassl/include/openssl/ssl.h: Fix -std=c++98 mode compilation failures. extra/yassl/include/yassl_error.hpp: Fix -std=c++98 mode compilation failures. extra/yassl/include/yassl_types.hpp: Fix -std=c++98 mode compilation failures. extra/yassl/mySTL/helpers.hpp: Fix AIX 5.2 compilation problem. extra/yassl/taocrypt/include/asn.hpp: Fix -std=c++98 mode compilation failures. vio/Makefile.am: Add a dummy C++ file to SSL tests to make libtool use a C++ linker: this lets ssl tests link when using yaSSL and a non-gcc C++ compiler. --- extra/yassl/include/openssl/ssl.h | 10 +++++----- extra/yassl/include/yassl_error.hpp | 2 +- extra/yassl/include/yassl_types.hpp | 4 ++-- extra/yassl/mySTL/helpers.hpp | 16 ++++++++++++++-- extra/yassl/src/dummy.cpp | 4 ++++ extra/yassl/taocrypt/include/asn.hpp | 4 ++-- vio/Makefile.am | 8 +++++--- 7 files changed, 33 insertions(+), 15 deletions(-) create mode 100644 extra/yassl/src/dummy.cpp diff --git a/extra/yassl/include/openssl/ssl.h b/extra/yassl/include/openssl/ssl.h index 361918846fc..85f0771ca85 100644 --- a/extra/yassl/include/openssl/ssl.h +++ b/extra/yassl/include/openssl/ssl.h @@ -149,7 +149,7 @@ enum { /* X509 Constants */ X509_V_ERR_CRL_SIGNATURE_FAILURE = 10, X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 11, X509_V_ERR_CRL_HAS_EXPIRED = 12, - X509_V_ERR_CERT_REVOKED = 13, + X509_V_ERR_CERT_REVOKED = 13 }; @@ -166,7 +166,7 @@ int ERR_GET_REASON(int); enum { /* ERR Constants */ ERR_TXT_STRING = 1, - EVP_R_BAD_DECRYPT = 2, + EVP_R_BAD_DECRYPT = 2 }; @@ -263,8 +263,8 @@ enum { /* ssl Constants */ SSL_UNKNOWN = -2, SSL_FATAL_ERROR = -1, SSL_NORMAL_SHUTDOWN = 0, - SSL_ERROR_NONE = 0, // for most functions - SSL_FAILURE = 0, // for some functions + SSL_ERROR_NONE = 0, /* for most functions */ + SSL_FAILURE = 0, /* for some functions */ SSL_SUCCESS = 1, SSL_FILETYPE_ASN1 = 10, @@ -320,7 +320,7 @@ enum { /* ssl Constants */ SSL_ST_ACCEPT = 94, SSL_CB_ALERT = 95, SSL_CB_READ = 96, - SSL_CB_HANDSHAKE_DONE = 97, + SSL_CB_HANDSHAKE_DONE = 97 }; diff --git a/extra/yassl/include/yassl_error.hpp b/extra/yassl/include/yassl_error.hpp index 4165eb24b66..0b06a37a635 100644 --- a/extra/yassl/include/yassl_error.hpp +++ b/extra/yassl/include/yassl_error.hpp @@ -51,7 +51,7 @@ enum YasslError { verify_error = 112, send_error = 113, receive_error = 114, - certificate_error = 115, + certificate_error = 115 // 1000+ from TaoCrypt error.hpp diff --git a/extra/yassl/include/yassl_types.hpp b/extra/yassl/include/yassl_types.hpp index 70888f35c81..6359ad54aab 100644 --- a/extra/yassl/include/yassl_types.hpp +++ b/extra/yassl/include/yassl_types.hpp @@ -129,7 +129,7 @@ enum PublicValueEncoding { implicit_encoding, explicit_encoding }; enum ConnectionEnd { server_end, client_end }; -enum AlertLevel { warning = 1, fatal = 2, }; +enum AlertLevel { warning = 1, fatal = 2 }; @@ -381,7 +381,7 @@ const char* const cipher_names[128] = "DES-CBC3-RMD", // TLS_RSA_WITH_3DES_EDE_CBC_RMD160 = 124 "AES128-RMD", // TLS_RSA_WITH_AES_128_CBC_RMD160 = 125 "AES256-RMD", // TLS_RSA_WITH_AES_256_CBC_RMD160 = 126 - null_str, // 127 + null_str // 127 }; // fill with MD5 pad size since biggest required diff --git a/extra/yassl/mySTL/helpers.hpp b/extra/yassl/mySTL/helpers.hpp index 1b62d60cd2e..fdb856d4db1 100644 --- a/extra/yassl/mySTL/helpers.hpp +++ b/extra/yassl/mySTL/helpers.hpp @@ -27,16 +27,28 @@ #ifndef mySTL_HELPERS_HPP #define mySTL_HELPERS_HPP -#include +#include +#ifdef __IBMCPP__ +/* + Workaround the lack of operator new(size_t, void*) + in IBM VA CPP 6.0 +*/ +struct Dummy {}; +inline void *operator new(size_t size, Dummy *d) { return (void*) d; } +typedef Dummy *yassl_pointer; +#else +typedef void *yassl_pointer; +#endif + namespace mySTL { template inline void construct(T* p, const T2& value) { - new (static_cast(p)) T(value); + new ((yassl_pointer) p) T(value); } diff --git a/extra/yassl/src/dummy.cpp b/extra/yassl/src/dummy.cpp new file mode 100644 index 00000000000..19b7fe887cd --- /dev/null +++ b/extra/yassl/src/dummy.cpp @@ -0,0 +1,4 @@ +/* + To make libtool always use a C++ linker when compiling with yaSSL we need + to add a dummy C++ file to the source list. +*/ diff --git a/extra/yassl/taocrypt/include/asn.hpp b/extra/yassl/taocrypt/include/asn.hpp index 71633339a40..974bbf4c86f 100644 --- a/extra/yassl/taocrypt/include/asn.hpp +++ b/extra/yassl/taocrypt/include/asn.hpp @@ -79,7 +79,7 @@ enum ASNIdFlag enum DNTags { - COMMON_NAME = 0x03, + COMMON_NAME = 0x03 }; @@ -92,7 +92,7 @@ enum Constants MAX_SEQ_SZ = 5, // enum(seq|con) + length(4) MAX_ALGO_SIZE = 9, MAX_DIGEST_SZ = 25, // SHA + enum(Bit or Octet) + length(4) - DSA_SIG_SZ = 40, + DSA_SIG_SZ = 40 }; diff --git a/vio/Makefile.am b/vio/Makefile.am index 9c961025080..22e706efe4c 100644 --- a/vio/Makefile.am +++ b/vio/Makefile.am @@ -19,15 +19,17 @@ LDADD= @CLIENT_EXTRA_LDFLAGS@ $(openssl_libs) pkglib_LIBRARIES= libvio.a noinst_PROGRAMS = test-ssl test-sslserver test-sslclient noinst_HEADERS= vio_priv.h -test_ssl_SOURCES= test-ssl.c +test_ssl_SOURCES= test-ssl.c $(top_srcdir)/extra/yassl/src/dummy.cpp test_ssl_LDADD= @CLIENT_EXTRA_LDFLAGS@ ../dbug/libdbug.a libvio.a \ ../mysys/libmysys.a ../strings/libmystrings.a \ $(openssl_libs) -test_sslserver_SOURCES= test-sslserver.c +test_sslserver_SOURCES= test-sslserver.c \ + $(top_srcdir)/extra/yassl/src/dummy.cpp test_sslserver_LDADD= @CLIENT_EXTRA_LDFLAGS@ ../dbug/libdbug.a libvio.a \ ../mysys/libmysys.a ../strings/libmystrings.a \ $(openssl_libs) -test_sslclient_SOURCES= test-sslclient.c +test_sslclient_SOURCES= test-sslclient.c \ + $(top_srcdir)/extra/yassl/src/dummy.cpp test_sslclient_LDADD= @CLIENT_EXTRA_LDFLAGS@ ../dbug/libdbug.a libvio.a \ ../mysys/libmysys.a ../strings/libmystrings.a \ $(openssl_libs) From fd6acea25561bffb3349833ff5c03bbf56cfd924 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 20 May 2005 22:52:41 +0400 Subject: [PATCH 04/22] yaSSL fixes for Sun Forte 7 extra/yassl/include/yassl_types.hpp: A fix for Sun Forte 7 extra/yassl/mySTL/helpers.hpp: Better comment for the previous fix. extra/yassl/mySTL/list.hpp: A fix for Sun Forte 7 --- extra/yassl/include/yassl_types.hpp | 2 +- extra/yassl/mySTL/helpers.hpp | 4 ++-- extra/yassl/mySTL/list.hpp | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/extra/yassl/include/yassl_types.hpp b/extra/yassl/include/yassl_types.hpp index 6359ad54aab..1ad4998bade 100644 --- a/extra/yassl/include/yassl_types.hpp +++ b/extra/yassl/include/yassl_types.hpp @@ -27,7 +27,7 @@ #ifndef yaSSL_TYPES_HPP #define yaSSL_TYPES_HPP -#include +#include namespace yaSSL { diff --git a/extra/yassl/mySTL/helpers.hpp b/extra/yassl/mySTL/helpers.hpp index fdb856d4db1..779389e322a 100644 --- a/extra/yassl/mySTL/helpers.hpp +++ b/extra/yassl/mySTL/helpers.hpp @@ -32,8 +32,8 @@ #ifdef __IBMCPP__ /* - Workaround the lack of operator new(size_t, void*) - in IBM VA CPP 6.0 + Workaround for the lack of operator new(size_t, void*) + in IBM VA C++ 6.0 */ struct Dummy {}; inline void *operator new(size_t size, Dummy *d) { return (void*) d; } diff --git a/extra/yassl/mySTL/list.hpp b/extra/yassl/mySTL/list.hpp index 5bbec6ab7c6..be149b1a984 100644 --- a/extra/yassl/mySTL/list.hpp +++ b/extra/yassl/mySTL/list.hpp @@ -38,6 +38,13 @@ namespace mySTL { template class list { +#ifdef __SUNPRO_CC +/* + Sun Forte 7 C++ v. 5.4 needs class 'node' be public to be visible to + the nested class 'iterator' (a non-standard behaviour). +*/ +public: +#endif struct node { node(T t) : prev_(0), next_(0), value_(t) {} From 442c072fdf6c7dd2b7fcad5a44c6438b980629f4 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 21 May 2005 12:31:58 -0500 Subject: [PATCH 05/22] BUG# 9148: Denial of service This is a second patch needing another review. The first patch didn't solve the entire problem. open and fopen on Windows will still open files like "com1.sym" when they shouldn't. This patch checks that the file exists before trying to open it. mysys/my_fopen.c: on Windows, if we are not creating a file the we call my_access to make sure the file exists before trying to open it. mysys/my_open.c: on Windows, if we are not creating a file the we call my_access to make sure the file exists before trying to open it. --- mysys/my_fopen.c | 18 +++++++++++++++--- mysys/my_open.c | 6 ++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/mysys/my_fopen.c b/mysys/my_fopen.c index e918b7b0de2..208e7e80fd8 100644 --- a/mysys/my_fopen.c +++ b/mysys/my_fopen.c @@ -33,9 +33,21 @@ FILE *my_fopen(const char *FileName, int Flags, myf MyFlags) DBUG_ENTER("my_fopen"); DBUG_PRINT("my",("Name: '%s' Flags: %d MyFlags: %d", FileName, Flags, MyFlags)); - - make_ftype(type,Flags); - if ((fd = fopen(FileName, type)) != 0) + /* + * if we are not creating, then we need to use my_access to make sure + * the file exists since Windows doesn't handle files like "com1.sym" very well + */ +#ifdef __WIN__ + if (! (Flags & O_CREAT) && my_access(FileName, F_OK)) + fd=0; + else +#endif + { + make_ftype(type,Flags); + fd = fopen(FileName, type); + } + + if (fd != 0) { /* The test works if MY_NFILE < 128. The problem is that fileno() is char diff --git a/mysys/my_open.c b/mysys/my_open.c index ca5c0d8683f..1f3bb95b5a2 100644 --- a/mysys/my_open.c +++ b/mysys/my_open.c @@ -46,6 +46,12 @@ File my_open(const char *FileName, int Flags, myf MyFlags) DBUG_PRINT("my",("Name: '%s' Flags: %d MyFlags: %d", FileName, Flags, MyFlags)); #if defined(MSDOS) || defined(__WIN__) || defined(__EMX__) || defined(OS2) + /* if we are not creating, then we need to use my_access to make + * sure the file exists since Windows doesn't handle files like + * "com1.sym" very well + */ + if (! (Flags & O_CREAT) && my_access(FileName, F_OK)) + return -1; if (Flags & O_SHARE) fd = sopen((my_string) FileName, (Flags & ~O_SHARE) | O_BINARY, SH_DENYNO, MY_S_IREAD | MY_S_IWRITE); From 05e658235b3dff6a52ccf980ee3ae37e0c8d1af2 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 21 May 2005 23:23:39 +0200 Subject: [PATCH 06/22] default_modify.c: Use MY_STAT to declare argument to my_fstat() des_key_file.cc: Use local seach path for "mysql_priv.h" mysys.dsp, libmysqld.dsp, libmysql.dsp: New file needed, "../mysys/default_modify.c" VC++Files/libmysql/libmysql.dsp: New file needed, "../mysys/default_modify.c" VC++Files/libmysqld/libmysqld.dsp: New file needed, "../mysys/default_modify.c" VC++Files/mysys/mysys.dsp: New file needed, "../mysys/default_modify.c" sql/des_key_file.cc: Use local seach path for "mysql_priv.h" mysys/default_modify.c: Use MY_STAT to declare argument to my_fstat() --- VC++Files/libmysql/libmysql.dsp | 4 ++++ VC++Files/libmysqld/libmysqld.dsp | 4 ++++ VC++Files/mysys/mysys.dsp | 4 ++++ mysys/default_modify.c | 2 +- sql/des_key_file.cc | 2 +- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/VC++Files/libmysql/libmysql.dsp b/VC++Files/libmysql/libmysql.dsp index b94aaf07bed..1db5ed538a4 100644 --- a/VC++Files/libmysql/libmysql.dsp +++ b/VC++Files/libmysql/libmysql.dsp @@ -219,6 +219,10 @@ SOURCE=..\mysys\default.c # End Source File # Begin Source File +SOURCE=..\mysys\default_modify.c +# End Source File +# Begin Source File + SOURCE=.\dll.c # End Source File # Begin Source File diff --git a/VC++Files/libmysqld/libmysqld.dsp b/VC++Files/libmysqld/libmysqld.dsp index c5c40b07dfd..a82538c91dd 100644 --- a/VC++Files/libmysqld/libmysqld.dsp +++ b/VC++Files/libmysqld/libmysqld.dsp @@ -180,6 +180,10 @@ SOURCE=..\mysys\default.c # End Source File # Begin Source File +SOURCE=..\mysys\default_modify.c +# End Source File +# Begin Source File + SOURCE=..\sql\derror.cpp # End Source File # Begin Source File diff --git a/VC++Files/mysys/mysys.dsp b/VC++Files/mysys/mysys.dsp index 64c4378b678..2da8fee4aa3 100644 --- a/VC++Files/mysys/mysys.dsp +++ b/VC++Files/mysys/mysys.dsp @@ -204,6 +204,10 @@ SOURCE=.\default.c # End Source File # Begin Source File +SOURCE=.\default_modify.c +# End Source File +# Begin Source File + SOURCE=.\errors.c # End Source File # Begin Source File diff --git a/mysys/default_modify.c b/mysys/default_modify.c index 3476b8628cf..add4317bb56 100644 --- a/mysys/default_modify.c +++ b/mysys/default_modify.c @@ -42,7 +42,7 @@ int modify_defaults_file(const char *file_location, const char *option, const char *section_name, int remove_option) { FILE *cnf_file; - struct stat file_stat; + MY_STAT file_stat; char linebuff[BUFF_SIZE], tmp[BUFF_SIZE], *tmp_ptr, *src_ptr, *dst_ptr, *file_buffer; uint optlen, optval_len, sect_len; diff --git a/sql/des_key_file.cc b/sql/des_key_file.cc index c6b4c5f2c34..a5a3e78d70f 100644 --- a/sql/des_key_file.cc +++ b/sql/des_key_file.cc @@ -14,7 +14,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include +#include "mysql_priv.h" #include #ifdef HAVE_OPENSSL From 6f3718e4e882b66e681d88b3dd795156b7953456 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 22 May 2005 04:19:54 +0200 Subject: [PATCH 07/22] misc.hpp: Check _LONGLONG_TYPE as well, to define 'word64', to make it work on Solaris 10 x86_64. Can't assume all x86_64 share the same assembler syntax. For now disabled assembler for x86_64 and Solaris. extra/yassl/taocrypt/include/misc.hpp: Check _LONGLONG_TYPE as well, to define 'word64', to make it work on Solaris 10 x86_64. Can't assume all x86_64 share the same assembler syntax. For now disabled assembler for x86_64 and Solaris. --- extra/yassl/taocrypt/include/misc.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/extra/yassl/taocrypt/include/misc.hpp b/extra/yassl/taocrypt/include/misc.hpp index b9cc9a6fe71..b5b0a4575fc 100644 --- a/extra/yassl/taocrypt/include/misc.hpp +++ b/extra/yassl/taocrypt/include/misc.hpp @@ -59,7 +59,7 @@ typedef unsigned char byte; typedef unsigned short word16; typedef unsigned int word32; -#if defined(__GNUC__) || defined(__MWERKS__) +#if defined(__GNUC__) || defined(__MWERKS__) || defined(_LONGLONG_TYPE) #define WORD64_AVAILABLE typedef unsigned long long word64; #define W64LIT(x) x##LL @@ -79,8 +79,10 @@ typedef unsigned int word32; typedef word32 lword; #endif +// FIXME the !defined(__sun) is a temporarely solution until asm for +// __x86_64__ and Solaris is written #if defined(__alpha__) || defined(__ia64__) || defined(_ARCH_PPC64) || \ - defined(__x86_64__) || defined(__mips64) + defined(__mips64) || (defined(__x86_64__) && !defined(__sun)) // These platforms have 64-bit CPU registers. Unfortunately most C++ compilers // don't allow any way to access the 64-bit by 64-bit multiply instruction // without using assembly, so in order to use word64 as word, the assembly From 4694d1245ec5d5d08b930e778787b7962b1e372f Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 22 May 2005 20:47:08 +0200 Subject: [PATCH 08/22] ndb - NdbDictionaryImpl.cpp: fix access to freed memory ndb/src/ndbapi/NdbDictionaryImpl.cpp: fix access to freed memory --- ndb/src/ndbapi/NdbDictionaryImpl.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/ndb/src/ndbapi/NdbDictionaryImpl.cpp index fe2df815f1f..baf5c7e5c83 100644 --- a/ndb/src/ndbapi/NdbDictionaryImpl.cpp +++ b/ndb/src/ndbapi/NdbDictionaryImpl.cpp @@ -2049,12 +2049,22 @@ NdbDictionaryImpl::getIndexImpl(const char * externalName, return 0; } + /* + * internalName may be pointer to m_ndb.theImpl->m_internalname.c_str() + * and may get deallocated in next call. + * + * Passing around pointers to volatile internal members may not be + * optimal. Suggest use BaseString instances passed by value. + */ + + BaseString save_me(internalName); NdbTableImpl* prim = getTable(tab->m_primaryTable.c_str()); if(prim == 0){ m_error.code = 4243; return 0; } - + internalName = save_me.c_str(); + /** * Create index impl */ From c1248c4268f74ce2c3821f7214fda1370a7a091e Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 15:02:02 +0200 Subject: [PATCH 09/22] Build fix ndb/src/cw/cpcd/Process.cpp: Remove ifdef for icc Shouldn't need to define rlimit64 --- ndb/src/cw/cpcd/Process.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ndb/src/cw/cpcd/Process.cpp b/ndb/src/cw/cpcd/Process.cpp index cfffec7d0ce..431c96e3320 100644 --- a/ndb/src/cw/cpcd/Process.cpp +++ b/ndb/src/cw/cpcd/Process.cpp @@ -223,11 +223,8 @@ set_ulimit(const BaseString & pair){ if(!(list[1].trim() == "unlimited")){ value = atoi(list[1].c_str()); } -#if defined(__INTEL_COMPILER) - struct rlimit64 rlp; -#else + struct rlimit rlp; -#endif #define _RLIMIT_FIX(x) { res = getrlimit(x,&rlp); if(!res){ rlp.rlim_cur = value; res = setrlimit(x, &rlp); }} if(list[0].trim() == "c"){ From d35e537a685d44eb43cf59f3539227e45efb8d00 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 15:13:21 +0200 Subject: [PATCH 10/22] Build fix include/my_global.h: Look for __INTEL_COMPILER to detect icc --- include/my_global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/my_global.h b/include/my_global.h index 5448aa3e871..f82c758d17a 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -44,7 +44,7 @@ #endif /* __CYGWIN__ */ /* Determine when to use "#pragma interface" */ -#if !defined(__CYGWIN__) && !defined(__ICC) && defined(__GNUC__) && (__GNUC__ < 3) +#if !defined(__CYGWIN__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ < 3) #define USE_PRAGMA_INTERFACE #endif From 7ff2a5a54371568a414dfbd77082427186d6a83c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 16:50:20 +0200 Subject: [PATCH 11/22] Removing mysqlshutdown and mysqlwatch from the Windows packages, removing their sources. They were both undocumented and not much useful. Removal has been agreed with Mark, Miguel and MikeZ. Removing winmysqladmin from the source (it was not included anymore in no Windows package). I'll do a test Windows noinstall.zip build before push. MikeZ just removed mysqlshutdown and mysqlwatch from the installer scripts. BitKeeper/deleted/.del-myshutdown.dsp~a8eee34a3d3ab679: Delete: VC++Files/mysqlshutdown/myshutdown.dsp BitKeeper/deleted/.del-myshutdown_ia64.dsp~dd2ad23d744ba1ba: Delete: VC++Files/mysqlshutdown/myshutdown_ia64.dsp BitKeeper/deleted/.del-mysql.ico~d4c55da4e911ced7: Delete: VC++Files/mysqlshutdown/mysql.ico BitKeeper/deleted/.del-mysqlshutdown.c~35d5feec4507d810: Delete: VC++Files/mysqlshutdown/mysqlshutdown.c BitKeeper/deleted/.del-mysqlshutdown.dsp~27db1e088d39987c: Delete: VC++Files/mysqlshutdown/mysqlshutdown.dsp BitKeeper/deleted/.del-mysqlshutdown.rc~454359c66381843c: Delete: VC++Files/mysqlshutdown/mysqlshutdown.rc BitKeeper/deleted/.del-mysqlshutdown_ia64.dsp~53fe7127af678bc: Delete: VC++Files/mysqlshutdown/mysqlshutdown_ia64.dsp BitKeeper/deleted/.del-mysqlwatch.c~de504821ede1cb8: Delete: VC++Files/mysqlwatch/mysqlwatch.c BitKeeper/deleted/.del-mysqlwatch.dsp~4699ddfb6ed23a6d: Delete: VC++Files/mysqlwatch/mysqlwatch.dsp BitKeeper/deleted/.del-mysqlwatch_ia64.dsp~1a11ce58f66a493: Delete: VC++Files/mysqlwatch/mysqlwatch_ia64.dsp BitKeeper/deleted/.del-db.cpp~6bbc3687ff8a2913: Delete: VC++Files/winmysqladmin/db.cpp BitKeeper/deleted/.del-db.h~e38deaf45dffa24d: Delete: VC++Files/winmysqladmin/db.h BitKeeper/deleted/.del-initsetup.cpp~b988f9ab7dbe4e92: Delete: VC++Files/winmysqladmin/initsetup.cpp BitKeeper/deleted/.del-initsetup.h~bc2a39769765e1a5: Delete: VC++Files/winmysqladmin/initsetup.h BitKeeper/deleted/.del-main.cpp~f822deb513ce0250: Delete: VC++Files/winmysqladmin/main.cpp BitKeeper/deleted/.del-Goahead.ico~805e753b7f13c6b7: Delete: VC++Files/winmysqladmin/images/Goahead.ico BitKeeper/deleted/.del-main.h~d17e73cf0b0cbf8: Delete: VC++Files/winmysqladmin/main.h BitKeeper/deleted/.del-mysql.h~a538c356e526804b: Delete: VC++Files/winmysqladmin/mysql.h BitKeeper/deleted/.del-mysql_com.h~8828acc269ca5036: Delete: VC++Files/winmysqladmin/mysql_com.h BitKeeper/deleted/.del-mysql_version.h~674dd1127ee25880: Delete: VC++Files/winmysqladmin/mysql_version.h BitKeeper/deleted/.del-winmysqladmin.cpp~bfac61f49813a983: Delete: VC++Files/winmysqladmin/winmysqladmin.cpp BitKeeper/deleted/.del-HELP.ICO~6b91d6eff4a7b11e: Delete: VC++Files/winmysqladmin/images/HELP.ICO BitKeeper/deleted/.del-INFO.ICO~b1eb08e87e0c1c3e: Delete: VC++Files/winmysqladmin/images/INFO.ICO BitKeeper/deleted/.del-Info.bmp~9c3c5afea29fa9b7: Delete: VC++Files/winmysqladmin/images/Info.bmp BitKeeper/deleted/.del-MYINI.ICO~91c77cc71d665f4: Delete: VC++Files/winmysqladmin/images/MYINI.ICO BitKeeper/deleted/.del-Myini.bmp~6cea36edbb94df3a: Delete: VC++Files/winmysqladmin/images/Myini.bmp BitKeeper/deleted/.del-Noentry.ico~6791fac163575069: Delete: VC++Files/winmysqladmin/images/Noentry.ico BitKeeper/deleted/.del-SETUP.BMP~43bd1e614fc7e5d5: Delete: VC++Files/winmysqladmin/images/SETUP.BMP BitKeeper/deleted/.del-Setup 16.bmp~9a9bf24a5dd952f3: Delete: VC++Files/winmysqladmin/images/Setup 16.bmp BitKeeper/deleted/.del-Table.ico~d64bf78e407b5e50: Delete: VC++Files/winmysqladmin/images/Table.ico BitKeeper/deleted/.del-Working.ico~f5cf304a7b6e592c: Delete: VC++Files/winmysqladmin/images/Working.ico BitKeeper/deleted/.del-database.ico~df8562312d9d9ed8: Delete: VC++Files/winmysqladmin/images/database.ico BitKeeper/deleted/.del-find.ico~44644ca5bab7901e: Delete: VC++Files/winmysqladmin/images/find.ico BitKeeper/deleted/.del-green.ico~88749a9a4ff83d25: Delete: VC++Files/winmysqladmin/images/green.ico BitKeeper/deleted/.del-help.bmp~bb6ac08cf7ab60d7: Delete: VC++Files/winmysqladmin/images/help.bmp BitKeeper/deleted/.del-initsetup.cpp~6704e992d966647f: Delete: VC++Files/winmysqladmin/images/initsetup.cpp BitKeeper/deleted/.del-killdb.ico~1043773bac9da67c: Delete: VC++Files/winmysqladmin/images/killdb.ico BitKeeper/deleted/.del-logo.ico~f00b08cd64695232: Delete: VC++Files/winmysqladmin/images/logo.ico BitKeeper/deleted/.del-multitrg.ico~52f787d7d9509533: Delete: VC++Files/winmysqladmin/images/multitrg.ico BitKeeper/deleted/.del-mysql-07.bmp~c157a2c3573b5c27: Delete: VC++Files/winmysqladmin/images/mysql-07.bmp BitKeeper/deleted/.del-mysql-17.bmp~99b3c90f96a9964b: Delete: VC++Files/winmysqladmin/images/mysql-17.bmp BitKeeper/deleted/.del-mysql.BMP~b58fe4f0c416291: Delete: VC++Files/winmysqladmin/images/mysql.BMP BitKeeper/deleted/.del-red.ico~179f5587e5a706c9: Delete: VC++Files/winmysqladmin/images/red.ico BitKeeper/deleted/.del-red22.BMP~bc47efefee4a5a86: Delete: VC++Files/winmysqladmin/images/red22.BMP BitKeeper/deleted/.del-see.bmp~c6863c3564387841: Delete: VC++Files/winmysqladmin/images/see.bmp VC++Files/mysql.dsw: removing mysqlshutdown and mysqlwatch VC++Files/mysql_ia64.dsw: removing mysqlshutdown and mysqlwatch --- VC++Files/mysql.dsw | 24 - VC++Files/mysql_ia64.dsw | 24 - VC++Files/mysqlshutdown/myshutdown.dsp | 101 - VC++Files/mysqlshutdown/myshutdown_ia64.dsp | 101 - VC++Files/mysqlshutdown/mysql.ico | Bin 318 -> 0 bytes VC++Files/mysqlshutdown/mysqlshutdown.c | 198 -- VC++Files/mysqlshutdown/mysqlshutdown.dsp | 119 - VC++Files/mysqlshutdown/mysqlshutdown.rc | 2 - .../mysqlshutdown/mysqlshutdown_ia64.dsp | 119 - VC++Files/mysqlwatch/mysqlwatch.c | 745 ----- VC++Files/mysqlwatch/mysqlwatch.dsp | 70 - VC++Files/mysqlwatch/mysqlwatch_ia64.dsp | 71 - VC++Files/winmysqladmin/db.cpp | 80 - VC++Files/winmysqladmin/db.h | 32 - VC++Files/winmysqladmin/images/Goahead.ico | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/HELP.ICO | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/INFO.ICO | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/Info.bmp | Bin 644 -> 0 bytes VC++Files/winmysqladmin/images/MYINI.ICO | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/Myini.bmp | Bin 644 -> 0 bytes VC++Files/winmysqladmin/images/Noentry.ico | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/SETUP.BMP | Bin 86878 -> 0 bytes VC++Files/winmysqladmin/images/Setup 16.bmp | Bin 86880 -> 0 bytes VC++Files/winmysqladmin/images/Table.ico | Bin 1078 -> 0 bytes VC++Files/winmysqladmin/images/Working.ico | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/database.ico | Bin 1078 -> 0 bytes VC++Files/winmysqladmin/images/find.ico | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/green.ico | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/help.bmp | Bin 644 -> 0 bytes VC++Files/winmysqladmin/images/initsetup.cpp | 42 - VC++Files/winmysqladmin/images/killdb.ico | Bin 1078 -> 0 bytes VC++Files/winmysqladmin/images/logo.ico | Bin 2022 -> 0 bytes VC++Files/winmysqladmin/images/multitrg.ico | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/mysql-07.bmp | Bin 9618 -> 0 bytes VC++Files/winmysqladmin/images/mysql-17.bmp | Bin 3806 -> 0 bytes VC++Files/winmysqladmin/images/mysql.BMP | Bin 8760 -> 0 bytes VC++Files/winmysqladmin/images/red.ico | Bin 766 -> 0 bytes VC++Files/winmysqladmin/images/red22.BMP | Bin 2104 -> 0 bytes VC++Files/winmysqladmin/images/see.bmp | Bin 644 -> 0 bytes VC++Files/winmysqladmin/initsetup.cpp | 40 - VC++Files/winmysqladmin/initsetup.h | 38 - VC++Files/winmysqladmin/main.cpp | 2531 ----------------- VC++Files/winmysqladmin/main.h | 314 -- VC++Files/winmysqladmin/mysql.h | 295 -- VC++Files/winmysqladmin/mysql_com.h | 275 -- VC++Files/winmysqladmin/mysql_version.h | 20 - VC++Files/winmysqladmin/winmysqladmin.cpp | 36 - 47 files changed, 5277 deletions(-) delete mode 100644 VC++Files/mysqlshutdown/myshutdown.dsp delete mode 100644 VC++Files/mysqlshutdown/myshutdown_ia64.dsp delete mode 100644 VC++Files/mysqlshutdown/mysql.ico delete mode 100644 VC++Files/mysqlshutdown/mysqlshutdown.c delete mode 100644 VC++Files/mysqlshutdown/mysqlshutdown.dsp delete mode 100644 VC++Files/mysqlshutdown/mysqlshutdown.rc delete mode 100644 VC++Files/mysqlshutdown/mysqlshutdown_ia64.dsp delete mode 100644 VC++Files/mysqlwatch/mysqlwatch.c delete mode 100644 VC++Files/mysqlwatch/mysqlwatch.dsp delete mode 100644 VC++Files/mysqlwatch/mysqlwatch_ia64.dsp delete mode 100644 VC++Files/winmysqladmin/db.cpp delete mode 100644 VC++Files/winmysqladmin/db.h delete mode 100644 VC++Files/winmysqladmin/images/Goahead.ico delete mode 100644 VC++Files/winmysqladmin/images/HELP.ICO delete mode 100644 VC++Files/winmysqladmin/images/INFO.ICO delete mode 100644 VC++Files/winmysqladmin/images/Info.bmp delete mode 100644 VC++Files/winmysqladmin/images/MYINI.ICO delete mode 100644 VC++Files/winmysqladmin/images/Myini.bmp delete mode 100644 VC++Files/winmysqladmin/images/Noentry.ico delete mode 100644 VC++Files/winmysqladmin/images/SETUP.BMP delete mode 100644 VC++Files/winmysqladmin/images/Setup 16.bmp delete mode 100644 VC++Files/winmysqladmin/images/Table.ico delete mode 100644 VC++Files/winmysqladmin/images/Working.ico delete mode 100644 VC++Files/winmysqladmin/images/database.ico delete mode 100644 VC++Files/winmysqladmin/images/find.ico delete mode 100644 VC++Files/winmysqladmin/images/green.ico delete mode 100644 VC++Files/winmysqladmin/images/help.bmp delete mode 100644 VC++Files/winmysqladmin/images/initsetup.cpp delete mode 100644 VC++Files/winmysqladmin/images/killdb.ico delete mode 100644 VC++Files/winmysqladmin/images/logo.ico delete mode 100644 VC++Files/winmysqladmin/images/multitrg.ico delete mode 100644 VC++Files/winmysqladmin/images/mysql-07.bmp delete mode 100644 VC++Files/winmysqladmin/images/mysql-17.bmp delete mode 100644 VC++Files/winmysqladmin/images/mysql.BMP delete mode 100644 VC++Files/winmysqladmin/images/red.ico delete mode 100644 VC++Files/winmysqladmin/images/red22.BMP delete mode 100644 VC++Files/winmysqladmin/images/see.bmp delete mode 100644 VC++Files/winmysqladmin/initsetup.cpp delete mode 100644 VC++Files/winmysqladmin/initsetup.h delete mode 100644 VC++Files/winmysqladmin/main.cpp delete mode 100644 VC++Files/winmysqladmin/main.h delete mode 100644 VC++Files/winmysqladmin/mysql.h delete mode 100644 VC++Files/winmysqladmin/mysql_com.h delete mode 100644 VC++Files/winmysqladmin/mysql_version.h delete mode 100644 VC++Files/winmysqladmin/winmysqladmin.cpp diff --git a/VC++Files/mysql.dsw b/VC++Files/mysql.dsw index 73db9d095cb..25bcab8338b 100644 --- a/VC++Files/mysql.dsw +++ b/VC++Files/mysql.dsw @@ -537,30 +537,6 @@ Package=<4> ############################################################################### -Project: "mysqlshutdown"=".\mysqlshutdown\mysqlshutdown.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mysqlwatch"=".\mysqlwatch\mysqlwatch.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - Project: "mysys"=".\mysys\mysys.dsp" - Package Owner=<4> Package=<5> diff --git a/VC++Files/mysql_ia64.dsw b/VC++Files/mysql_ia64.dsw index dd86d498afe..3b588deee61 100644 --- a/VC++Files/mysql_ia64.dsw +++ b/VC++Files/mysql_ia64.dsw @@ -640,30 +640,6 @@ Package=<4> ############################################################################### -Project: "mysqlshutdown"=".\mysqlshutdown\mysqlshutdown_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "mysqlwatch"=".\mysqlwatch\mysqlwatch_ia64.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - Project: "pack_isam"=".\pack_isam\pack_isam_ia64.dsp" - Package Owner=<4> Package=<5> diff --git a/VC++Files/mysqlshutdown/myshutdown.dsp b/VC++Files/mysqlshutdown/myshutdown.dsp deleted file mode 100644 index 0119df3cd59..00000000000 --- a/VC++Files/mysqlshutdown/myshutdown.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myshutdown" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=myshutdown - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myshutdown.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myshutdown.mak" CFG="myshutdown - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myshutdown - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "myshutdown - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myshutdown - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 - -!ELSEIF "$(CFG)" == "myshutdown - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "myshutdown - Win32 Release" -# Name "myshutdown - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlshutdown/myshutdown_ia64.dsp b/VC++Files/mysqlshutdown/myshutdown_ia64.dsp deleted file mode 100644 index 1cee7987d5e..00000000000 --- a/VC++Files/mysqlshutdown/myshutdown_ia64.dsp +++ /dev/null @@ -1,101 +0,0 @@ -# Microsoft Developer Studio Project File - Name="myshutdown" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=myshutdown - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "myshutdown.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "myshutdown.mak" CFG="myshutdown - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "myshutdown - WinIA64 Release" (based on "Win32 (x86) Application") -!MESSAGE "myshutdown - WinIA64 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "myshutdown - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /D"WIN64" /D"NDEBUG" /D"_WINDOWS" /D"_MBCS" /YX /FD /c /O2 /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:IA64 /incremental:no - -!ELSEIF "$(CFG)" == "myshutdown - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN64" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /D"WIN64" /D"_DEBUG" /D"_WINDOWS" /D"_MBCS" /YX /FD /GZ /c /Od /G2 /EHsc /D"_IA64_" /Zi /D"WIN64" /D"WIN32" /D"_AFX_NO_DAO_SUPPORT" /Wp64 /Zm600 -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:IA64 /incremental:no - -!ENDIF - -# Begin Target - -# Name "myshutdown - WinIA64 Release" -# Name "myshutdown - WinIA64 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlshutdown/mysql.ico b/VC++Files/mysqlshutdown/mysql.ico deleted file mode 100644 index 1fe0b7115bbe95b1108cd2ef025f539cad262181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmZvUD-Hrd5JcZ5m~pGnNG`<*&;-dE{Mfn8Bxu&55QK0D6ltnvMWz)B3Y@jseC!89!*R!Xf^>Or(1!kHj<%hW7GDWsB>AX214Q+0Zs``j1a z(@j@PPTpHIC8_LJ_1=$lliIOY^&;L8mot10@Dd)vQ+0fVtLJb(3VXP9%sZG*+7-U9 Cr%L_+ diff --git a/VC++Files/mysqlshutdown/mysqlshutdown.c b/VC++Files/mysqlshutdown/mysqlshutdown.c deleted file mode 100644 index ccaf4a00eda..00000000000 --- a/VC++Files/mysqlshutdown/mysqlshutdown.c +++ /dev/null @@ -1,198 +0,0 @@ -/**************************************************************************** - MySqlShutdown - shutdown MySQL on system shutdown (Win95/98) - ---------------------------------------------------------------------------- - Revision History : - Version Author Date Description - 001.00 Irena 21-12-99 -*****************************************************************************/ -#include - -//----------------------------------------------------------------------- -// Local data -//----------------------------------------------------------------------- -static char szAppName[] = "MySqlShutdown"; -static HINSTANCE hInstance; - -#define MYWM_NOTIFYICON (WM_APP+100) - -//----------------------------------------------------------------------- -// Exported functions -//----------------------------------------------------------------------- -LRESULT CALLBACK MainWindowProc (HWND, UINT, WPARAM, LPARAM); - -//----------------------------------------------------------------------- -// Local functions -//----------------------------------------------------------------------- -static BOOL InitAppClass (HINSTANCE hInstance); - -BOOL TrayMessageAdd(HWND hWnd, DWORD dwMessage) -{ - BOOL res; - HICON hIcon =LoadIcon (hInstance, "MySql"); - char *szTip="MySql Shutdown"; - NOTIFYICONDATA tnd; - - tnd.cbSize = sizeof(NOTIFYICONDATA); - tnd.hWnd = hWnd; - tnd.uID = 101; - - tnd.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP; - tnd.uCallbackMessage = MYWM_NOTIFYICON; - tnd.hIcon = hIcon; - strcpy(tnd.szTip, szTip); - res = Shell_NotifyIcon(dwMessage, &tnd); - - if (hIcon) DestroyIcon(hIcon); - - return res; -} - -//----------------------------------------------------------------------- -// Name: WinMain -// Purpose: Main application entry point -//----------------------------------------------------------------------- - -int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) -{ HWND hWnd; - MSG Msg; - - hInstance=hInst; - // Register application class if needed - if (InitAppClass (hInstance) == FALSE) return (0); - - - hWnd = CreateWindow (szAppName, "MySql", - WS_OVERLAPPEDWINDOW|WS_MINIMIZE, - 0, 0, - GetSystemMetrics(SM_CXSCREEN)/4, - GetSystemMetrics(SM_CYSCREEN)/4, - 0, 0, hInstance, NULL); - - if(!hWnd) - { - return (0); - } - ShowWindow (hWnd, SW_HIDE); - UpdateWindow (hWnd); - while (GetMessage (&Msg, 0, 0, 0)) - { TranslateMessage (&Msg); - DispatchMessage (&Msg); - } - return ((int) (Msg.wParam)); -} - -//----------------------------------------------------------------------- -// Name: InitAppClass -// Purpose: Register the main application window class -//----------------------------------------------------------------------- -static BOOL InitAppClass (HINSTANCE hInstance) -{ - WNDCLASS cls; - - if (GetClassInfo (hInstance, szAppName, &cls) == 0) - { - cls.style = CS_HREDRAW | CS_VREDRAW ;; - cls.lpfnWndProc = (WNDPROC) MainWindowProc; - cls.cbClsExtra = 0; - cls.cbWndExtra = sizeof(HWND); - cls.hInstance = hInstance; - cls.hIcon = LoadIcon (hInstance, "MySql"); - cls.hCursor = LoadCursor (NULL, IDC_ARROW); - cls.hbrBackground = GetStockObject (WHITE_BRUSH) ; - cls.lpszMenuName = 0; //szAppName; - cls.lpszClassName = szAppName; - return RegisterClass (&cls); - } - return (TRUE); -} -//----------------------------------------------------------------------- -// Name: MainWindowProc -// Purpose: Window procedure for main application window. -//----------------------------------------------------------------------- -LRESULT CALLBACK MainWindowProc (HWND hWnd, UINT Msg,WPARAM wParam, LPARAM lParam) -{ - static RECT rect ; - HDC hdc ; - PAINTSTRUCT ps ; - static BOOL bShutdown=FALSE; - - switch (Msg) - { - case WM_CREATE: - TrayMessageAdd(hWnd, NIM_ADD); - return TRUE; -/*************** - case WM_SYSCOMMAND: - if(wParam==SC_CLOSE) - { HANDLE hEventShutdown; - - bShutdown=TRUE; - InvalidateRect(hWnd,NULL,TRUE); - ShowWindow (hWnd, SW_NORMAL); - UpdateWindow(hWnd); - hEventShutdown=OpenEvent(EVENT_MODIFY_STATE, 0, "MySqlShutdown"); - if(hEventShutdown) - { - SetEvent(hEventShutdown); - CloseHandle(hEventShutdown); - Sleep(1000); - MessageBox(hWnd,"Shutdown", "MySql", MB_OK); - } - TrayMessageAdd(hWnd, NIM_DELETE); - } - break; -**************/ - case WM_DESTROY: - TrayMessageAdd(hWnd, NIM_DELETE); - PostQuitMessage (0); - return 0; - case WM_SIZE: - GetClientRect (hWnd, &rect) ; - return 0 ; - - case WM_PAINT: - hdc = BeginPaint (hWnd, &ps) ; - if(bShutdown) - DrawText (hdc, "MySql shutdown in progress...", - -1, &rect, DT_WORDBREAK) ; - EndPaint (hWnd, &ps) ; - return 0 ; - case WM_QUERYENDSESSION: //Shutdown MySql - { HANDLE hEventShutdown; - - bShutdown=TRUE; - InvalidateRect(hWnd,NULL,TRUE); - ShowWindow (hWnd, SW_NORMAL); - UpdateWindow(hWnd); - hEventShutdown=OpenEvent(EVENT_MODIFY_STATE, 0, "MySqlShutdown"); - if(hEventShutdown) - { - SetEvent(hEventShutdown); - CloseHandle(hEventShutdown); - Sleep(1000); - MessageBox(hWnd,"Shutdown", "MySql", MB_OK); - } - } - return 1; - - case MYWM_NOTIFYICON: - switch (lParam) - { - case WM_LBUTTONDOWN: - case WM_RBUTTONDOWN: - ShowWindow(hWnd, SW_SHOWNORMAL); - SetForegroundWindow(hWnd); // make us come to the front - break; - default: - break; - } - break; - - } - return DefWindowProc (hWnd, Msg, wParam, lParam); -} - - -// ----------------------- The end ------------------------------------------ - - diff --git a/VC++Files/mysqlshutdown/mysqlshutdown.dsp b/VC++Files/mysqlshutdown/mysqlshutdown.dsp deleted file mode 100644 index b7802240d42..00000000000 --- a/VC++Files/mysqlshutdown/mysqlshutdown.dsp +++ /dev/null @@ -1,119 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlshutdown" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=mysqlshutdown - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlshutdown.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlshutdown.mak" CFG="mysqlshutdown - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlshutdown - Win32 Release" (based on "Win32 (x86) Application") -!MESSAGE "mysqlshutdown - Win32 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlshutdown - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /W3 /O2 /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /FD /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /out:"../client_release/mysqlshutdown.exe" - -!ELSEIF "$(CFG)" == "mysqlshutdown - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlshutdown___Win32_Debug" -# PROP BASE Intermediate_Dir "mysqlshutdown___Win32_Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /W3 /Z7 /Od /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c -# SUBTRACT CPP /Fr /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /out:"../client_release/mysqlshutdown.exe" -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /out:"../client_debug/mysqlshutdown.exe" - -!ENDIF - -# Begin Target - -# Name "mysqlshutdown - Win32 Release" -# Name "mysqlshutdown - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\mysqlshutdown.c -# End Source File -# Begin Source File - -SOURCE=.\mysqlshutdown.rc -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\mysql.ico -# End Source File -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlshutdown/mysqlshutdown.rc b/VC++Files/mysqlshutdown/mysqlshutdown.rc deleted file mode 100644 index 6837f863a81..00000000000 --- a/VC++Files/mysqlshutdown/mysqlshutdown.rc +++ /dev/null @@ -1,2 +0,0 @@ -MySql ICON DISCARDABLE "MYSQL.ICO" - diff --git a/VC++Files/mysqlshutdown/mysqlshutdown_ia64.dsp b/VC++Files/mysqlshutdown/mysqlshutdown_ia64.dsp deleted file mode 100644 index 2549606bf60..00000000000 --- a/VC++Files/mysqlshutdown/mysqlshutdown_ia64.dsp +++ /dev/null @@ -1,119 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlshutdown" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=mysqlshutdown - WinIA64 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlshutdown_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlshutdown_ia64.mak" CFG="mysqlshutdown - WinIA64 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlshutdown - WinIA64 Release" (based on "Win32 (x86) Application") -!MESSAGE "mysqlshutdown - WinIA64 Debug" (based on "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mysqlshutdown - WinIA64 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /WX /Fr /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:windows /out:"../client_release/mysqlshutdown.exe" /machine:IA64 - -!ELSEIF "$(CFG)" == "mysqlshutdown - WinIA64 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "mysqlshutdown___Win64_Debug" -# PROP BASE Intermediate_Dir "mysqlshutdown___Win64_Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /G6 /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /nologo /W3 /Zi /Od /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# SUBTRACT CPP /Fr /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win64 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /out:"../client_release/mysqlshutdown.exe" /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:windows /out:"../client_debug/mysqlshutdown.exe" /machine:IA64 - -!ENDIF - -# Begin Target - -# Name "mysqlshutdown - WinIA64 Release" -# Name "mysqlshutdown - WinIA64 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\mysqlshutdown.c -# End Source File -# Begin Source File - -SOURCE=.\mysqlshutdown.rc -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\mysql.ico -# End Source File -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlwatch/mysqlwatch.c b/VC++Files/mysqlwatch/mysqlwatch.c deleted file mode 100644 index 2a1f62b4394..00000000000 --- a/VC++Files/mysqlwatch/mysqlwatch.c +++ /dev/null @@ -1,745 +0,0 @@ -/**************************************************************************** - MySqlWatch - WinNT service program MySQL - - Re-start MySql server in case of failure -*****************************************************************************/ -#include -#include -#include -#include -#include - - -// name of the executable -#define SZAPPNAME "mysqlwatch" -// internal name of the service -#define SZSERVICENAME "MySqlWatch" -// displayed name of the service -#define SZSERVICEDISPLAYNAME "MySqlWatch" -// list of service dependencies - "dep1\0dep2\0\0" -#define SZDEPENDENCIES "" - - - -VOID ServiceStart(DWORD dwArgc, LPTSTR *lpszArgv); -VOID ServiceStop(void); -BOOL ReportStatusToSCMgr(DWORD dwCurrentState, DWORD dwWin32ExitCode, DWORD dwWaitHint); -void AddToMessageLog(LPTSTR lpszMsg); - -// internal variables -SERVICE_STATUS ssStatus; // current status of the service -SERVICE_STATUS_HANDLE sshStatusHandle; -DWORD dwErr = 0; -BOOL bDebug = FALSE; -TCHAR szErr[256]; - -// internal function prototypes -void WINAPI service_ctrl(DWORD dwCtrlCode); -void WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv); -void CmdInstallService(void); -void CmdRemoveService(void); -void CmdDebugService(int argc, char **argv); -BOOL WINAPI ControlHandler ( DWORD dwCtrlType ); -LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize ); - -// -// FUNCTION: main -// -// PURPOSE: entrypoint for service -// -// PARAMETERS: -// argc - number of command line arguments -// argv - array of command line arguments -// -// RETURN VALUE: -// none -// -// COMMENTS: -// main() either performs the command line task, or -// call StartServiceCtrlDispatcher to register the -// main service thread. When the this call returns, -// the service has stopped, so exit. -// -void main(int argc, char **argv) -{ - SERVICE_TABLE_ENTRY dispatchTable[] = - { - { TEXT(SZSERVICENAME), (LPSERVICE_MAIN_FUNCTION)service_main }, - { NULL, NULL } - }; - - if ( (argc > 1) && - ((*argv[1] == '-') || (*argv[1] == '/')) ) - { - if ( stricmp( "install", argv[1]+1 ) == 0 ) - { - CmdInstallService(); - } - else if ( stricmp( "remove", argv[1]+1 ) == 0 ) - { - CmdRemoveService(); - } - else if ( stricmp( "debug", argv[1]+1 ) == 0 ) - { - bDebug = TRUE; - CmdDebugService(argc, argv); - } - else - { - goto dispatch; - } - exit(0); - } - - // if it doesn't match any of the above parameters - // the service control manager may be starting the service - // so we must call StartServiceCtrlDispatcher - dispatch: - // this is just to be friendly - printf( "%s -install to install the service\n", SZAPPNAME ); - printf( "%s -remove to remove the service\n", SZAPPNAME ); - printf( "%s -debug to run as a console app for debugging\n", SZAPPNAME ); - printf( "\nStartServiceCtrlDispatcher being called.\n" ); - printf( "This may take several seconds. Please wait.\n" ); - - if (!StartServiceCtrlDispatcher(dispatchTable)) - AddToMessageLog(TEXT("StartServiceCtrlDispatcher failed.")); -} - - - -// -// FUNCTION: service_main -// -// PURPOSE: To perform actual initialization of the service -// -// PARAMETERS: -// dwArgc - number of command line arguments -// lpszArgv - array of command line arguments -// -// RETURN VALUE: -// none -// -// COMMENTS: -// This routine performs the service initialization and then calls -// the user defined ServiceStart() routine to perform majority -// of the work. -// -void WINAPI service_main(DWORD dwArgc, LPTSTR *lpszArgv) -{ - - // register our service control handler: - // - sshStatusHandle = RegisterServiceCtrlHandler( TEXT(SZSERVICENAME), service_ctrl); - - if (!sshStatusHandle) - goto cleanup; - - // SERVICE_STATUS members that don't change in example - // - ssStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; - ssStatus.dwServiceSpecificExitCode = 0; - - - // report the status to the service control manager. - // - if (!ReportStatusToSCMgr( - SERVICE_START_PENDING, // service state - NO_ERROR, // exit code - 3000)) // wait hint - goto cleanup; - - - ServiceStart( dwArgc, lpszArgv ); - -cleanup: - - // try to report the stopped status to the service control manager. - // - if (sshStatusHandle) - ReportStatusToSCMgr( - SERVICE_STOPPED, - dwErr, - 0); - - return; -} - - - -// -// FUNCTION: service_ctrl -// -// PURPOSE: This function is called by the SCM whenever -// ControlService() is called on this service. -// -// PARAMETERS: -// dwCtrlCode - type of control requested -// -// RETURN VALUE: -// none -// -// COMMENTS: -// -void WINAPI service_ctrl(DWORD dwCtrlCode) -{ - // Handle the requested control code. - // - switch(dwCtrlCode) - { - // Stop the service. - // - case SERVICE_CONTROL_STOP: - ssStatus.dwCurrentState = SERVICE_STOP_PENDING; - ServiceStop(); - break; - - // Update the service status. - // - case SERVICE_CONTROL_INTERROGATE: - break; - - // invalid control code - // - default: - break; - - } - - ReportStatusToSCMgr(ssStatus.dwCurrentState, NO_ERROR, 0); - -} - - - -// -// FUNCTION: ReportStatusToSCMgr() -// -// PURPOSE: Sets the current status of the service and -// reports it to the Service Control Manager -// -// PARAMETERS: -// dwCurrentState - the state of the service -// dwWin32ExitCode - error code to report -// dwWaitHint - worst case estimate to next checkpoint -// -// RETURN VALUE: -// TRUE - success -// FALSE - failure -// -// COMMENTS: -// -BOOL ReportStatusToSCMgr(DWORD dwCurrentState, - DWORD dwWin32ExitCode, - DWORD dwWaitHint) -{ - static DWORD dwCheckPoint = 1; - BOOL fResult = TRUE; - - - if ( !bDebug ) // when debugging we don't report to the SCM - { - if (dwCurrentState == SERVICE_START_PENDING) - ssStatus.dwControlsAccepted = 0; - else - ssStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; - - ssStatus.dwCurrentState = dwCurrentState; - ssStatus.dwWin32ExitCode = dwWin32ExitCode; - ssStatus.dwWaitHint = dwWaitHint; - - if ( ( dwCurrentState == SERVICE_RUNNING ) || - ( dwCurrentState == SERVICE_STOPPED ) ) - ssStatus.dwCheckPoint = 0; - else - ssStatus.dwCheckPoint = dwCheckPoint++; - - - // Report the status of the service to the service control manager. - // - if (!(fResult = SetServiceStatus( sshStatusHandle, &ssStatus))) { - AddToMessageLog(TEXT("SetServiceStatus")); - } - } - return fResult; -} - - - -// -// FUNCTION: AddToMessageLog(LPTSTR lpszMsg) -// -// PURPOSE: Allows any thread to log an error message -// -// PARAMETERS: -// lpszMsg - text for message -// -// RETURN VALUE: -// none -// -// COMMENTS: -// -void AddToMessageLog(LPTSTR lpszMsg) -{ - TCHAR szMsg[256]; - HANDLE hEventSource; - LPTSTR lpszStrings[2]; - - - if ( !bDebug ) - { - dwErr = GetLastError(); - - // Use event logging to log the error. - // - hEventSource = RegisterEventSource(NULL, TEXT(SZSERVICENAME)); - - _stprintf(szMsg, TEXT("%s error: %d"), TEXT(SZSERVICENAME), dwErr); - lpszStrings[0] = szMsg; - lpszStrings[1] = lpszMsg; - - if (hEventSource != NULL) { - ReportEvent(hEventSource, // handle of event source - EVENTLOG_ERROR_TYPE, // event type - 0, // event category - 0, // event ID - NULL, // current user's SID - 2, // strings in lpszStrings - 0, // no bytes of raw data - lpszStrings, // array of error strings - NULL); // no raw data - - DeregisterEventSource(hEventSource); - } - } -} - - - - -/////////////////////////////////////////////////////////////////// -// -// The following code handles service installation and removal -// - - -// -// FUNCTION: CmdInstallService() -// -// PURPOSE: Installs the service -// -// PARAMETERS: -// none -// -// RETURN VALUE: -// none -// -// COMMENTS: -// -void CmdInstallService() -{ - SC_HANDLE schService; - SC_HANDLE schSCManager; - - TCHAR szPath[512]; - - if ( GetModuleFileName( NULL, szPath, 512 ) == 0 ) - { - _tprintf(TEXT("Unable to install %s - %s\n"), TEXT(SZSERVICEDISPLAYNAME), GetLastErrorText(szErr, 256)); - return; - } - - schSCManager = OpenSCManager( - NULL, // machine (NULL == local) - NULL, // database (NULL == default) - SC_MANAGER_ALL_ACCESS // access required - ); - if ( schSCManager ) - { - schService = CreateService( - schSCManager, // SCManager database - TEXT(SZSERVICENAME), // name of service - TEXT(SZSERVICEDISPLAYNAME), // name to display - SERVICE_ALL_ACCESS, // desired access - SERVICE_WIN32_OWN_PROCESS, // service type - SERVICE_DEMAND_START, // start type - SERVICE_ERROR_NORMAL, // error control type - szPath, // service's binary - NULL, // no load ordering group - NULL, // no tag identifier - TEXT(SZDEPENDENCIES), // dependencies - NULL, // LocalSystem account - NULL); // no password - - if ( schService ) - { - _tprintf(TEXT("%s installed.\n"), TEXT(SZSERVICEDISPLAYNAME) ); - CloseServiceHandle(schService); - } - else - { - _tprintf(TEXT("CreateService failed - %s\n"), GetLastErrorText(szErr, 256)); - } - - CloseServiceHandle(schSCManager); - } - else - _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256)); -} - - - -// -// FUNCTION: CmdRemoveService() -// -// PURPOSE: Stops and removes the service -// -// PARAMETERS: -// none -// -// RETURN VALUE: -// none -// -// COMMENTS: -// -void CmdRemoveService() -{ - SC_HANDLE schService; - SC_HANDLE schSCManager; - - schSCManager = OpenSCManager( - NULL, // machine (NULL == local) - NULL, // database (NULL == default) - SC_MANAGER_ALL_ACCESS // access required - ); - if ( schSCManager ) - { - schService = OpenService(schSCManager, TEXT(SZSERVICENAME), SERVICE_ALL_ACCESS); - - if (schService) - { - // try to stop the service - if ( ControlService( schService, SERVICE_CONTROL_STOP, &ssStatus ) ) - { - _tprintf(TEXT("Stopping %s."), TEXT(SZSERVICEDISPLAYNAME)); - Sleep( 1000 ); - - while( QueryServiceStatus( schService, &ssStatus ) ) - { - if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING ) - { - _tprintf(TEXT(".")); - Sleep( 1000 ); - } - else - break; - } - - if ( ssStatus.dwCurrentState == SERVICE_STOPPED ) - _tprintf(TEXT("\n%s stopped.\n"), TEXT(SZSERVICEDISPLAYNAME) ); - else - _tprintf(TEXT("\n%s failed to stop.\n"), TEXT(SZSERVICEDISPLAYNAME) ); - - } - - // now remove the service - if( DeleteService(schService) ) - _tprintf(TEXT("%s removed.\n"), TEXT(SZSERVICEDISPLAYNAME) ); - else - _tprintf(TEXT("DeleteService failed - %s\n"), GetLastErrorText(szErr,256)); - - - CloseServiceHandle(schService); - } - else - _tprintf(TEXT("OpenService failed - %s\n"), GetLastErrorText(szErr,256)); - - CloseServiceHandle(schSCManager); - } - else - _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256)); -} - - - - - -// -// FUNCTION: CmdRestartService() -// -// PURPOSE: Stops and removes the service -// -// PARAMETERS: -// none -// -// RETURN VALUE: -// none -// -// COMMENTS: -// -void CmdRestartService(char *szServiceName) -{ - SC_HANDLE schService; - SC_HANDLE schSCManager; - - schSCManager = OpenSCManager( - NULL, // machine (NULL == local) - NULL, // database (NULL == default) - SC_MANAGER_ALL_ACCESS // access required - ); - if ( schSCManager ) - { - schService = OpenService(schSCManager, TEXT(szServiceName), SERVICE_ALL_ACCESS); - if (schService) - { - if(! ControlService( schService, SERVICE_CONTROL_INTERROGATE, &ssStatus ) ) - //if(QueryServiceStatus( schService, &ssStatus )==0) - { - if(GetLastError()==ERROR_SERVICE_NOT_ACTIVE) - { - - //AddToMessageLog(TEXT("Start service...")); - StartService( schService, 0,NULL); - } - else - { ; - //AddToMessageLog(TEXT("QueryService...")); - //AddToMessageLog(TEXT(GetLastErrorText(szErr,256))); - } - } - CloseServiceHandle(schService); - } - else - { _tprintf(TEXT("OpenService failed - %s\n"), GetLastErrorText(szErr,256)); - AddToMessageLog(TEXT("OpenService...")); - AddToMessageLog(TEXT(GetLastErrorText(szErr,256))); - - } - CloseServiceHandle(schSCManager); - } - else - { _tprintf(TEXT("OpenSCManager failed - %s\n"), GetLastErrorText(szErr,256)); - AddToMessageLog(TEXT("OpenSCMManager..")); - - } -} - - - - -/////////////////////////////////////////////////////////////////// -// -// The following code is for running the service as a console app -// - - -// -// FUNCTION: CmdDebugService(int argc, char ** argv) -// -// PURPOSE: Runs the service as a console application -// -// PARAMETERS: -// argc - number of command line arguments -// argv - array of command line arguments -// -// RETURN VALUE: -// none -// -// COMMENTS: -// -void CmdDebugService(int argc, char ** argv) -{ - DWORD dwArgc; - LPTSTR *lpszArgv; - -#ifdef UNICODE - lpszArgv = CommandLineToArgvW(GetCommandLineW(), &(dwArgc) ); -#else - dwArgc = (DWORD) argc; - lpszArgv = argv; -#endif - - _tprintf(TEXT("Debugging %s.\n"), TEXT(SZSERVICEDISPLAYNAME)); - - SetConsoleCtrlHandler( ControlHandler, TRUE ); - - ServiceStart( dwArgc, lpszArgv ); -} - - -// -// FUNCTION: ControlHandler ( DWORD dwCtrlType ) -// -// PURPOSE: Handled console control events -// -// PARAMETERS: -// dwCtrlType - type of control event -// -// RETURN VALUE: -// True - handled -// False - unhandled -// -// COMMENTS: -// -BOOL WINAPI ControlHandler ( DWORD dwCtrlType ) -{ - switch( dwCtrlType ) - { - case CTRL_BREAK_EVENT: // use Ctrl+C or Ctrl+Break to simulate - case CTRL_C_EVENT: // SERVICE_CONTROL_STOP in debug mode - _tprintf(TEXT("Stopping %s.\n"), TEXT(SZSERVICEDISPLAYNAME)); - ServiceStop(); - return TRUE; - break; - - } - return FALSE; -} - -// -// FUNCTION: GetLastErrorText -// -// PURPOSE: copies error message text to string -// -// PARAMETERS: -// lpszBuf - destination buffer -// dwSize - size of buffer -// -// RETURN VALUE: -// destination buffer -// -// COMMENTS: -// -LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize ) -{ - DWORD dwRet; - LPTSTR lpszTemp = NULL; - - dwRet = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_ARGUMENT_ARRAY, - NULL, - GetLastError(), - LANG_NEUTRAL, - (LPTSTR)&lpszTemp, - 0, - NULL ); - - // supplied buffer is not long enough - if ( !dwRet || ( (long)dwSize < (long)dwRet+14 ) ) - lpszBuf[0] = TEXT('\0'); - else - { - lpszTemp[lstrlen(lpszTemp)-2] = TEXT('\0'); //remove cr and newline character - _stprintf( lpszBuf, TEXT("%s (0x%x)"), lpszTemp, GetLastError() ); - } - - if ( lpszTemp ) - LocalFree((HLOCAL) lpszTemp ); - - return lpszBuf; -} - -//------------------------------------------------- -// this event is signalled when the -// service should end -//------------------------------------------------- -HANDLE hServerStopEvent = NULL; - - -//------------------------------------------------- -// FUNCTION: ServiceStart -// -// PURPOSE: Actual code of the service -// that does the work. -//------------------------------------------------- -void ServiceStart (DWORD dwArgc, LPTSTR *lpszArgv) -{ - DWORD dwWait,dwTimeout=1000*60*1; - - if (!ReportStatusToSCMgr( - SERVICE_START_PENDING, // service state - NO_ERROR, // exit code - 3000)) // wait hint - goto cleanup; - - // create the event object. The control handler function signals - // this event when it receives the "stop" control code. - // - hServerStopEvent = CreateEvent( - NULL, // no security attributes - TRUE, // manual reset event - FALSE, // not-signalled - NULL); // no name - - if ( hServerStopEvent == NULL) goto cleanup; - - - // report the status to the service control manager. - // - if (!ReportStatusToSCMgr( - SERVICE_START_PENDING, // service state - NO_ERROR, // exit code - 3000)) // wait hint - goto cleanup; - - - - // report the status to the service control manager. - // - if (!ReportStatusToSCMgr( - SERVICE_START_PENDING, // service state - NO_ERROR, // exit code - 3000)) // wait hint - goto cleanup; - - - - // report the status to the service control manager. - // - if (!ReportStatusToSCMgr( - SERVICE_RUNNING, // service state - NO_ERROR, // exit code - 0)) // wait hint - goto cleanup; - - // - // End of initialization - // Service is now running, perform work until shutdown - // - - while ( 1 ) - { - - dwWait = WaitForSingleObject( hServerStopEvent, dwTimeout); - if(dwWait==WAIT_FAILED) - { - AddToMessageLog(TEXT("Error in WaitForSingleObject")); - break; - } - else if(dwWait==WAIT_TIMEOUT) - { - CmdRestartService("MySql"); - } - else - { break; //shutdown - } - - } - - cleanup: - - if (hServerStopEvent) - CloseHandle(hServerStopEvent); - -} - - -//------------------------------------------------- -// FUNCTION: ServiceStop -// -// PURPOSE: Stops the service -//------------------------------------------------- -void ServiceStop() -{ - if ( hServerStopEvent ) - SetEvent(hServerStopEvent); -} -//-the end ---------------------------------------- diff --git a/VC++Files/mysqlwatch/mysqlwatch.dsp b/VC++Files/mysqlwatch/mysqlwatch.dsp deleted file mode 100644 index ee683c60351..00000000000 --- a/VC++Files/mysqlwatch/mysqlwatch.dsp +++ /dev/null @@ -1,70 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlwatch" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlwatch - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlwatch.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlwatch.mak" CFG="mysqlwatch - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlwatch - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=xicl6.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /W3 /O2 /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilink6.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../client_release/mysqlwatch.exe" -# Begin Target - -# Name "mysqlwatch - Win32 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\mysqlwatch.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/mysqlwatch/mysqlwatch_ia64.dsp b/VC++Files/mysqlwatch/mysqlwatch_ia64.dsp deleted file mode 100644 index eb17b6991f8..00000000000 --- a/VC++Files/mysqlwatch/mysqlwatch_ia64.dsp +++ /dev/null @@ -1,71 +0,0 @@ -# Microsoft Developer Studio Project File - Name="mysqlwatch" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=mysqlwatch - WinIA64 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mysqlwatch_ia64.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mysqlwatch_ia64.mak" CFG="mysqlwatch - WinIA64 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mysqlwatch - WinIA64 Release" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN64" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /Zi /O2 /D "_WINDOWS" /D "_MBCS" /D "NDEBUG" /D "_IA64_" /D "WIN64" /D "WIN32" /D "_AFX_NO_DAO_SUPPORT" /FD /G2 /EHsc /Wp64 /Zm600 /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:IA64 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib bufferoverflowU.lib /nologo /subsystem:console /out:"../client_release/mysqlwatch.exe" /machine:IA64 -# Begin Target - -# Name "mysqlwatch - WinIA64 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\mysqlwatch.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/VC++Files/winmysqladmin/db.cpp b/VC++Files/winmysqladmin/db.cpp deleted file mode 100644 index 6e796856a7e..00000000000 --- a/VC++Files/winmysqladmin/db.cpp +++ /dev/null @@ -1,80 +0,0 @@ -//--------------------------------------------------------------------------- -#include -#pragma hdrstop - -#include "db.h" -#include "main.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -Tdbfrm *dbfrm; -//--------------------------------------------------------------------------- -__fastcall Tdbfrm::Tdbfrm(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -void __fastcall Tdbfrm::SpeedButton2Click(TObject *Sender) -{ - Close(); -} -//--------------------------------------------------------------------------- -void __fastcall Tdbfrm::SpeedButton1Click(TObject *Sender) -{ - if (VerDBName()) - { - if (!Form1->CreatingDB()) - { - Form1->OutRefresh(); - Edit1->Text = ""; - Application->MessageBox("The database was created", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - } - } - - - - - -} -//--------------------------------------------------------------------------- -bool __fastcall Tdbfrm::VerDBName() -{ - String temp = Edit1->Text; - if (Edit1->Text.IsEmpty()) - { - Application->MessageBox("The name of the Database is Empty", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - return false; - } - - if (temp.Length() > 64) - { - Application->MessageBox("The name of the Database can't have more than 64 characters ", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - return false; - } - - for (int j = 1; j <= temp.Length(); j++) - { - if (temp[j] == ' ') - { - Application->MessageBox("The name of the Database can't have blank spaces ", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - return false; - } - else if (temp[j] == '/') - { - Application->MessageBox("The name of the Database can't have frontslash (/)", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - return false; - } - else if (temp[j] == '\\') - { - Application->MessageBox("The name of the Database can't have backslash (\\)", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - return false; - } - else if (temp[j] == '.') - { - Application->MessageBox("The name of the Database can't have periods", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - return false; - } - } - return true; -} -//--------------------------------------------------------------------------- diff --git a/VC++Files/winmysqladmin/db.h b/VC++Files/winmysqladmin/db.h deleted file mode 100644 index f7ab87351ea..00000000000 --- a/VC++Files/winmysqladmin/db.h +++ /dev/null @@ -1,32 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef dbH -#define dbH -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class Tdbfrm : public TForm -{ -__published: // IDE-managed Components - TImage *Image1; - TLabel *Label1; - TLabel *Label2; - TEdit *Edit1; - TSpeedButton *SpeedButton1; - TSpeedButton *SpeedButton2; - void __fastcall SpeedButton2Click(TObject *Sender); - void __fastcall SpeedButton1Click(TObject *Sender); -private: // User declarations - bool __fastcall VerDBName(); -public: // User declarations - __fastcall Tdbfrm(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE Tdbfrm *dbfrm; -//--------------------------------------------------------------------------- -#endif diff --git a/VC++Files/winmysqladmin/images/Goahead.ico b/VC++Files/winmysqladmin/images/Goahead.ico deleted file mode 100644 index 8241c90e2a20f50b923ce020a2607f1e90030b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmb_aF%p6>5M0z58)mSwmC|46)AF=DfEm6(X-R3pOx(RofI`v23zy5@Zte&Ks5sj8 z1leN;oEfk5mVT#KIB*66x%U=Gk_o{BXD$(AWE7F?K}uTDIh4}$lXbL3SPOPtEE$Kh zqQIP}7i>F(**P&77M-zr)N4$^H!S(Qp9TJa^)@n=vU(Z(jFP}!B3fZG$ej6fqFfMW#q Z#RIS7mKUAkz`do8YO1zfJM~ge+6yHyON{^k diff --git a/VC++Files/winmysqladmin/images/HELP.ICO b/VC++Files/winmysqladmin/images/HELP.ICO deleted file mode 100644 index d0cd6d68cce7ad691f9cb56393dd3c3b495cd7d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc(d!41MN3`JeU0Gv4Y$QX>)(KAs%f7RobL#he=Jq@r zQr~lS5I?lwh2**W))3!E{Ef4J)c{eP#}>4423D?s1C=a!9JmD0pnSa$1xn!Sg>hdX Q@2kI0sTf$r`aAp;Z$@n8>i_@% diff --git a/VC++Files/winmysqladmin/images/INFO.ICO b/VC++Files/winmysqladmin/images/INFO.ICO deleted file mode 100644 index e3afa8cf52c556f048918aa5a290c2fc2b9e730e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmcgqyN&`e44gfXXjX!XmM!lu;Lk3f<`0O(FHllaQmimDPORmm6LjaSGZ}mAJhZ^T zF-<$ju3x~O_)VYaC;EUj=XX{Beki2@XD(r8L?t{vxNAk{P)O6CR%uIO6s^^IWDK?h zYCW@)``k*HP97B$CYOL|8s!2CM&Sz&nw$k6`1m_-|H9)wv9ZPZ7M|yAr_v+ls^N0q zUf%A{2D1WsFrl7PNE(99l@3AYK_zJQ*0=&HPs(Wa>Vg;W+t$4d{s4Yv;CKfPH(+}K eHU_NZg}-1rK3M96*6T0qrJm}oJ+znh)ZS0XHe=BM diff --git a/VC++Files/winmysqladmin/images/Info.bmp b/VC++Files/winmysqladmin/images/Info.bmp deleted file mode 100644 index 58f729fb1fd1460f8edc18164815bee6b77b58fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmchTJr2S!424|^TLwl(M$W*p)>J3y_APoPvTxU9n*>8h&uv=JhXZ_pu+Vov(A8*H6Vq49~USx3&BI uvBAOsAB@W9qynv=G1FGi*pLO@ug(mxJrL2@s}-zd80GOiOmZ40d0#&j#!93B diff --git a/VC++Files/winmysqladmin/images/MYINI.ICO b/VC++Files/winmysqladmin/images/MYINI.ICO deleted file mode 100644 index 428ed8e92b022e3cdb815530788da671ca44b14a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmbV~F>b^l5JkU3q|j}uZP#T=OB`TxvmMI~x5!m2rN~us3+IjPI6$#dcHqzO`S6(n zsblp0t31A+q%-vm^xz$IdM4islbABw3Yn$md8WFstW(S4E5PtAPi^E}?L@_j>z~{d za~a$(Y5ka#LkQ_FhFr2Vz#F}34obhffmZi}57GRzb4o~?ymFMZ%YGz9JLH|0GI}NB zSIJ7XOh1LW`~SY}=0qdow|2gXonT!Yve0g W2LgBjCvX8*a08f+z#sVlMf?D!QHp^8 diff --git a/VC++Files/winmysqladmin/images/Myini.bmp b/VC++Files/winmysqladmin/images/Myini.bmp deleted file mode 100644 index e743a1b9b321cf7c6de28f506baf3ab4c9d413fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmbV`F%Ci@5JU&Dp!5iqmL#-RCN?G(-o^Zyl4E!jZicgf$kOTlzsn8}hP~Xk9cpZ> zC+4xI!JeItgOU;8j~Ls+$`(0it^!K^QHpd-ezGNHjg-`mgHswm>Ij$S;Qd+Z$ADz5 z4d3u-R>4y*d>M|C^L7JN_o2Oua#}PO8yc>fBy=oCf{O!pJ!5i(>8CJ)#++v|7yr-O eV$N7F{p#cmvg+I1(0H8tqj?y-&bZ;pyqY)EvqPl- diff --git a/VC++Files/winmysqladmin/images/Noentry.ico b/VC++Files/winmysqladmin/images/Noentry.ico deleted file mode 100644 index 27f2211f56c524448b7cec644eb1b58680fcf6e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmcIiF%H5o47>soVk#3W9r*=3El*(0#8>i^j*J~aLJD_j+=dFZEI4(Xvwe2!2B^52 zW)I1I1srHk)P{PYR@iU{9An?bG02E>z2VLyLI|`9#PlFWov2)LY5Pe$WlY=&dVe)f z4~Gnc*^#pc#uSg~iBN=7izQsrRlwi)Sy`U{z#k2PrT3f0QSvpxA|Xw5iVH#>xK*(E zXU6b9I0TAC=WUu)SI6k8bR}NE`2id|pq944HUMi=$Llz!mM7biYjsppwbQjzFZHCn E0T5dk!2kdN diff --git a/VC++Files/winmysqladmin/images/SETUP.BMP b/VC++Files/winmysqladmin/images/SETUP.BMP deleted file mode 100644 index c5794e5ac002c08a15e69c14b7bad84579791535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86878 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 BW8we+ diff --git a/VC++Files/winmysqladmin/images/Setup 16.bmp b/VC++Files/winmysqladmin/images/Setup 16.bmp deleted file mode 100644 index e17b06155fb278d7705ec06eb6dd882fc150a353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86880 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

~8NNnoWuu)K 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 BW2FE9 diff --git a/VC++Files/winmysqladmin/images/Table.ico b/VC++Files/winmysqladmin/images/Table.ico deleted file mode 100644 index 4469a915b7fac90084a940b1056385f84afb2839..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmb_byH3ME5FCd{(8Yg%E0mrBIw)N8GZaB-xQ-JIzvNGGNqG`TSa*__**zb!qL7G) z_07J5= zb|9i2!ADc7id=Z_ia(A4E0NHn#|i zvfVu9gz@q!ar0D4Xy2Iruose~kYr$)x1N&NKMm1)`O<=k_e@%xc`HiF?~079A7u=L za+7OGjgRsA&Rlly%k$Wf_Sqfd=e^Xo{p6)YjVG7$#oSN#dw|!P(?!4LBK#?&M@8V7 OxFar!^Z!P)czKGHAr0bh(jCilN(l4Np@#KQox&POGM&n&&ktgH&jY=zBM z0@5pi;6l*og`gBH+b5Ky_I-p27szGghz)%Nm%>JuK$L>T>M0{7ftUh`L!@HhU|5|o zh3y1ZC>0s~k%}5L({Z4)r@3##)UrfDLku&H;}f?pdC?L?t#4@4I#BMjdyRs=jI4=E zd;fn=j(5QQadp3+-ESxNY42Wl?s?1GG59a9$pg6Ff%6SGO~Aeay9{jEWautjS)a&D UC%yJ*zxuR(>Z|^mqj{YB2VRrFssI20 diff --git a/VC++Files/winmysqladmin/images/database.ico b/VC++Files/winmysqladmin/images/database.ico deleted file mode 100644 index 9689aa883610764ff753ffbde688c53f44170847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmd5*J8r`;41JDUL_mNdH;AVqV|FdQNw49p+?3-K&{Dude3XpcGa88co@B!Ynj#%K zls3PQqGXWSJ!DT+-CP;@y#2dBx-F8Q2&{jhxGlTE61Dzv46ScEwuTX4-?ZPj1N5 zocFYElZ}Vtd^17PX#8rOLZ=aawPueEP9u1&9yt=3wSnBSpWb4 diff --git a/VC++Files/winmysqladmin/images/find.ico b/VC++Files/winmysqladmin/images/find.ico deleted file mode 100644 index 2e0f96c52f996b34e252db181bafa0de1f9fbd09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmaKoJyOF!429*8iB&K$6&-_1-+>|=B^9R3r0`G~;Ua8Bj=)jk18|7#?1~AUX}mni zo`lRmw0_!^Kk500D8fq9E7E8uMAz6eD248!h^ELy0`_<8h;Y$vH*Cl_QeD?1A^^cI z3PDd0mfq5IHWGh|`_nr4#bVz{UJHZkncLaNh?B zf#+qpt{C&Ob>g9(G3GGe$#LCOmtW$NQF_6^GCCTTjb<1}%c z|BwC06*(}5;l%nNKX)QeBJ#oY5nieqIf(=_27Sk_OL#dl1GA9=jm zEb>@(Wrb9c0+Ypd1l4iWP7u4Le71HVqSu_hwWc8VEvKB$wFaq=g!xiy;2Q23pm&^_ zv#QuNk;evg}_-b7bFodqhJO*EH;2PfaYD~mdAOI>ks$cf7&nGIuX_Y diff --git a/VC++Files/winmysqladmin/images/help.bmp b/VC++Files/winmysqladmin/images/help.bmp deleted file mode 100644 index 76c6a90d2d8bcedc5bd20b82e47c8e3cd9662ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmZ`$!41MN3^a%VU;~~!n1CnGO03ftkBq{HJvu;??tv;#P^sM6aZw}THqM=WcANPA z==WmQ!(Xt@b?xK;w6)`gCK0@nl5g;UG7JNDCKh{TS%|RkFhp*aVUFnMtgt-R$Xrw> zt{NcBncf7m23Hdxq3p*nn_&-5K_T~g6Exi9NLW~Ptei!(%A;P#!syyB>ehVp@&Ebt zZFv-gzU4fDeW=jGg2(A=f&CxxKhE -#pragma hdrstop - -#include "initsetup.h" -#include "main.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TForm2 *Form2; -//--------------------------------------------------------------------------- -__fastcall TForm2::TForm2(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -void __fastcall TForm2::BitBtn1Click(TObject *Sender) -{ -if ((Edit1->Text).IsEmpty() || (Edit2->Text).IsEmpty()) - Application->MessageBox("Fill the User name and Password text boxs ", "Winmysqladmin 1.0", MB_OK |MB_ICONINFORMATION); - else - { - if(Form1->ForceConnection()) - if(Form1->ForceMySQLInit()) - { - Form1->CreateMyIniFile(); - Form1->CreatingShortCut(); - } - Close(); - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm2::BitBtn2Click(TObject *Sender) -{ - Close(); -} -//--------------------------------------------------------------------------- -void __fastcall TForm2::SpeedButton1Click(TObject *Sender) -{ - Application->HelpCommand(HELP_FINDER,0); -} -//--------------------------------------------------------------------------- diff --git a/VC++Files/winmysqladmin/images/killdb.ico b/VC++Files/winmysqladmin/images/killdb.ico deleted file mode 100644 index 9689aa883610764ff753ffbde688c53f44170847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmd5*J8r`;41JDUL_mNdH;AVqV|FdQNw49p+?3-K&{Dude3XpcGa88co@B!Ynj#%K zls3PQqGXWSJ!DT+-CP;@y#2dBx-F8Q2&{jhxGlTE61Dzv46ScEwuTX4-?ZPj1N5 zocFYElZ}Vtd^17PX#8rOLZ=aawPueEP9u1&9yt=3wSnBSpWb4 diff --git a/VC++Files/winmysqladmin/images/logo.ico b/VC++Files/winmysqladmin/images/logo.ico deleted file mode 100644 index 9409cad72b69aae2caa27261e26384eec06d679d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2022 zcmcIldpy=x82_qQUiB)M!mH#m3z0%fZn<<5pzb_j^C*{LXp4&pGEg-|zGMUOsCQePY+U3Nf3+0(AL(5rluy8m6f5Sqy$ApMKH#YoSclnz(Blu^$LxR zjqvvN#>dlzM8WiT@{gTKE&;^X5H6%~ch&`|8$ zxd&_3tU+yUEmBfakd%~!qeqXTtE&sPwzlx~^+iBH0J5{Q(bm?6GiT1=+O=!2u&^K= zmLoAS9vKPsHvr3-@bjc*Ctd}R-&S!0=>Px z#NiF3rKO>;u#nQ8ym;{f`T6(hyb_8(6Z`k?$NBRG*t>Txf`fxe zr>9uCawT$da-gNPj`C1-5PGX6hLdt<|?Ald>`}ZGE-kySujSXr4 zkTg08YwK|0weO59EM4kJdAfn}Fpap)Kx%3#TwPDW#U&5duRp}uvuCksQyH#aErW@P z3C){Hw<^ldd6eT(q-6tc-MWQ>f&$#Uc@w$0nFtFDLw$Wc@#2nc+v0KP&>^~G4Q9>q zrSSo}V?O170-dpicuqxmc{waC?J3uMs7_p9YU)Zk(TN!|;z--$h=@oh{tlq2sflVK z0i#AGQeB?HlP6C|#{@bv7tPJ>c>K7N>N1A-X$0q8RFj+W?AbHYqzD@}tbnR&81ayS z;^JZ)K75(>-U5C7^~7l?wP1)uJ0!)=Ij8jlAJdS4JyrvalKFIp2@`dV;`M_TFYtfo zpfjgpicLfH1e)tCEF2=`Zaqexsb){sb9J?}w47{WuwaCl%+jS6vnF!$*&`LkXo*DH zrCP>DOBTyWOUoF}nxZOVV`a~bP>SJ`l;oL^iS+Hf>a0A4Vl5R-vEbZo#_R&-x{2I2 z=#3MyX_b3_P>>tx&4)6Pw5)2*r-y37LCeR7RRwhH2ZF_%P=)hS=Js zTP^e%yhJD*Ct$KJlBm6zz}SL`Ki1(UdYq4!vR4+!Gx1<~X8lZp|IFkvG9`H5)K67g zNFSy7fkLLVQG$mu@!bCPH1(HdOsFz$QM;aqnFUJl*-T@y$Gi2LgiLmdxq;`g2|-No z#dLD8kzmBYO64|fz8>%Yp>%&xJJZ3mYjbI;5;*Lz7;_G{+F=c%-k#M)koMa}j z9ydyr$+vLbm26Cx1m>}eMhaA9=O6g~(^Jm{sw!F<`c8?<3Y4{{^~2OpG#GEno7Xm- zIKReap0h6JuLsQ=uWR}qmkf#&?;Cd;mi*GQo%74(HRk_BIsfz5de7e9zKp(ix3=ol zCl?+K#Isg?{_vYOGZnX{z8!HyanR9$_|z+(oqoJ|SI+Q=C&zcb7{1PTphMUnW$M3U z^vegG7gI*(5BqT-&iRU`XRrQssCY-@SJ&=*oA+;==klo?tp}4D*Q?(e_8)Mc>1#d} hKV1(V9`^y9%*#*mE#Yk+#tGTC|2^FQFZ%!Ye**{&x=a87 diff --git a/VC++Files/winmysqladmin/images/multitrg.ico b/VC++Files/winmysqladmin/images/multitrg.ico deleted file mode 100644 index 76ffbe29c77156ae50e3d648e74bf7220459ce59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmaKqy=ucS6h?3Af)+zMbxp>O2Catlk-TNBA5EZD&{xRVF=K}i^?X-$yoAcRvd;ba zt|H59$8$Wsna0nH**otK?1+70J9}j|n~6OiGeIKr++NHqvDs2e1gih6R;@4|xiqzL zKA)#`Z5BYr>IhoNw>TzMUhPq`2W!3I@Pxj6gQb+vG+C9bY4C*3d6d(IjHy3}gJ1wC{Q=$+90 NLZ4n8_vhfd{sV;I4oCn1 diff --git a/VC++Files/winmysqladmin/images/mysql-07.bmp b/VC++Files/winmysqladmin/images/mysql-07.bmp deleted file mode 100644 index dcae23b88137e076df1fc6e0894475932ca867d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9618 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 diff --git a/VC++Files/winmysqladmin/images/mysql-17.bmp b/VC++Files/winmysqladmin/images/mysql-17.bmp deleted file mode 100644 index 0291c804006fe21b4a643c42d9a8c537eb0efb78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3806 zcmeH~yK>_;6o$e34TMCK5(!DB2$2>^Q8uL%nUtPX+oX5ta!Z$6x^%gv$}Ls8beYm+ zN>>>_Lf*jnLCM#dWY&}2nG}0wAc7$9orC`zz~f(k`;(E*e%1-8&^tq$qAA4g#aX~IGFUe-JA=~Yi+}zxd+uK`mcXvnb z@9)XO!vn@|Fn5c&x0rhe&JC%mEtnU8U!r|MyYA+0K7As8TwjyFuznYtP0srX`8`{a zE7B($v}=-(TeSPrGjiF_$aTLWzaaLH_;yb+a&z^W+-|;*hl?w6b^eiTFR#eM=9+x| zbOk>@?1utB6nL)!{C{gBWvYz6d33Elt*R>hmSCInc0EngS)NwuHw^fvx=vw5QKxei zPX3Gao)`Db8YYUoR!7bAFnT8^?~-LS(iBC}AJQC~^#`-GCx5y5XYVyViu)K`&+B?t z6vd*LRb5%Ns+3mfdcK&+_-JDYA=0$Wibej4>vH^&wCP|VIgZnL;@pqo2>ntB%oj$} zBKum)B^DT?;gh1M4o!fUV9$epmrR`5giPNeQtxkCkHVCrtIhldp=ou zOs%V`<&CU`DwWb^d3{(xie*-Ud&0Rj6ML>@Q#cHgFid*Ea5$j-A?U9BN_{x%F*aUh zdE>e5x)$IzP&2P8T~5IMt3%+LEL)_qGcggqG~ZNEf07#{!9g4k`!e*QtjV6s;v^n0 z#;nrzkgHU3M`LISZkI4qa-nEbB3{Yu%+)p3WrkGVPm&-^TySD1iGxAh<3Siw2mvmo zO#@BSdLeLZn^F|uOM(J<_J zjV2{U!KUeaxh%2gYL|9!#UuAQUaoq+=IXYTDnP&iw21mi68D*l-zbWMFhc0fiAZZ% z5;$ZAa&)xI5$EGl)(hi+CeX!>g9cG83IVJ< z29x7ek?!Oj&q{Q0@x0c7YpP;+x^K(O$umI@qS&U$Ti`Kdl1jb%R?^OL+%R>i@9u&L zEBD;BklcOVp7rIn?)xBezmpq3ZZx!65Dz0yR&)q>GGJkp9Tj5Uj=j-rjY&Q`s=Hek z8O&yBD(eiIzu>yEoL(5^)OIKfhy9+n@F4OdC!oY&EN8P8v~` zBAw!ZH1PZ)Z!eH9x|CZuZ~K7dF=Rd~%VwP|P!I+t;x*5f5}QGDS;)=t1ZVuQexblW z8|5KtnMZN#`ivgsxOR#Kb}d)X<9x9&iXtmTEtRp38IzGucR19+zZng1Pq^~x!49&r z%rc?X^X|qQ!%v6RB$k>hb_^Hw{%$Z$Y?zvs&u!0x)V^u@Hhfto^)1`>x^xEp-QBrf zo1ycCGWj_UO(o zWo1RJuCA)JwKcWAzOFVlHq_?krrO%tQrp|xYG-E$@7s9a!TT=yt)t%t`fZ}$7RIk) zt}fQU%~ed>RGpm@muJ>0lSvazK-@)*s=z@R?xN$8@uSo zxi?V1j`~&9(N5NF!jCTMH&DNZ`c>3z;hXg*RcG0$uHezq$eFJv(p-YX@~}cwfbP7hHGnT)~rVt9Y&;1|2+C z@$4cd%XqHf*}=u{6~wB8tBbfTh(tBHCeF7Hyj6e6h&beMp5m5Y=Dr<+d*v+-7sDk@GuN~lpu_1^@IUqpke4$ zLt@YyO-zY@`$i9#S zc%OQ7%{UH~bz3$BZqaD)aCz3k>9feA13K*L6zS!Ql#D*$nUNHP|ht zB?frX@InB9krdjnFFg35gv1NZo4|8{aVC;0UZbgM4aF=2hB{?{viLr7lMtrNdxl)=>xoz*$ZqOr}I^CftcGB6x%86!ym92 zwniPzl!ss0*CwwvB`y*>1Yc6OEL8GLl}N6Q{5^701Dqw5gA%GvrD9ojIV1C?^HwF# z#z6-bV9AL*y}UHWsR0ym!QxUj;(9@TvcL$Bf@BK)(gJENSyTm9Rfsa+xQ-3@$_W9; zSQ6ZtoyKRj1}TvrM7$`?MTXyT*tcx

^&GzQwqNBg|7w6fC#4Bv1 zZLn`u3^6AlZa=I+Q6VvgB1qZil6NIG8O#X-Tpvm)8rVK`b@KXyH{URuNY4Q3$MZ+d za7SYp(^yWjyUJHQ417C-`ZzveS1@@fimqo-k%d0R{~kWqAG;KK_y?U=t=nz=F;sIY z*+2Ifcx(QaFapkPDnhc3%?PB*wr$8CgbE#(OO0MdY_x&ToUjicAAT65bA8C>^Mcm; zR=x2H{ZDgt!7hS7l#A{AKjOxcjms2-tMh1;TOb@7)-1HnD$Bsks|J27m68v|x zzM!V3Mj!q4u^82&!aA0z4iJL#d!_9?xtx=bl zTksg7NbtE;ew+X5_T$^?vc9YDzA^LB`}(Jiu`ka|V@+HP|MBk!UsDKfvFEpV4T1xc z+br3MfiGu0SP)6hwI~^{hu>TOOi_oH(V3}c>#MeY*t|S_b?#iVab;1@JkqnlAE&P@ zjzf((1KYa~R(;>#+mf|G5Dzu7GiKPyBD^2%;~x@v@zAkn%;-BxUDbN-?bBa8oV%{n zIlVac<~RCJSH2wi{IkIL(E}eYRlFr9d4PCC*5!W1S2(xQKm|X$P(>O z`+NBEGS!|tr^XiaH>cIxTAypaujf9SKXqn)BEVK94xpar2#{?~*Nl;DnSsbM z1?^Fh1|Rx|eEr~sL&rgQ)tb6@T5|E2YR$AKPpVJ#g8ra3eaSb$&)Oz0;210{)8W##=hNurCPA){CxYoYTW<5PHm?7k z@Yq&)7UFpz>+)xe%gF}=`GB~Wh%|Av?32&jfR|1qtF}%i$rHSlpLAyd3xnh^d+mWA6vfv(AIxb zYOKA0{}O02rw-Q4*{Oz)p$NbB>ygCT?fpW45KK6^SJ^n53 zN>+6isy6zL$vWII43vC?wh?*BVGxQ)JZ%U;L!ne0#d$)SGNH|X$+(n2oaO9E+mh@H5A&Sa3Y%n1N#kjv4s>Vc@^> CzIb;4 diff --git a/VC++Files/winmysqladmin/images/red.ico b/VC++Files/winmysqladmin/images/red.ico deleted file mode 100644 index b28288d576e1416391102cc7333a4eece5c65a2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc(cF;c`Z3`NB*Gp2)zI^zaPW?ay6B+b%Ly4!FAa+@57GB?OR*;ed=9wl;YKUw-# zMDBQ|>51`PeorFLBJzq)_y=zLW*PRkWgsNy`e9^>XIa-3u$Nc%-DWtCZP~imCh}Nk zbtI^fiWM6If>{p`)fiQMLnNGHd5cmJGMrBs=gXC>zOCV|$GPh{c+(TkDZL}h^(X<{|Iib{ zJcm%STS?KcWyxcIzL(`^=nt5HuIItl*RIF8>p6JSqn2;%4*}QS9|X*^YPr3)z<)SJ G{?%^KRSu>A diff --git a/VC++Files/winmysqladmin/images/red22.BMP b/VC++Files/winmysqladmin/images/red22.BMP deleted file mode 100644 index a35052afa012614102a613e2d516d1ae6b4a13c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2104 zcmY*Y2Yiip8$H&I;Apai%w(XQq5`kZ{;y|=cQBP0=PYAt- zmM(;jfuA>#a5f>fts{E3C3?0Y@@5jP!-y9v5`I7N(LCaM0nxb*ap@d!@pt0FS>l(& z#K|9tlmz1Nx5Tu8#MJ)84||FH9Yn*T#CKbXCMAfBmxwK^h)v6h^j5^cjzkqGW-Y?- z5sx1ew{IwKsN%&DFV`gIjV9tt6G^JCyL?V4SKBJYlzzm)T|`bMk=>j4W)m^eEl%}* zwv>1-ocQETqE!g7bQaO546$S?u_%Y|HYMhaAl?{7%ot2Ws)p>ILJwkmIx*C)I2BZ1 z2V%f0MB+0e^=N%qbLguO1&P5o%2T=CBmb#)&rR1@k5wS^d=o=`)mDntu4 zg<8UICy18vi_&@JLiKzaF@HR<{B7dO1>(^|V%AXN%+JK#Tg1IP#JSVN^P0<=cZt*% z;)fBlWwUDo@$dn$bq#S@zW47E%jOVQFB8WO5;KR$X9=-k8S(XMV#Na0T}hgx?dCNi zE{K@ei}>{@k*k<@ZW2ci$p4b~tI{vsJ3c2?E5?EC%5k39ypmWjK`}ohHhxU>YfogV zXIWi|8wHwUgyN{~vnQq7LYzNC_#P1riW8GFh(Vn+&qKr{&F{Q)y;_}^(1+N+jp!Of z?DQ=+7ltU;=1+B2uH({qEMHpHkA~)~f;D$x#e6|M zJt93v_G?!Z&lW44!-)dvE4Zk7r7^8Jaq1_{K)G^9YL-Qac2?rnb>iA(V(u8CzV5cK zC)U1Cj7=j(dx(8oh@GnS;eFK=NxUQfESq*+{aHAPIDK6EP?T7gr@c?qUUebG_P8u8mnoK zv$SW*u~U1{DpcR{TB4Hn>ib>9-mmlx8=6l$*}o?Zy00!Y5Xb=ZFn`16g$)jRB|0di z!KyNaH&6ecJssyVl5IYp&26|W%R-;#$o?5$8cv`8$WQ2E#Gv1`ltMbmrl-vlVF@=6F3Yn4gUk@C(`I@krMEW>$K}(z ztA58y>Z{zRbmwOy1jz6;iJU{Qb6|1L2_zvszuTw)j2|J1M^_x*ywG zXBG0k8R4nD_?)qEWdHTvL#)5R>&+g^&kMu{do)kqjDhYBW8e9qEUU-3Tn$J4>)_+1 zTsI-5_%j@7h_?mpayxA;bJ`Z~awo~=S)UW!ds|DpJEHM_Ux+fbB>(as!|zM>7@n0S z91(uI!|HXoQm=gfyvJkjDBe*n-)^prdn=c_28}TyBAhb6o#iqwl|DIgVvt>j)GDFl zqvkA3J~P^4cin4|8EBLyI&c(~!0&ek^(!}~Hj72_weH1AH|8PpQmqan)1no?xA(&q z!N1n;F|66PjB4*6o&H83tMd1btkerQD* zbabb>zPkU>(AVFcofyOZM}I%z^Lt`Pm^=sUOEHt#CT;b!?$aS*MAwtdYu7a?rAc6L zGI;%l*(-mN+ZVnswI-+hRC4asaHDSdfOjCmn}(@UCU&1Yzo_@?yN0*e-`=LdCwsa% z0wqhTCCZUE{?*!t|M3nSCJ*`4ZY1k7NJ_D~S0AtQ|E&2|YS@s$apB>XkeijZ|BnU! E0u5V*i2wiq diff --git a/VC++Files/winmysqladmin/images/see.bmp b/VC++Files/winmysqladmin/images/see.bmp deleted file mode 100644 index 72fb2c50ec6d22e11180b3158e3da7551b754659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmaKoF>ZuF3`M;t+I0~@jzBqQNSSh_++nMbCen&xlnPlCo2iy7`|OKXeCp-0zk)dgxxkD$mcMDU;l+Gc@WE_tm$u&Xla-dZC=RD*CzO)u zcitaQb^Y6W@Zg*y>WvqnI@XA#-}<+qSDuG4;8f{rHFGgP-VMVrGI&2liILN)Dr?5P zG(ke6e8enx{LW?$2!RAB8Ybl~x9`ROW-8SH$D=G5XNNaH0cbp_&n8f+^8^9h;XQMr iq$-7t8YhjJs=vkU#}fbavr6*|(Ys6b -#pragma hdrstop - -#include "initsetup.h" -#include "main.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TForm2 *Form2; -//--------------------------------------------------------------------------- -__fastcall TForm2::TForm2(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -void __fastcall TForm2::BitBtn1Click(TObject *Sender) -{ - if ((Edit1->Text).IsEmpty() || (Edit2->Text).IsEmpty()) - Application->MessageBox("Fill the User name and Password text boxs ", "Winmysqladmin 1.0", MB_OK |MB_ICONINFORMATION); - else - { - Form1->GetServerFile(); - Form1->CreateMyIniFile(); - Form1->CreatingShortCut(); - - Close(); - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm2::BitBtn2Click(TObject *Sender) -{ - Close(); -} -//--------------------------------------------------------------------------- -void __fastcall TForm2::SpeedButton1Click(TObject *Sender) -{ - Application->HelpCommand(HELP_FINDER,0); -} -//--------------------------------------------------------------------------- diff --git a/VC++Files/winmysqladmin/initsetup.h b/VC++Files/winmysqladmin/initsetup.h deleted file mode 100644 index 28f575198e3..00000000000 --- a/VC++Files/winmysqladmin/initsetup.h +++ /dev/null @@ -1,38 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef initsetupH -#define initsetupH -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class TForm2 : public TForm -{ -__published: // IDE-managed Components - TImage *Image1; - TLabel *Label1; - TLabel *Label4; - TPanel *Panel1; - TLabel *Label5; - TLabel *Label6; - TLabel *Label2; - TEdit *Edit1; - TEdit *Edit2; - TBitBtn *BitBtn1; - TSpeedButton *SpeedButton1; - TBitBtn *BitBtn2; - void __fastcall BitBtn1Click(TObject *Sender); - void __fastcall BitBtn2Click(TObject *Sender); - void __fastcall SpeedButton1Click(TObject *Sender); -private: // User declarations -public: // User declarations - __fastcall TForm2(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TForm2 *Form2; -//--------------------------------------------------------------------------- -#endif diff --git a/VC++Files/winmysqladmin/main.cpp b/VC++Files/winmysqladmin/main.cpp deleted file mode 100644 index 150bc669c74..00000000000 --- a/VC++Files/winmysqladmin/main.cpp +++ /dev/null @@ -1,2531 +0,0 @@ -//--------------------------------------------------------------------------- -#include -#pragma hdrstop - -#include "main.h" -#include "initsetup.h" -#include "db.h" - -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "mysql.h" -#include - -TForm1 *Form1; -bool i_start, NT; -bool IsForce = false; -bool IsVariables = false; -bool IsProcess = false ; -bool IsDatabases = false; -bool new_line = 0; -bool ya = true; -bool yy = true; -bool rinit = false; -AnsiString vpath; -AnsiString vip; -MYSQL_RES *res_1; -static unsigned long q = 0; -bool preport = false; -bool treport = false; -bool ereport = false; -AnsiString mainroot; -bool IsMySQLNode = false; -MYSQL *MySQL; -//--------------------------------------------------------------------------- -__fastcall TForm1::TForm1(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::FormCreate(TObject *Sender) -{ - i_start = true; - IsConnect = false; - if (ParamCount() > 0){ - if (ParamStr(1) == "-h" || ParamStr(1) == "h" ) { - ShowHelp(); Application->Terminate(); } - else if (ParamStr(1) == "-w" || ParamStr(1) == "w") { - i_start = false; ContinueLoad(); } - } - else { - ContinueLoad(); Hide(); GetServerOptions(); } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::DrawItem(TMessage& Msg) -{ - IconDrawItem((LPDRAWITEMSTRUCT)Msg.LParam); - TForm::Dispatch(&Msg); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::MyNotify(TMessage& Msg) -{ - POINT MousePos; - - switch(Msg.LParam) { - case WM_RBUTTONUP: - if (GetCursorPos(&MousePos)){ - PopupMenu1->PopupComponent = Form1; SetForegroundWindow(Handle); - PopupMenu1->Popup(MousePos.x, MousePos.y);} - else Show(); - break; - case WM_LBUTTONUP: - if (GetCursorPos(&MousePos)){ - PopupMenu1->PopupComponent = Form1; SetForegroundWindow(Handle); - PopupMenu1->Popup(MousePos.x, MousePos.y); } - - ToggleState(); - break; - default: - break; } - - TForm::Dispatch(&Msg); -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TrayMessage(DWORD dwMessage) -{ - NOTIFYICONDATA tnd; - PSTR pszTip; - - pszTip = TipText(); - - tnd.cbSize = sizeof(NOTIFYICONDATA); - tnd.hWnd = Handle; - tnd.uID = IDC_MYICON; - tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; - tnd.uCallbackMessage = MYWM_NOTIFY; - - if (dwMessage == NIM_MODIFY){ - tnd.hIcon = IconHandle(); - if (pszTip)lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip)); - else tnd.szTip[0] = '\0'; } - else { tnd.hIcon = NULL; tnd.szTip[0] = '\0'; } - - return (Shell_NotifyIcon(dwMessage, &tnd)); -} -//--------------------------------------------------------------------------- -HANDLE __fastcall TForm1::IconHandle(void) -{ - - if (!NT){ - if (MySQLSignal()){Image3->Visible = false; Image2->Visible = true; - return (Image2->Picture->Icon->Handle); } - else {Image2->Visible = false; Image3->Visible = true; - return (Image3->Picture->Icon->Handle); } - } - else { - if (TheServiceStatus()){Image3->Visible = false; Image2->Visible = true; - return (Image2->Picture->Icon->Handle); } - - else if (MySQLSignal()){Image3->Visible = false; Image2->Visible = true; - return (Image2->Picture->Icon->Handle); } - else {Image2->Visible = false; Image3->Visible = true; - return (Image3->Picture->Icon->Handle); } - } - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::ToggleState(void) -{ - - TrayMessage(NIM_MODIFY); - if (!NT){ - if (MySQLSignal()){SSW9->Caption = "ShutDown the Server"; - Image3->Visible = false; Image2->Visible = true; } - else {SSW9->Caption = "Start the Server"; - Image2->Visible = false; Image3->Visible = true; } - } - else { - if (TheServiceStart()) { - Standa->Enabled = false; - if (TheServiceStatus()) {RService->Enabled = false; - StopS->Enabled = true; - StopS->Caption = "Stop the Service"; - Image3->Visible = false; - Image2->Visible = true; } - else {RService->Enabled = true; - StopS->Enabled = true; - RService->Caption = "Remove the Service"; - StopS->Caption = "Start the Service"; - Image2->Visible = false; - Image3->Visible = true; } - } - else { - Standa->Enabled = true; - StopS->Enabled = false; - if (MySQLSignal()) { - RService->Enabled = false; - Standa->Caption = "ShutDown the Server Standalone"; - Image3->Visible = false; - Image2->Visible = true; } - - else { - RService->Enabled = true; - RService->Caption = "Install the Service"; - Standa->Caption = "Start the Server Standalone"; - Image2->Visible = false; - Image3->Visible = true; } - - } - - - } - -} -//--------------------------------------------------------------------------- -PSTR __fastcall TForm1::TipText(void) -{ - char* status = StatusLine->SimpleText.c_str(); - return status; - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::WMQueryEndSession(TWMQueryEndSession &msg) -{ - - - if (!NT) { - - if (MySQLSignal()){ - StatusLine->SimpleText = "Shutdown in progress....."; - Show(); Shutd(); msg.Result = 1; } - else { - StatusLine->SimpleText = "The Server already is down......"; - Show(); msg.Result = 1; Close(); } - } - else { - - Show(); - if (!TheServiceStart()) { if (MySQLSignal()) Shutd(); } - msg.Result = 1; - } - -} - -//--------------------------------------------------------------------------- -LRESULT IconDrawItem(LPDRAWITEMSTRUCT lpdi) -{ - HICON hIcon; - - hIcon = (HICON)LoadImage(g_hinst, MAKEINTRESOURCE(lpdi->CtlID), IMAGE_ICON, - 16, 16, 0); - if (!hIcon) - return(false); - - DrawIconEx(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top, hIcon, - 16, 16, 0, NULL, DI_NORMAL); - - return(true); -} -//--------------------------------------------------------------------------- -AnsiString __fastcall TForm1::TheComputer() -{ - AnsiString theword; - DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1; - char szBuf[MAX_COMPUTERNAME_LENGTH + 1]; - szBuf[0] = '\0'; - - GetComputerName(szBuf, &dwSize); - theword = (AnsiString) szBuf; - delete [] szBuf; - return theword; - -} -//--------------------------------------------------------------------------- -AnsiString __fastcall TForm1::TheOS() -{ - AnsiString theword; - OSVERSIONINFO info; - info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&info); - - switch (info.dwPlatformId) - { - case VER_PLATFORM_WIN32s: - NT = false; - theword = "Win32s detected"; - break; - case VER_PLATFORM_WIN32_WINDOWS: - NT = false; - theword = "Win 95 or Win 98 detected"; - break; - case VER_PLATFORM_WIN32_NT: - NT = true; - theword = "Windows NT detected"; - break; - } - return theword; -} -///--------------------------------------------------------------------------- -AnsiString __fastcall TForm1::TheUser() -{ - AnsiString theword; - DWORD dwSize = 0; - - GetUserName(NULL, &dwSize); - - char *szBuf = new char[dwSize]; - szBuf[0] = '\0'; - - GetUserName(szBuf, &dwSize); - theword = (AnsiString) szBuf; - delete [] szBuf; - return theword; - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::TakeIP(void) -{ - WORD wVersionRequested; - WSADATA WSAData; - wVersionRequested = MAKEWORD(1,1); - WSAStartup(wVersionRequested,&WSAData); - - hostent *P; - char s[128]; - in_addr in; - char *P2; - gethostname(s, 128); - P = gethostbyname(s); - - Memo2->Lines->Clear(); - Memo2->Lines->Add((AnsiString)P->h_name); - mainroot = P->h_name; - in.S_un.S_un_b.s_b1 = P->h_addr_list[0][0]; - in.S_un.S_un_b.s_b2 = P->h_addr_list[0][1]; - in.S_un.S_un_b.s_b3 = P->h_addr_list[0][2]; - in.S_un.S_un_b.s_b4 = P->h_addr_list[0][3]; - P2 = inet_ntoa(in); - vip = P2; - mainroot += " ( " + (AnsiString)P2 + " )"; - Memo2->Lines->Add(P2); - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::GetmemStatus(void) -{ - MEMORYSTATUS ms; - ms.dwLength = sizeof(MEMORYSTATUS); - GlobalMemoryStatus(&ms); - - Edit2->Text = AnsiString((double)ms.dwTotalPhys / 1024000.0) + " MB RAM"; -} - -//--------------------------------------------------------------------------- -void __fastcall TForm1::ShowHelp(void) -{ - Application->MessageBox("Usage: WinMySQLadmin.EXE [OPTIONS]\n\n-w Run the tool without start the Server.\n-h Shows this message and exit ", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::ContinueLoad(void) -{ - OS->Text = TheOS(); - Localhost->Text = TheComputer(); - Localuser->Text = TheUser(); - GetmemStatus(); - ClearBox(); - TakeIP(); - MyODBC(); - - - IsMyIniUp(); - - if (!NT) { WinNT->Enabled = false; NtVer->Enabled = false; Win9->Enabled = true; } - else { WinNT->Enabled = true; Win9->Enabled = false; } - - if (i_start) - { - // NT never is started from the prompt - if ((!NT) && (!MySQLSignal())) mysqldstart(); - { - TrayMessage(NIM_MODIFY); - SeekErrFile(); - } - } - Hide(); - -} - -//--------------------------------------------------------------------------- -void __fastcall TForm1::MyODBC(void) -{ - - TRegistry *Registry = new TRegistry(); - Memo3->Lines->Clear(); - - try - { - Registry->RootKey = HKEY_LOCAL_MACHINE; - // the basic data of myodbc - if (Registry->OpenKey("Software\\ODBC\\ODBCINST.INI\\MySQL", false)) - { - Memo3->Lines->Add("Driver Version\t" + Registry->ReadString("DriverODBCVer")); - Memo3->Lines->Add("Driver\t\t" + Registry->ReadString("Driver")); - Memo3->Lines->Add("API Level\t\t" + Registry->ReadString("APILevel")); - Memo3->Lines->Add("Setup\t\t" + Registry->ReadString("Setup")); - Memo3->Lines->Add("SQL Level\t" + Registry->ReadString("SQLLevel")); - } - else - Memo3->Lines->Add("Not Found"); - - } - catch (...) - { - delete Registry; - } - Memo3->Enabled = false; -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::IsMyIniUp(void) -{ - // we see if the my.ini is Up - AnsiString asFileName = FileSearch("my.ini", TheWinDir()); - if (asFileName.IsEmpty()) - { - IsForce = true; - i_start = false; - QuickSearch(); - } - else - { - Memo1->Enabled = true; - Memo1->Lines->Clear(); - FillMyIni(); - GetBaseDir(); - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::QuickSearch(void) -{ - AnsiString asFileName = FileSearch("mysql.exe", "c:/mysql/bin"); - if (!asFileName.IsEmpty()) - BaseDir->Text = "c:/mysql"; -} -//--------------------------------------------------------------------------- -AnsiString __fastcall TForm1::TheWinDir() -{ - AnsiString WinDir; - UINT BufferSize = GetWindowsDirectory(NULL,0); - WinDir.SetLength(BufferSize+1); - GetWindowsDirectory(WinDir.c_str(),BufferSize); - char* dirw = WinDir.c_str(); - return dirw ; - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::FillMyIni(void) -{ - Memo1->Lines->LoadFromFile(TheWinDir() + "\\my.ini"); - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::GetBaseDir(void) -{ - - char drive[_MAX_DRIVE]; - char dir[_MAX_DIR]; - char file[_MAX_FNAME]; - char ext[_MAX_EXT]; - - - TIniFile *pIniFile = new - TIniFile(TheWinDir() + "\\my.ini"); - - BaseDir->Text = pIniFile->ReadString("mysqld","basedir","") ; - AnsiString lx = pIniFile->ReadString("WinMySQLadmin","Server","") ; - _splitpath((lx).c_str(),drive,dir,file,ext); - AnsiString lw = (AnsiString) file + ext; - - if ( lw == "mysqld-shareware.exe") {ShareVer->Checked = true;} - if ( lw == "mysqld.exe") {MysqldVer->Checked = true;} - if ( lw == "mysqld-opt.exe") {OptVer->Checked = true;} - if ( lw == "mysqld-nt.exe") {NtVer->Checked = true;} - - delete pIniFile; - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::Showme1Click(TObject *Sender) -{ - if(Showme1->Caption == "Show me") { TrayMessage(NIM_DELETE); - Showme1->Caption = "Hide me"; Show(); } - else { TrayMessage(NIM_ADD); TrayMessage(NIM_MODIFY); - Showme1->Caption = "Show me"; Hide(); } -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::MySQLSignal() -{ - HANDLE hEventShutdown; - hEventShutdown=OpenEvent(EVENT_MODIFY_STATE, 0, "MySqlShutdown"); - - if(hEventShutdown) - { - CloseHandle(hEventShutdown); - return true; - } - else - { - CloseHandle(hEventShutdown); - return false; - } - -} - -//--------------------------------------------------------------------------- -bool __fastcall TForm1::mysqldstart() -{ - memset(&pi, 0, sizeof(pi)); - memset(&si, 0, sizeof(si)); - si.cb = sizeof(si); - si.dwFlags |= STARTF_USESHOWWINDOW; - si.wShowWindow |= SW_SHOWNORMAL; - - - TIniFile *pIniFile = new - TIniFile(TheWinDir() + "\\my.ini"); - - if (NT) - vpath = pIniFile->ReadString("WinMySQLadmin","Server","") + " --standalone\0" ; - else - vpath = pIniFile->ReadString("WinMySQLadmin","Server","") + "\0" ; - - if ( ! CreateProcess(0,vpath.c_str(), 0, 0, 0, 0, 0, 0, &si,&pi)) - { - TrayMessage(NIM_MODIFY); - return false; - } - else - { - TrayMessage(NIM_MODIFY); - return true; - - } - -} - -//--------------------------------------------------------------------------- -bool __fastcall TForm1::SeekErrFile() -{ - Memo4->Enabled = true; - Memo4->Lines->Clear(); - AnsiString asFileName = FileSearch("mysql.err", BaseDir->Text + "/data"); - if (!asFileName.IsEmpty()) - { - FName = BaseDir->Text + "/data/mysql.err"; - ifstream in((FName).c_str()); - in.seekg(0, ios::end); - string s, line; - deque v; - deque lines; - streampos sp = in.tellg(); - if (sp <= 1000) - in.seekg(0, ios::beg); - else - { - in.seekg(0, ios::beg); - in.seekg((sp - 1000)); - } - - do { - lines.push_back(line); - }while (getline(in, line)); - - - if( lines.size() <= 15) - { - deque::reverse_iterator r; - for(r = lines.rbegin(); r != lines.rend() ; r++) - { - if (ereport) - Memo5->Lines->Add((*r).c_str()); - Memo4->Lines->Add((*r).c_str()); - - } - } - else - { - int k = 0; - deque::reverse_iterator r; - for(r = lines.rbegin(); r != lines.rend(); r++) - { - if (ereport) - Memo5->Lines->Add((*r).c_str()); - Memo4->Lines->Add((*r).c_str()); - if (++k >= 15) { break;} - } - } - in.close(); - return true; - } - else - return false; - -} - -//--------------------------------------------------------------------------- -void __fastcall TForm1::Timer1Timer(TObject *Sender) -{ - Showme1->Caption = "Show me"; - TrayMessage(NIM_ADD); - TrayMessage(NIM_MODIFY); - Hide(); - if (IsForce) {Form2->Show();} - Timer1->Enabled = false; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::GetServerFile() -{ - - AnsiString FileName; - - if(!NT) { - FileName = FileSearch("mysqld-opt.exe", ExtractFilePath(Application->ExeName)); - if (FileName.IsEmpty()) FileName = FileSearch("mysqld.exe", ExtractFilePath(Application->ExeName)); - if (FileName.IsEmpty()) FileName = FileSearch("mysqld-shareware.exe", ExtractFilePath(Application->ExeName)); - - if (!FileName.IsEmpty()){ - if ( FileName == "mysqld-opt.exe") {OptVer->Checked = true;} - if ( FileName == "mysqld.exe") {MysqldVer->Checked= true;} - if ( FileName == "mysqld-shareware.exe") {ShareVer->Checked= true;} } - - } - else { - - FileName = FileSearch("mysqld-nt.exe", ExtractFilePath(Application->ExeName)); - if (FileName.IsEmpty()) FileName = FileSearch("mysqld.exe", ExtractFilePath(Application->ExeName)); - if (FileName.IsEmpty()) FileName = FileSearch("mysqld-shareware.exe", ExtractFilePath(Application->ExeName)); - - if (!FileName.IsEmpty()) { - if ( FileName == "mysqld-nt.exe") {NtVer->Checked = true;} - if ( FileName == "mysqld.exe") {MysqldVer->Checked= true;} - if ( FileName == "mysqld-shareware.exe") {ShareVer->Checked= true;} } - - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::CreateMyIniFile(void) -{ - char szFileName[6]; - int iFileHandle; - AnsiString jk; - - Memo1->Enabled = true; - Memo1->Lines->Clear(); - strcpy(szFileName,"\\my.ini"); - iFileHandle = FileCreate(TheWinDir() + szFileName ); - - jk = "#This File was made using the WinMySQLadmin 1.0 Tool\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#" + Now() + "\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#Uncomment or Add only the keys that you know how works.\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#Read the MySQL Manual for instructions\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - - jk = "[mysqld]\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "basedir=" + TheDir() + "\n"; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#bind-address=" + vip + "\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#datadir=" + TheDir() + "/data\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#language=" + TheDir() + "/share/your language directory\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#delay-key-write-for-all-tables\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#log-long-format\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#slow query log=#\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#tmpdir=#\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#ansi\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#new\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#port=3306\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#safe\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#skip-name-resolve\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#skip-networking\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#skip-new\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#skip-host-cache\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#set-variable = key_buffer=16M\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#set-variable = max_allowed_packet=1M\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#set-variable = thread_stack=128K\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#set-variable = flush_time=1800\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "[mysqldump]\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#quick\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#set-variable = max_allowed_packet=16M\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "[mysql]\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#no-auto-rehash\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "[isamchk]\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "#set-variable= key=16M\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "[WinMySQLadmin]\n\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - - if (ShareVer->Checked) { jk = "Server=" + TheDir() + "/bin/mysqld-shareware.exe\n\n";} - if (MysqldVer->Checked) {jk = "Server=" + TheDir() + "/bin/mysqld.exe\n\n";} - if (OptVer->Checked) {jk = "Server=" + TheDir() + "/bin/mysqld-opt.exe\n\n";} - if (NtVer->Checked) {jk = "Server=" + TheDir() + "/bin/mysqld-nt.exe\n\n";} - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "user=" + Form2->Edit1->Text + "\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - jk = "password=" + Form2->Edit2->Text + "\n" ; - FileWrite(iFileHandle, (jk).c_str(), (jk).Length()); - - FileClose(iFileHandle); - FillMyIni(); - -} - -//--------------------------------------------------------------------------- -bool __fastcall TForm1::CreatingShortCut() -{ - // Where is The Start Menu in this Machine ? - LPITEMIDLIST pidl; - LPMALLOC pShellMalloc; - char szDir[MAX_PATH + 16]; - AnsiString file; - AnsiString jk = "\\WinMySQLadmin.lnk" ; - - if(SUCCEEDED(SHGetMalloc(&pShellMalloc))) - { - if(SUCCEEDED(SHGetSpecialFolderLocation(NULL, - CSIDL_STARTUP, &pidl))) - { - if(!SHGetPathFromIDList(pidl, szDir)) - { - pShellMalloc->Release(); - pShellMalloc->Free(pidl); - return false; - } - - pShellMalloc->Free(pidl); - } - - pShellMalloc->Release(); - StrCat(szDir, jk.c_str()); - } - - // the create - - IShellLink* pLink; - IPersistFile* pPersistFile; - - if(SUCCEEDED(CoInitialize(NULL))) - { - if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, - CLSCTX_INPROC_SERVER, - IID_IShellLink, (void **) &pLink))) - { - - pLink->SetPath((ExtractFilePath(Application->ExeName) + "WinMySQLadmin.exe").c_str()); - pLink->SetDescription("WinMySQLadmin Tool"); - pLink->SetShowCmd(SW_SHOW); - - if(SUCCEEDED(pLink->QueryInterface(IID_IPersistFile, - (void **)&pPersistFile))) - { - - WideString strShortCutLocation(szDir); - pPersistFile->Save(strShortCutLocation.c_bstr(), TRUE); - pPersistFile->Release(); - } - pLink->Release(); - } - - CoUninitialize(); - } - - - return true; -} - -//--------------------------------------------------------------------------- -AnsiString __fastcall TForm1::TheDir() -{ - AnsiString buffer; - char s[_MAX_PATH + 1]; - - StrCopy(s, ( BaseDir->Text).c_str()) ; - - for (int i = 0; s[i] != NULL; i++) - if (s[i] != '\\') - buffer += s[i]; - else - buffer += "/"; - - return buffer; - -} - -//--------------------------------------------------------------------------- -void __fastcall TForm1::SpeedButton1Click(TObject *Sender) -{ - Application->HelpCommand(HELP_FINDER,0); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Timer2Timer(TObject *Sender) -{ - ToggleState(); - -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TheServiceStart() -{ - bool thatok; - char *SERVICE_NAME = "MySql"; - SC_HANDLE myService, scm; - scm = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS | GENERIC_WRITE); - if (scm) - { - myService = OpenService(scm, SERVICE_NAME, SERVICE_ALL_ACCESS); - if (myService) - thatok = true; - else - thatok = false; - } - CloseServiceHandle(myService); - CloseServiceHandle(scm); - return thatok; -} - -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TheServicePause() -{ - - bool thatok; - char *SERVICE_NAME = "MySql"; - SC_HANDLE myService, scm; - scm = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS); - - if (scm) - { - myService = OpenService(scm, SERVICE_NAME, SERVICE_ALL_ACCESS); - if (myService) - { - // stop the service - if (IsConnect) - { - mysql_kill(MySQL,mysql_thread_id(MySQL)); - StatusLine->SimpleText = ""; - q = 0; - } - - - SERVICE_STATUS ss; - thatok = ControlService(myService, - SERVICE_CONTROL_STOP, - &ss); - - } - else - thatok = false; - } - else - thatok = false; - - CloseServiceHandle(myService); - CloseServiceHandle(scm); - return thatok; -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TheServiceResume() -{ - - bool thatok; - char *SERVICE_NAME = "MySql"; - SC_HANDLE myService, scm; - scm = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS); - - if (scm) - { - myService = OpenService(scm, SERVICE_NAME, SERVICE_ALL_ACCESS); - if (myService) - { - // start the service - - thatok = StartService(myService, 0, NULL); - } - else - thatok = false; - } - else - thatok = false; - - CloseServiceHandle(myService); - CloseServiceHandle(scm); - return thatok; -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TheServiceStatus() -{ - bool thatok; - bool k; - char *SERVICE_NAME = "MySql"; - SC_HANDLE myService, scm; - SERVICE_STATUS ss; - DWORD dwState = 0xFFFFFFFF; - scm = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS); - - if (scm) - { - myService = OpenService(scm, SERVICE_NAME, SERVICE_ALL_ACCESS); - if (myService) - { - memset(&ss, 0, sizeof(ss)); - k = QueryServiceStatus(myService,&ss); - if (k) - { - dwState = ss.dwCurrentState; - if (dwState == SERVICE_RUNNING) - thatok = true; - } - else - thatok = false; - } - else - thatok = false; - } - else - thatok = false; - - CloseServiceHandle(myService); - CloseServiceHandle(scm); - return thatok; -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TheServiceCreate() - -{ - bool thatok; - char *SERVICE_NAME = "MySql"; - char *szFullPath = vpath.c_str(); - SC_HANDLE myService, scm; - scm = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS); - - if (scm) - { myService = CreateService( - scm, - SERVICE_NAME, - SERVICE_NAME, - SERVICE_ALL_ACCESS, - SERVICE_WIN32_OWN_PROCESS, - SERVICE_AUTO_START , - SERVICE_ERROR_NORMAL, - szFullPath, - NULL, - NULL, - NULL, - NULL, - NULL); - - if (myService) - thatok = true; - else - thatok = false; - - } - - CloseServiceHandle(myService); - CloseServiceHandle(scm); - return thatok; - -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Swin9Click(TObject *Sender) -{ - if(Application->MessageBox("Shutdown this tool", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - Close(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SSW9Click(TObject *Sender) -{ - if (MySQLSignal()) - { - if(Application->MessageBox("Shutdown the MySQL Server ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - - if (Shutd()) - { - IsConnect = false; - IsVariables = false; - IsProcess = false; - IsDatabases = false; - ya = false; - ClearBox(); - Sleep(500); - TrayMessage(NIM_MODIFY); - - } - else - Application->MessageBox("Fails to Shutdown the Server", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - } - } - else - { - if(Application->MessageBox("Start the MySQL Server ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (mysqldstart()) - { - TrayMessage(NIM_MODIFY); - ya = true; - } - else - Application->MessageBox("Fails to Start the Server", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - - } - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::ShutDownBoth1Click(TObject *Sender) -{ - if (MySQLSignal()) - { - if(Application->MessageBox("Shutdown the MySQL Server and this tool ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - - if (Shutd()) - Close(); - else - { - Application->MessageBox("Fails to Shutdown the Server", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - - } - } - } - else - if(Application->MessageBox("Shutdown this tool ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - Close(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::ShutDownthisTool1Click(TObject *Sender) -{ - if(Application->MessageBox("Shutdown this tool ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - Close(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::StopSClick(TObject *Sender) -{ - AnsiString theWarning; - theWarning = "Are you sure to stop the Service ?\n\nAll the connections will be loss !" ; - if (TheServiceStatus()) - { - if(Application->MessageBox(theWarning.c_str(), "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (TheServicePause()) - { - TrayMessage(NIM_MODIFY); - IsConnect = false; - IsVariables = false; - IsProcess = false; - IsDatabases = false; - ya = false; - ClearBox(); - - } - else - Application->MessageBox("Fails to stop the Service", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - - } - } - else - { - if(Application->MessageBox("Start the Service Manager for the MySQL Server ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (TheServiceResume()) - { - ya = true; - TrayMessage(NIM_MODIFY); - } - else - Application->MessageBox("Fails to start the Service", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - } - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::RServiceClick(TObject *Sender) -{ - if (TheServiceStart()) - { - if(Application->MessageBox("Remove the MySQL Server service ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (!TheServiceRemove()) - Application->MessageBox("Fails to Remove The MySQL Server Service", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - } - } - else - { - if(Application->MessageBox("Install the MySQL Server service ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (!TheServerPath()) - Application->MessageBox("Please create first the my.ini setup", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - else - { - if (!TheServiceCreate()) - Application->MessageBox("Fails to Install The MySQL Server Service", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - } - - } - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::StandaClick(TObject *Sender) -{ - if (MySQLSignal()) - { - if(Application->MessageBox("Shutdown the MySQL Server ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (Shutd()) - { - IsConnect = false; - IsVariables = false; - IsProcess = false; - IsDatabases = false; - ya = false; - ClearBox(); - Sleep(500); - TrayMessage(NIM_MODIFY); - - } - else - Application->MessageBox("Fails to Shutdown the Server", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - } - } - else - { - if(Application->MessageBox("Start the MySQL Server ", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (mysqldstart()) - { - StatusLine->SimpleText = ""; - TrayMessage(NIM_MODIFY); - - } - else - Application->MessageBox("Fails to Start the Server", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - } - } -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::Shutd() -{ - // from Irena - HANDLE hEventShutdown; - hEventShutdown=OpenEvent(EVENT_MODIFY_STATE, 0, "MySqlShutdown"); - - if (IsConnect) - { - mysql_kill(MySQL,mysql_thread_id(MySQL)); - mysql_shutdown(MySQL, SHUTDOWN_DEFAULT); - StatusLine->SimpleText = ""; - - } - - q = 0; - - - if(hEventShutdown) - { - SetEvent(hEventShutdown); - CloseHandle(hEventShutdown); - TrayMessage(NIM_MODIFY); - IsConnect = false; - return true; - } - else - { - TrayMessage(NIM_MODIFY); - return false; - } - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::ClearBox(void) -{ - - st22->Text = ""; - st23->Text = ""; - st24->Text = ""; - st25->Text = ""; - st26->Text = ""; - st27->Text = ""; - st28->Text = ""; - st29->Text = ""; - Edit3->Text = ""; - Edit4->Text = ""; - Edit5->Text = ""; - Edit6->Text = ""; - -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TheServiceRemove() -{ - bool thatok; - char *SERVICE_NAME = "MySql"; - SC_HANDLE myService, scm; - scm = OpenSCManager(0, 0, SC_MANAGER_ALL_ACCESS); - if (scm) - { - myService = OpenService(scm, SERVICE_NAME, SERVICE_ALL_ACCESS); - if (myService) - { - if(DeleteService(myService)) - { - CloseServiceHandle(myService); - CloseServiceHandle(scm); - thatok = true; - } - else - { - CloseServiceHandle(myService); - CloseServiceHandle(scm); - thatok = false; - } - - } - else - { - CloseServiceHandle(myService); - CloseServiceHandle(scm); - thatok = false; - } - } - else - { - thatok = false; - CloseServiceHandle(scm); - } - - return thatok; - -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::TheServerPath() -{ - - TIniFile *pIniFile = new - TIniFile(TheWinDir() + "\\my.ini"); - - vpath = pIniFile->ReadString("WinMySQLadmin","Server","") ; - delete pIniFile; - if (vpath.IsEmpty()) - return false; - else - return true; - -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button5Click(TObject *Sender) -{ - if (!SeekErrFile()) - Application->MessageBox("Fails to find mysql.err", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::IsMySQLInit(void) -{ - AnsiString theCommand; - char *host = NULL,*password=0,*user=0 ; - TIniFile *pIniFile = new - TIniFile(TheWinDir() + "\\my.ini"); - - AnsiString MyUser = pIniFile->ReadString("WinMySQLadmin","user","") ; - AnsiString MyPass = pIniFile->ReadString("WinMySQLadmin","password","") ; - - delete pIniFile; - - - if (!MyUser.IsEmpty() && MyUser.Length() && !MyPass.IsEmpty() && MyPass.Length()) - { - if (!IsConnect) - { - - MySQL = mysql_init(MySQL); - if (mysql_real_connect(MySQL, "localhost",(MyUser).c_str(), (MyPass).c_str() , 0, 0, NULL, 0)) - IsConnect = true; - else - { - if(mysql_real_connect(MySQL,host,user,password , 0, 0, NULL, 0)) - { - IsConnect = true; - theCommand = "GRANT ALL PRIVILEGES ON *.* TO "; - theCommand += "'" + MyUser + "' @localhost IDENTIFIED BY "; - theCommand += "'" + MyPass + "' with GRANT OPTION"; - char* los = theCommand.c_str(); - if(!mysql_query(MySQL, los )) - StatusLine->SimpleText = " "; - } - - } - MySQL->reconnect= 1; - - } - - } - else - { - if (!IsConnect) - { - MySQL = mysql_init(MySQL); - if(mysql_real_connect(MySQL,host,user,password , 0, 0, NULL, 0)) - IsConnect = true; - MySQL->reconnect= 1; - } - } -} - -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Timer3Timer(TObject *Sender) -{ - if ((NT) && TheServiceStatus()) {IsMySQLInit(); } - - if ((NT) && !TheServiceStatus() && MySQLSignal()) {IsMySQLInit(); } - - if (!(NT) && MySQLSignal()) {IsMySQLInit(); } - - if (IsConnect) - { - GetServerStatus(); - if (!IsMySQLNode) - GetMainRoot(); - Extended->Enabled = true; - if (!IsProcess && !GetProcess()) - StatusLine->SimpleText = ""; - if (!IsVariables && !GetVariables()) - StatusLine->SimpleText = ""; - Timer3->Interval = 10000; - } - else - Extended->Enabled = false; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::GetServerStatus(void) -{ - - GetExtendedStatus(); - Edit3->Text = mysql_get_server_info(MySQL); - Edit4->Text = mysql_get_host_info(MySQL); - Edit5->Text = mysql_get_client_info(); - Edit6->Text = mysql_get_proto_info(MySQL); - - -} - -//--------------------------------------------------------------------------- -bool __fastcall TForm1::GetProcess() -{ - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - int k = 0; - int therow = 1; - new_line=1; - - StringGrid2->RowCount= 2; - - if (!(res=mysql_list_processes(MySQL))) - { - return false; - } - - while ((row=mysql_fetch_row(res)) != 0) - { - mysql_field_seek(res,0); - StringGrid2->Cells[0][0] = "PID"; - StringGrid2->Cells[1][0] = "User"; - StringGrid2->Cells[2][0] = "Host"; - StringGrid2->Cells[3][0] = "DB"; - StringGrid2->Cells[4][0] = "Command"; - StringGrid2->Cells[5][0] = "Time"; - StringGrid2->Cells[6][0] = "State"; - StringGrid2->Cells[7][0] = "Info"; - for (i=0 ; i < mysql_num_fields(res); i++) - { - - if (k <= 6 ) - { - StringGrid2->Cells[k][therow] = row[i]; - k++; - } - else - { - - StringGrid2->Cells[(k)][therow] = row[i]; - k = 0; - therow++ ; - StringGrid2->RowCount++; - - } - - } - - } - - StringGrid2->RowCount--; - mysql_free_result(res); - StringGrid5->RowCount--; - IsProcess = true; - return true; - -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::GetVariables() -{ - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - int k = 1; - new_line=1; - bool left = true; - AnsiString report; - StringGrid1->RowCount = 2; - if (mysql_query(MySQL,"show variables") || - !(res=mysql_store_result(MySQL))) - { - return false; - } - - while ((row=mysql_fetch_row(res)) != 0) - { - mysql_field_seek(res,0); - - StringGrid1->Cells[0][0] = "Variable Name"; - StringGrid1->Cells[1][0] = "Value"; - - - for (i=0 ; i < mysql_num_fields(res); i++) - { - - if (left) - { - if (treport) - report = GetString(row[i]); - StringGrid1->Cells[0][k++] = row[i]; - left = false; - } - else - { - if (treport) - Memo5->Lines->Add(report + row[i]); - StringGrid1->RowCount++; - StringGrid1->Cells[1][--k] = row[i]; - k++; - left = true; - } - - } - - } - - StringGrid1->RowCount--; - mysql_free_result(res); - IsVariables = true; - return true; -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::nice_time(AnsiString buff) -{ - - unsigned long sec; - unsigned long tmp; - AnsiString mytime; - - sec = StrToInt(buff); - - if (sec >= 3600L*24) - { - tmp=sec/(3600L*24); - sec-=3600L*24*tmp; - - mytime = IntToStr(tmp); - if (tmp > 1) - mytime+= " days "; - else - mytime+= " day "; - - } - - if (sec >= 3600L) - { - tmp=sec/3600L; - sec-=3600L*tmp; - mytime += IntToStr(tmp); - if (tmp > 1) - mytime+= " hours "; - else - mytime+= " hour "; - } - if (sec >= 60) - { - tmp=sec/60; - sec-=60*tmp; - mytime += IntToStr(tmp); - mytime+= " min "; - - } - mytime += IntToStr(sec); - mytime+= " sec "; - st29->Text = mytime ; - return true; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::Button11Click(TObject *Sender) -{ - if (IsConnect) - { - if (GetVariables()) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button10Click(TObject *Sender) -{ - if (IsConnect) - { - if (GetProcess()) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button6Click(TObject *Sender) -{ - if (IsConnect) - { - if (mysql_refresh(MySQL,REFRESH_HOSTS)) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button7Click(TObject *Sender) -{ - if (IsConnect) - { - if (mysql_refresh(MySQL,REFRESH_LOG)) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button8Click(TObject *Sender) -{ - if (IsConnect) - { - if (mysql_refresh(MySQL,REFRESH_TABLES)) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button2Click(TObject *Sender) -{ - Memo1->Enabled = true; - Memo1->Lines->Clear(); - AnsiString asFileName = FileSearch("my.ini", TheWinDir()); - if (asFileName.IsEmpty()) - Application->MessageBox("Don't found my.ini file on the Win Directory", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - else - FillMyIni(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button3Click(TObject *Sender) -{ - TIniFile *pIniFile = new - TIniFile(TheWinDir() + "\\my.ini"); - - if (!Memo1->GetTextLen()) - Application->MessageBox("The Memo Box is Empty", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - else - { - if(Application->MessageBox("Are you sure to write the modifications into My.ini file.", "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - Memo1->Lines->SaveToFile(TheWinDir() + "\\my.ini"); - - Memo1->Lines->Clear(); - Memo1->Enabled = true; - Memo1->Lines->Clear(); - if (NtVer->Checked) - pIniFile->WriteString("WinMySQLadmin","Server",TheDir() + "/bin/mysqld-nt.exe"); - if (MysqldVer->Checked == true) - pIniFile->WriteString("WinMySQLadmin","Server", TheDir() + "/bin/mysqld.exe"); - if (ShareVer->Checked) - pIniFile->WriteString("WinMySQLadmin","Server",TheDir() + "/bin/mysqld-shareware.exe"); - if (OptVer->Checked) - pIniFile->WriteString("WinMySQLadmin","Server", TheDir() + "/bin/mysqld-opt.exe"); - FillMyIni(); - Application->MessageBox("My.ini was modificated", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - } - - } - delete pIniFile; - Memo1->Lines->Clear(); - FillMyIni(); - -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button1Click(TObject *Sender) -{ - if(CreatingShortCut()) - Application->MessageBox("The ShortCut on Start Menu was created", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); - else - Application->MessageBox("Fails the Operation of Create the ShortCut", "WinMySQLadmin 1.0", MB_OK |MB_ICONINFORMATION); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton2Click(TObject *Sender) -{ - BROWSEINFO info; - char szDir[MAX_PATH]; - char szDisplayName[MAX_PATH]; - LPITEMIDLIST pidl; - LPMALLOC pShellMalloc; - - - if(SHGetMalloc(&pShellMalloc) == NO_ERROR) - { - - memset(&info, 0x00,sizeof(info)); - info.hwndOwner = Handle; - info.pidlRoot = 0; - info.pszDisplayName = szDisplayName; - info.lpszTitle = "Search MySQL Base Directory"; - info.ulFlags = BIF_RETURNONLYFSDIRS; - info.lpfn = 0; - - pidl = SHBrowseForFolder(&info); - - if(pidl) - { - - if(SHGetPathFromIDList(pidl, szDir)) {BaseDir->Text = szDir; } - - pShellMalloc->Free(pidl); - } - pShellMalloc->Release(); - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Button4Click(TObject *Sender) -{ - if (IsConnect) - { - Memo3->Lines->Add(mysql_stat(MySQL)); - } -} -//--------------------------------------------------------------------------- - - -void __fastcall TForm1::SpeedButton3Click(TObject *Sender) -{ - if(Showme1->Caption == "Show me") { TrayMessage(NIM_DELETE); - Showme1->Caption = "Hide me"; Show(); } - else { TrayMessage(NIM_ADD); TrayMessage(NIM_MODIFY); - Showme1->Caption = "Show me"; Hide(); } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::ExtendedClick(TObject *Sender) -{ -if (ya) - { - Extended->Caption = "Start Extended Server Status"; - ya = false; - ClearBox(); - } -else - { - Extended->Caption = "Stop Extended Server Status"; - ya = true; - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::GetServerOptions(void) -{ -AnsiString FileName; -FileName = FileSearch("mysqld-opt.exe", ExtractFilePath(Application->ExeName)); -if (FileName.IsEmpty()) {OptVer->Enabled = false; } - -FileName = FileSearch("mysqld-shareware.exe", ExtractFilePath(Application->ExeName)); -if (FileName.IsEmpty()) {ShareVer->Enabled = false; } - -FileName = FileSearch("mysqld.exe", ExtractFilePath(Application->ExeName)); -if (FileName.IsEmpty()) {MysqldVer->Enabled = false; } - -FileName = FileSearch("mysqld-nt.exe", ExtractFilePath(Application->ExeName)); -if (FileName.IsEmpty()) {NtVer->Enabled = false; } - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::GetReportServer(void) -{ - - AnsiString strspace; - Memo5->Lines->Clear(); - Memo5->Lines->Add("This Report was made using the WinMySQLadmin 1.0 Tool"); - Memo5->Lines->Add(""); - Memo5->Lines->Add(Now()); - Memo5->Lines->Add(""); - - preport = true; - Memo5->Lines->Add(""); - Memo5->Lines->Add("Server Status Values"); - Memo5->Lines->Add(""); - Memo5->Lines->Add(GetString("Server Info") + mysql_get_server_info(MySQL)); - Memo5->Lines->Add(GetString("Host Info") + mysql_get_host_info(MySQL)); - Memo5->Lines->Add(GetString("Client Info") + mysql_get_client_info()); - Memo5->Lines->Add(GetString("Proto Info") + mysql_get_proto_info(MySQL)); - GetExtendedStatus(); - preport = false; - treport = true; - Memo5->Lines->Add(""); - Memo5->Lines->Add("Variables Values"); - Memo5->Lines->Add(""); - GetVariables(); - treport = false; - ereport = true; - Memo5->Lines->Add(""); - Memo5->Lines->Add("Last Lines from Err File"); - Memo5->Lines->Add(""); - SeekErrFile(); - ereport = false; - -} - -void __fastcall TForm1::SpeedButton4Click(TObject *Sender) -{ - if(IsConnect) - GetReportServer(); - else - Application->MessageBox("The Server must be connected", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton5Click(TObject *Sender) -{ - AnsiString PathName; - SaveFileDialog->FileName = PathName; - if (SaveFileDialog->Execute() ){ - PathName= SaveFileDialog->FileName; - Caption = ExtractFileName(PathName); - Memo5->Lines->SaveToFile(PathName); - Memo5->Modified = false; - } -} -//--------------------------------------------------------------------------- -String __fastcall TForm1::GetString(String k) -{ - int i = 35 - k.Length(); - for (int y = 1 ; y <= i ;y++ ) - k+= " "; - return k ; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::SpeedButton6Click(TObject *Sender) -{ - PrinterSetupDialog1->Execute(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton7Click(TObject *Sender) -{ - AnsiString PathName; - if (PrintDialog1->Execute()){ - try { - Memo5->Print(PathName); - } - catch(...){ - Printer()->EndDoc(); - throw; - } - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton8Click(TObject *Sender) -{ - Memo5->CutToClipboard(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton9Click(TObject *Sender) -{ - Memo5->CopyToClipboard(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton10Click(TObject *Sender) -{ - - Memo5->PasteFromClipboard(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton11Click(TObject *Sender) -{ - Memo5->ClearSelection(); -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::SpeedButton12Click(TObject *Sender) -{ - Memo5->SelectAll(); -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::GetMainRoot() -{ - - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - AnsiString command; - - CleanGrid(); - CleanGridI(); - TakeIP(); - - MySQLNode = DBView->Items->Add(NULL, mainroot.UpperCase()); - MySQLNode->ImageIndex = 0; - - if (!(res=mysql_list_dbs(MySQL,"%"))) { return false; } - while ((row=mysql_fetch_row(res)) != 0) { - mysql_field_seek(res,0); - - for (i=0 ; i < mysql_num_fields(res); i++) - { - MySQLDbs = DBView->Items->AddChild(MySQLNode, row[i]); - MySQLDbs->ImageIndex = 1; - MySQLDbs->SelectedIndex = 1; - - - } - - } - - mysql_free_result(res); - MySQLNode->Expanded = true; - - - - - IsMySQLNode = true; - return true; - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::DeleteDatabaseSClick(TObject *Sender) -{ - AnsiString alert; - if (IsConnect) - { - if(DBView->Selected == MySQLNode ) - Application->MessageBox("Invalid database row selected.", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - else if ( DBView->Selected == NULL ) - Application->MessageBox("Invalid database row selected.", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - else - { - if (DBView->Selected->Text.UpperCase() == "MYSQL") - Application->MessageBox("You cann't use this tool to drop the MySQL Database.", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - else { - alert = "Are you sure to drop the < "; - alert+= DBView->Selected->Text.c_str(); - alert+= " > database."; - if(Application->MessageBox(alert.c_str(), "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - char* lese = DBView->Selected->Text.c_str(); - if (!mysql_drop_db(MySQL, lese )) - { - DBView->Items->Clear(); - GetMainRoot(); - } - else - Application->MessageBox("Fails to drop the Database.", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - } - } - } - } - else - Application->MessageBox("The Server must be connected", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); -} -//--------------------------------------------------------------------------- - bool __fastcall TForm1::IsDatabase(String Name) -{ - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - AnsiString command; - - - CleanTree(); - command = "use "; - command+= Name.c_str(); - char* das = command.c_str(); - char* lis = Name.c_str(); - if (mysql_query(MySQL, das ) || - !(res=mysql_list_tables(MySQL,"%"))) - return false; - - MySQLNodeT = TableView->Items->Add(NULL, lis); - MySQLNodeT->ImageIndex = 1; - MySQLNodeT->SelectedIndex = 1; - while ((row=mysql_fetch_row(res)) != 0) { - mysql_field_seek(res,0); - - for (i=0 ; i < mysql_num_fields(res); i++) - { - - MySQLTbs = TableView->Items->AddChild(MySQLNodeT, row[i]); - MySQLTbs->ImageIndex = 2; - MySQLTbs->SelectedIndex = 2; - } - MySQLNodeT->Expanded = true; - } - mysql_free_result(res); - return true; -} -//--------------------------------------------------------------------------- - - -void __fastcall TForm1::DBViewClick(TObject *Sender) -{ - - if (IsConnect) - { - if (DBView->Selected != MySQLNode && DBView->Selected != NULL ) - { - IsDatabase(DBView->Selected->Text); - - } - else - { - CleanTree(); - } - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::TableViewClick(TObject *Sender) -{ - if (IsConnect) - { - if (DBView->Selected != MySQLNodeT ) - { - IsTable(TableView->Selected->Text); - IsIndex(TableView->Selected->Text); - - } - else - { - CleanGrid(); - CleanGridI(); - - } - } -} -//--------------------------------------------------------------------------- - bool __fastcall TForm1::IsTable(String Name) -{ - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - int k = 0; - int therow = 1; - new_line=1; - AnsiString command; - AnsiString commandt; - - CleanGrid(); - CleanGridI(); - command = "use "; - command+= DBView->Selected->Text.c_str(); - char* las = command.c_str(); - - commandt = "desc "; - commandt+= Name.c_str(); - char* les = commandt.c_str(); - - if (mysql_query(MySQL, las )) - return false; - - if (mysql_query(MySQL, les ) || - !(res=mysql_store_result(MySQL))) - return false ; - - StringGrid4->Cells[0][0] = "Field"; - StringGrid4->Cells[1][0] = "Type"; - StringGrid4->Cells[2][0] = "Null"; - StringGrid4->Cells[3][0] = "Key"; - StringGrid4->Cells[4][0] = "Default"; - StringGrid4->Cells[5][0] = "Extra"; - StringGrid4->Cells[6][0] = "Previleges"; - - - int thecounter; - String u = GetNumberServer(); - if ( u == "3.22") - { - StringGrid3->ColCount = 7; - thecounter = 4; - } - else - thecounter = 5; - - while ((row=mysql_fetch_row(res)) != 0) - { - mysql_field_seek(res,0); - - for (i=0 ; i < mysql_num_fields(res); i++) - { - if (k <= thecounter ) - { - StringGrid4->Cells[k][therow] = row[i]; - k++; - } - else - { - StringGrid4->Cells[(k)][therow] = row[i]; - k = 0; - therow++ ; - StringGrid4->RowCount++; - } - } - - } - StringGrid4->RowCount--; - mysql_free_result(res); - return true; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::TableViewChange(TObject *Sender, TTreeNode *Node) -{ -if (IsConnect) - { - if (DBView->Selected != MySQLNodeT ) - { - IsTable(TableView->Selected->Text); - IsIndex(TableView->Selected->Text); - - } - else - { - CleanGrid(); - CleanGridI(); - - } - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::DBViewChange(TObject *Sender, TTreeNode *Node) -{ - if (IsConnect) - { - if (DBView->Selected != MySQLNode ) - { - IsDatabase(DBView->Selected->Text); - - } - else - { - CleanTree(); - } - } - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::RefreshSClick(TObject *Sender) -{ - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - AnsiString command; - - if (IsConnect) - { - IsMySQLNode = false; - CleanTree(); - DBView->Items->Clear(); - - TakeIP(); - - MySQLNode = DBView->Items->Add(NULL, mainroot.UpperCase()); - MySQLNode->ImageIndex = 0; - - if (!(res=mysql_list_dbs(MySQL,"%"))) { /*do nothing;*/ } - while ((row=mysql_fetch_row(res)) != 0) { - mysql_field_seek(res,0); - - for (i=0 ; i < mysql_num_fields(res); i++) - { - MySQLDbs = DBView->Items->AddChild(MySQLNode, row[i]); - MySQLDbs->ImageIndex = 1; - MySQLDbs->SelectedIndex = 1; - - } - - } - - mysql_free_result(res); - - IsMySQLNode = true; - - MySQLNode->Expanded = true; - - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::CreateDatabaseSClick(TObject *Sender) -{ - - if (IsConnect) - { - dbfrm->Show(); - - } - else - ShowMessage("Precisa estar conectado"); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::CleanTree(void) -{ - StringGrid4->RowCount= 2; - StringGrid4->Cells[0][1] = ""; - StringGrid4->Cells[1][1] = ""; - StringGrid4->Cells[2][1] = ""; - StringGrid4->Cells[3][1] = ""; - StringGrid4->Cells[4][1] = ""; - StringGrid4->Cells[5][1] = ""; - TableView->Items->Clear(); - -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::CleanGrid(void) -{ - StringGrid4->RowCount= 2; - StringGrid4->Cells[0][1] = ""; - StringGrid4->Cells[1][1] = ""; - StringGrid4->Cells[2][1] = ""; - StringGrid4->Cells[3][1] = ""; - StringGrid4->Cells[4][1] = ""; - StringGrid4->Cells[5][1] = ""; -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::CreatingDB() -{ - - if (mysql_create_db(MySQL, dbfrm->Edit1->Text.c_str())) - return true; - else - return false; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::OutRefresh(void) -{ - RefreshSClick(dbfrm->SpeedButton1); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::FlushHosts1Click(TObject *Sender) -{ - if (IsConnect) - { - if (mysql_refresh(MySQL,REFRESH_HOSTS)) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::FlushLogs1Click(TObject *Sender) -{ - if (IsConnect) - { - if (mysql_refresh(MySQL,REFRESH_LOG)) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::FlushTables1Click(TObject *Sender) -{ - if (IsConnect) - { - if (mysql_refresh(MySQL,REFRESH_TABLES)) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- - bool __fastcall TForm1::IsIndex(String Name) -{ - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - int k = 0; - int therow = 1; - new_line=1; - AnsiString command; - AnsiString commandt; - i = 0; - CleanGridI(); - command = "use "; - command+= DBView->Selected->Text.c_str(); - char* las = command.c_str(); - - commandt = "show index from "; - commandt+= Name.c_str(); - char* les = commandt.c_str(); - - if (mysql_query(MySQL, las )) - return false; - - if (mysql_query(MySQL, les ) || - !(res=mysql_store_result(MySQL))) - return false ; - - StringGrid3->RowCount= 2; - StringGrid3->Cells[0][0] = "Table"; - StringGrid3->Cells[1][0] = "Non_unique"; - StringGrid3->Cells[2][0] = "Key_name"; - StringGrid3->Cells[3][0] = "Seq_in_index"; - StringGrid3->Cells[4][0] = "Col_name"; - StringGrid3->Cells[5][0] = "Collation"; - StringGrid3->Cells[6][0] = "Card."; - StringGrid3->Cells[7][0] = "Sub_part"; - StringGrid3->Cells[8][0] = "Packed"; - StringGrid3->Cells[9][0] = "Comment"; - - int thecounter; - String u = GetNumberServer(); - - if ( u == "3.22") - { - StringGrid3->ColCount = 8; - thecounter = 6; - } - else - thecounter = 8; - while ((row=mysql_fetch_row(res)) != 0) - { - mysql_field_seek(res,0); - - for (i=0 ; i < mysql_num_fields(res); i++) - { - if (k <= thecounter ) - { - StringGrid3->Cells[k][therow] = row[i]; - k++; - } - else - { - StringGrid3->Cells[(k)][therow] = row[i]; - k = 0; - therow++ ; - StringGrid3->RowCount++; - } - } - - } - if (i) - StringGrid3->RowCount--; - mysql_free_result(res); - return true; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::CleanGridI(void) -{ - StringGrid3->RowCount= 2; - StringGrid3->Cells[0][1] = ""; - StringGrid3->Cells[1][1] = ""; - StringGrid3->Cells[2][1] = ""; - StringGrid3->Cells[3][1] = ""; - StringGrid3->Cells[4][1] = ""; - StringGrid3->Cells[5][1] = ""; - StringGrid3->Cells[6][1] = ""; - StringGrid3->Cells[7][1] = ""; -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::CreatingTable(String TheTable) -{ - - if (!mysql_query(MySQL, TheTable.c_str())) - return true; - else - return false; -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::GetExtendedStatus() -{ - if (!ya && !preport) - return true; - - MYSQL_RES *res; - MYSQL_ROW row; - unsigned int i; - int k = 1; - new_line=1; - bool left = true; - bool open_tables = false; - bool open_files = false; - bool uptime = false; - bool running_threads = false; - bool open_streams = false; - bool slow_queries = false; - bool opened_tables = false; - bool questions = false; - - AnsiString report; - if (yy) - StringGrid5->RowCount = 2; - - if (mysql_query(MySQL,"show status") || - !(res=mysql_store_result(MySQL))) - { - return false; - } - - while ((row=mysql_fetch_row(res)) != 0) - { - mysql_field_seek(res,0); - - StringGrid5->Cells[0][0] = "Variable Name"; - StringGrid5->Cells[1][0] = "Value"; - - - for (i=0 ; i < mysql_num_fields(res); i++) - { - - if (left) - { - if (preport) - report = GetString(row[i]); - if ( (String) row[i] == "Open_tables") - open_tables = true; - else - open_tables = false; - if ( (String) row[i] == "Open_files") - open_files = true; - else - open_files = false; - if ((String) row[i] == "Uptime") - uptime = true; - else - uptime = false; - - if ( (String) row[i] == "Opened_tables") - opened_tables = true; - else - opened_tables = false; - - if ( (String) row[i] == "Threads_running" || (String) row[i] == "Running_threads") - running_threads = true; - else - running_threads = false; - - if ( (String) row[i] == "Open_streams") - open_streams = true; - else - open_streams = false; - - if ( (String) row[i] == "Slow_queries") - slow_queries = true; - else - slow_queries = false; - - if ( (String) row[i] == "Questions") - questions = true; - else - questions = false; - - if (yy) - StringGrid5->Cells[0][k++] = row[i]; - - left = false; - } - else - { - if (preport) - Memo5->Lines->Add(report + row[i]); - if (open_tables) - st22->Text = row[i]; - if (open_files) - st23->Text = row[i]; - if (uptime) - nice_time(row[i]); - if (running_threads) - st27->Text = row[i]; - if (open_streams) - st24->Text = row[i]; - if (slow_queries) - st28->Text = row[i]; - if (opened_tables) - st25->Text = row[i]; - if (questions){ - q++; - st26->Text = StrToInt64(row[i]) - q; } - - if (yy){ - StringGrid5->RowCount++; - StringGrid5->Cells[1][--k] = row[i]; - k++; } - - left = true; - } - - } - - } - - - if (rinit) - StringGrid5->RowCount--; - mysql_free_result(res); - yy = false; - return true; -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::SpeedButton13Click(TObject *Sender) -{ - yy = true; - // rinit = true; -} -//--------------------------------------------------------------------------- -String __fastcall TForm1::GetNumberServer() -{ - String TheVersion; - - TheVersion = mysql_get_server_info(MySQL) ; - TheVersion.SetLength(4); - return TheVersion; - - -} - -//--------------------------------------------------------------------------- -void __fastcall TForm1::KillProcess1Click(TObject *Sender) -{ - - if (IsConnect) - KillPID(); - else - Application->MessageBox("The Server must be connected", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); -} -//--------------------------------------------------------------------------- -bool __fastcall TForm1::KillPID() -{ - String s = "Are you sure to kill the process PID no. "; - s+= StringGrid2->Cells[0][StringGrid2->Row]; - s+= " of the USER "; - s+= StringGrid2->Cells[1][StringGrid2->Row]; - unsigned long xx = mysql_thread_id(MySQL); - unsigned long yy = StrToInt(StringGrid2->Cells[0][StringGrid2->Row]); - if ( xx != yy) - { - if(Application->MessageBox(s.c_str(), "WinMySQLadmin 1.0", MB_YESNOCANCEL | MB_ICONQUESTION ) == IDYES) - { - if (!mysql_kill(MySQL,yy)) - { - GetProcess(); - return true; - } - } - } - else - { - Application->MessageBox("From here you can't kill the PID of this tool", "WinMySQLadmin 1.0", MB_OK | MB_ICONEXCLAMATION); - return true; - } - return true; -} -void __fastcall TForm1::FlushThreads1Click(TObject *Sender) -{ - if (IsConnect) - { - if (mysql_refresh(MySQL,REFRESH_THREADS)) - StatusLine->SimpleText = ""; - } -} -//--------------------------------------------------------------------------- - diff --git a/VC++Files/winmysqladmin/main.h b/VC++Files/winmysqladmin/main.h deleted file mode 100644 index dcb8ad60d7b..00000000000 --- a/VC++Files/winmysqladmin/main.h +++ /dev/null @@ -1,314 +0,0 @@ -//--------------------------------------------------------------------------- -#ifndef mainH -#define mainH -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define MYWM_NOTIFY (WM_APP+100) -#define IDC_MYICON 1006 -extern HINSTANCE g_hinst; -LRESULT IconDrawItem(LPDRAWITEMSTRUCT lpdi); -//--------------------------------------------------------------------------- -class TForm1 : public TForm -{ -__published: // IDE-managed Components - TStatusBar *StatusLine; - TPanel *Panel1; - TImage *Image1; - TLabel *Label1; - TLabel *Label2; - TLabel *Label3; - TLabel *Label8; - TImage *Image3; - TImage *Image2; - TPageControl *PageControl1; - TTabSheet *TabSheet1; - TSpeedButton *SpeedButton1; - TGroupBox *GroupBox1; - TLabel *Label4; - TLabel *Label5; - TLabel *Label6; - TLabel *Label14; - TLabel *Label17; - TEdit *Localhost; - TEdit *Localuser; - TEdit *OS; - TMemo *Memo2; - TEdit *Edit2; - TGroupBox *GroupBox2; - TMemo *Memo3; - TGroupBox *GroupBox3; - TLabel *Label13; - TLabel *Label15; - TLabel *Label16; - TLabel *Label7; - TLabel *Label47; - TLabel *Label44; - TLabel *Label42; - TLabel *Label45; - TEdit *Edit3; - TEdit *Edit4; - TEdit *Edit5; - TEdit *Edit6; - TEdit *st29; - TEdit *st27; - TEdit *st25; - TEdit *st28; - TTabSheet *TabSheet2; - TTabSheet *TabSheet3; - TLabel *Label18; - TSpeedButton *SpeedButton2; - TEdit *BaseDir; - TMemo *Memo1; - TRadioGroup *RadioGroup1; - TRadioButton *ShareVer; - TRadioButton *MysqldVer; - TRadioButton *OptVer; - TRadioButton *NtVer; - TButton *Button2; - TButton *Button3; - TButton *Button1; - TTabSheet *TabSheet4; - TMemo *Memo4; - TButton *Button5; - TTabSheet *TabSheet5; - TStringGrid *StringGrid1; - TButton *Button11; - TTabSheet *TabSheet6; - TStringGrid *StringGrid2; - TButton *Button10; - TPopupMenu *PopupMenu1; - TMenuItem *Showme1; - TMenuItem *N1; - TMenuItem *Win9; - TMenuItem *Swin9; - TMenuItem *N3; - TMenuItem *SSW9; - TMenuItem *N4; - TMenuItem *ShutDownBoth1; - TMenuItem *N2; - TMenuItem *WinNT; - TMenuItem *ShutDownthisTool1; - TMenuItem *N5; - TMenuItem *StopS; - TMenuItem *N6; - TMenuItem *RService; - TMenuItem *N7; - TMenuItem *Standa; - TImageList *ImageList1; - TTimer *Timer1; - TTimer *Timer2; - TTimer *Timer3; - TSpeedButton *SpeedButton3; - TSpeedButton *Extended; - TLabel *Label9; - TEdit *st26; - TLabel *Label43; - TEdit *st24; - TLabel *Label41; - TEdit *st23; - TLabel *Label40; - TEdit *st22; - TLabel *Label39; - TTabSheet *TabSheet8; - TSaveDialog *SaveFileDialog; - TPrinterSetupDialog *PrinterSetupDialog1; - TPrintDialog *PrintDialog1; - TRichEdit *Memo5; - TGroupBox *GroupBox5; - TSpeedButton *SpeedButton4; - TSpeedButton *SpeedButton5; - TSpeedButton *SpeedButton7; - TSpeedButton *SpeedButton6; - TGroupBox *GroupBox6; - TSpeedButton *SpeedButton8; - TSpeedButton *SpeedButton9; - TSpeedButton *SpeedButton10; - TSpeedButton *SpeedButton11; - TSpeedButton *SpeedButton12; - TTabSheet *TabSheet9; - TImageList *ImageList2; - TPopupMenu *PopupMenu2; - TMenuItem *CreateDatabaseS; - TMenuItem *DeleteDatabaseS; - TMenuItem *RefreshS; - TMenuItem *N8; - TMenuItem *N9; - TMenuItem *N10; - TGroupBox *GroupBox7; - TTreeView *DBView; - TGroupBox *GroupBox8; - TTreeView *TableView; - TGroupBox *GroupBox9; - TStringGrid *StringGrid4; - TMenuItem *FlushHosts1; - TMenuItem *N11; - TMenuItem *FlushLogs1; - TMenuItem *N12; - TMenuItem *FlushTables1; - TGroupBox *GroupBox10; - TStringGrid *StringGrid3; - TImage *Image5; - TStringGrid *StringGrid5; - TSpeedButton *SpeedButton13; - TPopupMenu *PopupMenu4; - TMenuItem *KillProcess1; - TMenuItem *N13; - TMenuItem *FlushThreads1; - void __fastcall FormCreate(TObject *Sender); - void __fastcall Showme1Click(TObject *Sender); - void __fastcall Timer1Timer(TObject *Sender); - void __fastcall SpeedButton1Click(TObject *Sender); - void __fastcall Timer2Timer(TObject *Sender); - void __fastcall Swin9Click(TObject *Sender); - void __fastcall SSW9Click(TObject *Sender); - void __fastcall ShutDownBoth1Click(TObject *Sender); - void __fastcall ShutDownthisTool1Click(TObject *Sender); - void __fastcall StopSClick(TObject *Sender); - void __fastcall RServiceClick(TObject *Sender); - void __fastcall StandaClick(TObject *Sender); - void __fastcall Button5Click(TObject *Sender); - void __fastcall Timer3Timer(TObject *Sender); - void __fastcall Button11Click(TObject *Sender); - void __fastcall Button10Click(TObject *Sender); - void __fastcall Button6Click(TObject *Sender); - void __fastcall Button7Click(TObject *Sender); - void __fastcall Button8Click(TObject *Sender); - - void __fastcall Button2Click(TObject *Sender); - void __fastcall Button3Click(TObject *Sender); - void __fastcall Button1Click(TObject *Sender); - void __fastcall SpeedButton2Click(TObject *Sender); - void __fastcall Button4Click(TObject *Sender); - void __fastcall SpeedButton3Click(TObject *Sender); - void __fastcall ExtendedClick(TObject *Sender); - void __fastcall SpeedButton4Click(TObject *Sender); - void __fastcall SpeedButton5Click(TObject *Sender); - void __fastcall SpeedButton6Click(TObject *Sender); - void __fastcall SpeedButton7Click(TObject *Sender); - void __fastcall SpeedButton8Click(TObject *Sender); - void __fastcall SpeedButton9Click(TObject *Sender); - void __fastcall SpeedButton10Click(TObject *Sender); - void __fastcall SpeedButton11Click(TObject *Sender); - void __fastcall SpeedButton12Click(TObject *Sender); - void __fastcall DeleteDatabaseSClick(TObject *Sender); - void __fastcall DBViewClick(TObject *Sender); - void __fastcall TableViewClick(TObject *Sender); - void __fastcall TableViewChange(TObject *Sender, TTreeNode *Node); - void __fastcall DBViewChange(TObject *Sender, TTreeNode *Node); - - void __fastcall RefreshSClick(TObject *Sender); - void __fastcall CreateDatabaseSClick(TObject *Sender); - void __fastcall FlushHosts1Click(TObject *Sender); - void __fastcall FlushLogs1Click(TObject *Sender); - void __fastcall FlushTables1Click(TObject *Sender); - void __fastcall SpeedButton13Click(TObject *Sender); - void __fastcall KillProcess1Click(TObject *Sender); - void __fastcall FlushThreads1Click(TObject *Sender); - - - - - - - -private: // User declarations - void __fastcall DrawItem(TMessage& Msg); - void __fastcall MyNotify(TMessage& Msg); - bool __fastcall TrayMessage(DWORD dwMessage); - HANDLE __fastcall IconHandle(void); - void __fastcall ToggleState(void); - PSTR __fastcall TipText(void); - void __fastcall WMQueryEndSession(TWMQueryEndSession &msg); - AnsiString __fastcall TheComputer(); - AnsiString __fastcall TheUser(); - AnsiString __fastcall TheOS(); - void __fastcall TakeIP(void); - void __fastcall GetmemStatus(void); - void __fastcall ShowHelp(void); - void __fastcall ContinueLoad(void); - void __fastcall MyODBC(void); - void __fastcall IsMyIniUp(void); - void __fastcall QuickSearch(void); - AnsiString __fastcall TheWinDir(); - void __fastcall FillMyIni(void); - void __fastcall GetBaseDir(void); - bool __fastcall MySQLSignal(); - bool __fastcall mysqldstart(); - bool __fastcall SeekErrFile(); - AnsiString __fastcall TheDir(); - bool __fastcall TheServiceStart(); - bool __fastcall TheServicePause(); - bool __fastcall TheServiceResume(); - bool __fastcall TheServiceStatus(); - bool __fastcall TheServiceCreate(); - bool __fastcall TheServiceRemove(); - bool __fastcall Shutd(); - void __fastcall ClearBox(void); - bool __fastcall TheServerPath(); - void __fastcall GetServerOptions(void); - void __fastcall GetReportServer(void); - - - TFileStream *MyFile; - String FName; - - void __fastcall IsMySQLInit(void); - void __fastcall GetServerStatus(void); - bool __fastcall GetExtendedStatus(); - bool __fastcall GetProcess(); - bool __fastcall GetVariables(); - bool __fastcall nice_time(AnsiString buff); - String __fastcall GetString(String k); - String __fastcall GetNumberServer(); - // pointers for database screen - TTreeNode *MySQLNode, *MySQLDbs, *MySQLNodeT, *MySQLTbs; - - bool __fastcall GetMainRoot(); - bool __fastcall IsDatabase(String Name); - bool __fastcall IsTable(String Name); - void __fastcall CleanTree(void); - void __fastcall CleanGrid(void); - bool __fastcall IsIndex(String Name); - void __fastcall CleanGridI(void); - bool __fastcall KillPID(); - - - -public: // User declarations - __fastcall TForm1(TComponent* Owner); - void __fastcall GetServerFile(void); - void __fastcall CreateMyIniFile(void); - bool __fastcall CreatingShortCut(); - bool __fastcall CreatingDB(); - void __fastcall OutRefresh(void); - bool __fastcall CreatingTable(String TheTable); - - bool IsConnect ; - - - - STARTUPINFO si; - PROCESS_INFORMATION pi; - BEGIN_MESSAGE_MAP - MESSAGE_HANDLER(WM_DRAWITEM,TMessage,DrawItem) - MESSAGE_HANDLER(MYWM_NOTIFY,TMessage,MyNotify) - MESSAGE_HANDLER(WM_QUERYENDSESSION,TWMQueryEndSession,WMQueryEndSession) - END_MESSAGE_MAP(TForm) -}; -//--------------------------------------------------------------------------- -extern PACKAGE TForm1 *Form1; -//--------------------------------------------------------------------------- -#endif diff --git a/VC++Files/winmysqladmin/mysql.h b/VC++Files/winmysqladmin/mysql.h deleted file mode 100644 index 734d78efea0..00000000000 --- a/VC++Files/winmysqladmin/mysql.h +++ /dev/null @@ -1,295 +0,0 @@ -/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult 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., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA */ - -/* defines for the libmysql library */ - -#ifndef _mysql_h -#define _mysql_h - -#ifndef MYSQL_SERVER -#ifdef __cplusplus -extern "C" { -#endif -#endif - -#ifndef _global_h /* If not standard header */ -#include -typedef char my_bool; -#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__) -#define __WIN__ -#endif -#if !defined(__WIN__) -#define STDCALL -#else -#define STDCALL __stdcall -#endif -typedef char * gptr; - -#ifndef ST_USED_MEM_DEFINED -#define ST_USED_MEM_DEFINED -typedef struct st_used_mem { /* struct for once_alloc */ - struct st_used_mem *next; /* Next block in use */ - unsigned int left; /* memory left in block */ - unsigned int size; /* size of block */ -} USED_MEM; -typedef struct st_mem_root { - USED_MEM *free; - USED_MEM *used; - unsigned int min_malloc; - unsigned int block_size; - void (*error_handler)(void); -} MEM_ROOT; -#endif - -#ifndef my_socket_defined -#ifdef __WIN__ -#define my_socket SOCKET -#else -typedef int my_socket; -#endif -#endif -#endif -#include "mysql_com.h" -#include "mysql_version.h" - -extern unsigned int mysql_port; -extern char *mysql_unix_port; - -#define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG) -#define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG) -#define IS_BLOB(n) ((n) & BLOB_FLAG) -#define IS_NUM(t) ((t) <= FIELD_TYPE_INT24 || (t) == FIELD_TYPE_YEAR) - -typedef struct st_mysql_field { - char *name; /* Name of column */ - char *table; /* Table of column if column was a field */ - char *def; /* Default value (set by mysql_list_fields) */ - enum enum_field_types type; /* Type of field. Se mysql_com.h for types */ - unsigned int length; /* Width of column */ - unsigned int max_length; /* Max width of selected set */ - unsigned int flags; /* Div flags */ - unsigned int decimals; /* Number of decimals in field */ -} MYSQL_FIELD; - -typedef char **MYSQL_ROW; /* return data as array of strings */ -typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */ - -#if defined(NO_CLIENT_LONG_LONG) -typedef unsigned long my_ulonglong; -#elif defined (__WIN__) -typedef unsigned __int64 my_ulonglong; -#else -typedef unsigned long long my_ulonglong; -#endif - -#define MYSQL_COUNT_ERROR (~(my_ulonglong) 0) - -typedef struct st_mysql_rows { - struct st_mysql_rows *next; /* list of rows */ - MYSQL_ROW data; -} MYSQL_ROWS; - -typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */ - -typedef struct st_mysql_data { - my_ulonglong rows; - unsigned int fields; - MYSQL_ROWS *data; - MEM_ROOT alloc; -} MYSQL_DATA; - -struct st_mysql_options { - unsigned int connect_timeout,client_flag; - my_bool compress,named_pipe; - unsigned int port; - char *host,*init_command,*user,*password,*unix_socket,*db; - char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name; - my_bool use_ssl; /* if to use SSL or not */ - char *ssl_key; /* PEM key file */ - char *ssl_cert; /* PEM cert file */ - char *ssl_ca; /* PEM CA file */ - char *ssl_capath; /* PEM directory of CA-s? */ -}; - -enum mysql_option { MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, - MYSQL_OPT_NAMED_PIPE, MYSQL_INIT_COMMAND, - MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP, - MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME}; - -enum mysql_status { MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT, - MYSQL_STATUS_USE_RESULT}; - -typedef struct st_mysql { - NET net; /* Communication parameters */ - gptr connector_fd; /* ConnectorFd for SSL */ - char *host,*user,*passwd,*unix_socket,*server_version,*host_info, - *info,*db; - unsigned int port,client_flag,server_capabilities; - unsigned int protocol_version; - unsigned int field_count; - unsigned int server_status; - unsigned long thread_id; /* Id for connection in server */ - my_ulonglong affected_rows; - my_ulonglong insert_id; /* id if insert on table with NEXTNR */ - my_ulonglong extra_info; /* Not used */ - unsigned long packet_length; - enum mysql_status status; - MYSQL_FIELD *fields; - MEM_ROOT field_alloc; - my_bool free_me; /* If free in mysql_close */ - my_bool reconnect; /* set to 1 if automatic reconnect */ - struct st_mysql_options options; - char scramble_buff[9]; - struct charset_info_st *charset; - unsigned int server_language; -} MYSQL; - - -typedef struct st_mysql_res { - my_ulonglong row_count; - unsigned int field_count, current_field; - MYSQL_FIELD *fields; - MYSQL_DATA *data; - MYSQL_ROWS *data_cursor; - MEM_ROOT field_alloc; - MYSQL_ROW row; /* If unbuffered read */ - MYSQL_ROW current_row; /* buffer to current row */ - unsigned long *lengths; /* column lengths of current row */ - MYSQL *handle; /* for unbuffered reads */ - my_bool eof; /* Used my mysql_fetch_row */ -} MYSQL_RES; - -/* Functions to get information from the MYSQL and MYSQL_RES structures */ -/* Should definitely be used if one uses shared libraries */ - -my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res); -unsigned int STDCALL mysql_num_fields(MYSQL_RES *res); -my_bool STDCALL mysql_eof(MYSQL_RES *res); -MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res, - unsigned int fieldnr); -MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res); -MYSQL_ROWS * STDCALL mysql_row_tell(MYSQL_RES *res); -unsigned int STDCALL mysql_field_tell(MYSQL_RES *res); - -unsigned int STDCALL mysql_field_count(MYSQL *mysql); -my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql); -my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql); -unsigned int STDCALL mysql_errno(MYSQL *mysql); -char * STDCALL mysql_error(MYSQL *mysql); -char * STDCALL mysql_info(MYSQL *mysql); -unsigned long STDCALL mysql_thread_id(MYSQL *mysql); -const char * STDCALL mysql_character_set_name(MYSQL *mysql); - -MYSQL * STDCALL mysql_init(MYSQL *mysql); -#ifdef HAVE_OPENSSL -int STDCALL mysql_ssl_set(MYSQL *mysql, const char *key, - const char *cert, const char *ca, - const char *capath); -char * STDCALL mysql_ssl_cipher(MYSQL *mysql); -int STDCALL mysql_ssl_clear(MYSQL *mysql); -#endif /* HAVE_OPENSSL */ -MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char *host, - const char *user, const char *passwd); -my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user, - const char *passwd, const char *db); -#if MYSQL_VERSION_ID >= 32200 -MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, - const char *user, - const char *passwd, - const char *db, - unsigned int port, - const char *unix_socket, - unsigned int clientflag); -#else -MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, - const char *user, - const char *passwd, - unsigned int port, - const char *unix_socket, - unsigned int clientflag); -#endif -void STDCALL mysql_close(MYSQL *sock); -int STDCALL mysql_select_db(MYSQL *mysql, const char *db); -int STDCALL mysql_query(MYSQL *mysql, const char *q); -int STDCALL mysql_real_query(MYSQL *mysql, const char *q, - unsigned int length); -int STDCALL mysql_create_db(MYSQL *mysql, const char *DB); -int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB); -int STDCALL mysql_shutdown(MYSQL *mysql, - enum enum_shutdown_level - shutdown_level); -int STDCALL mysql_dump_debug_info(MYSQL *mysql); -int STDCALL mysql_refresh(MYSQL *mysql, - unsigned int refresh_options); -int STDCALL mysql_kill(MYSQL *mysql,unsigned long pid); -int STDCALL mysql_ping(MYSQL *mysql); -char * STDCALL mysql_stat(MYSQL *mysql); -char * STDCALL mysql_get_server_info(MYSQL *mysql); -char * STDCALL mysql_get_client_info(void); -char * STDCALL mysql_get_host_info(MYSQL *mysql); -unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql); -MYSQL_RES * STDCALL mysql_list_dbs(MYSQL *mysql,const char *wild); -MYSQL_RES * STDCALL mysql_list_tables(MYSQL *mysql,const char *wild); -MYSQL_RES * STDCALL mysql_list_fields(MYSQL *mysql, const char *table, - const char *wild); -MYSQL_RES * STDCALL mysql_list_processes(MYSQL *mysql); -MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql); -MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql); -int STDCALL mysql_options(MYSQL *mysql,enum mysql_option option, - const char *arg); -void STDCALL mysql_free_result(MYSQL_RES *result); -void STDCALL mysql_data_seek(MYSQL_RES *result, - my_ulonglong offset); -MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET); -MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES *result, - MYSQL_FIELD_OFFSET offset); -MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result); -unsigned long * STDCALL mysql_fetch_lengths(MYSQL_RES *result); -MYSQL_FIELD * STDCALL mysql_fetch_field(MYSQL_RES *result); -unsigned long STDCALL mysql_escape_string(char *to,const char *from, - unsigned long from_length); -unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql, - char *to,const char *from, - unsigned long length); -void STDCALL mysql_debug(const char *debug); -char * STDCALL mysql_odbc_escape_string(MYSQL *mysql, - char *to, - unsigned long to_length, - const char *from, - unsigned long from_length, - void *param, - char * - (*extend_buffer) - (void *, char *to, - unsigned long *length)); -void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name); -unsigned int STDCALL mysql_thread_safe(void); - - -#define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT) - -/* new api functions */ - -#define HAVE_MYSQL_REAL_CONNECT - -#ifndef MYSQL_SERVER -#ifdef __cplusplus -} -#endif -#endif - -#endif diff --git a/VC++Files/winmysqladmin/mysql_com.h b/VC++Files/winmysqladmin/mysql_com.h deleted file mode 100644 index 2a7eb57d745..00000000000 --- a/VC++Files/winmysqladmin/mysql_com.h +++ /dev/null @@ -1,275 +0,0 @@ -/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult 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., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA */ - -/* -** Common definition between mysql server & client -*/ - -#ifndef _mysql_com_h -#define _mysql_com_h - - -#define NAME_LEN 64 /* Field/table name length */ -#define HOSTNAME_LENGTH 60 -#define USERNAME_LENGTH 16 - -#define LOCAL_HOST "localhost" -#define LOCAL_HOST_NAMEDPIPE "." - -#if defined(__EMX__) || defined(__OS2__) -#undef MYSQL_UNIX_ADDR -#define MYSQL_OS2_ADDR "\\socket\\MySQL" -#define MYSQL_UNIX_ADDR MYSQL_OS2_ADDR -#endif -#if defined(__WIN__) && !defined( _CUSTOMCONFIG_) -#define MYSQL_NAMEDPIPE "MySQL" -#define MYSQL_SERVICENAME "MySql" -#endif /* __WIN__ */ - -enum enum_server_command {COM_SLEEP,COM_QUIT,COM_INIT_DB,COM_QUERY, - COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB,COM_REFRESH, - COM_SHUTDOWN,COM_STATISTICS, - COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL, - COM_DEBUG,COM_PING,COM_TIME,COM_DELAYED_INSERT, - COM_CHANGE_USER, COM_BINLOG_DUMP, - COM_TABLE_DUMP}; - -#define NOT_NULL_FLAG 1 /* Field can't be NULL */ -#define PRI_KEY_FLAG 2 /* Field is part of a primary key */ -#define UNIQUE_KEY_FLAG 4 /* Field is part of a unique key */ -#define MULTIPLE_KEY_FLAG 8 /* Field is part of a key */ -#define BLOB_FLAG 16 /* Field is a blob */ -#define UNSIGNED_FLAG 32 /* Field is unsigned */ -#define ZEROFILL_FLAG 64 /* Field is zerofill */ -#define BINARY_FLAG 128 -/* The following are only sent to new clients */ -#define ENUM_FLAG 256 /* field is an enum */ -#define AUTO_INCREMENT_FLAG 512 /* field is a autoincrement field */ -#define TIMESTAMP_FLAG 1024 /* Field is a timestamp */ -#define SET_FLAG 2048 /* field is a set */ -#define PART_KEY_FLAG 16384 /* Intern; Part of some key */ -#define GROUP_FLAG 32768 /* Intern: Group field */ -#define UNIQUE_FLAG 65536 /* Intern: Used by sql_yacc */ - -#define REFRESH_GRANT 1 /* Refresh grant tables */ -#define REFRESH_LOG 2 /* Start on new log file */ -#define REFRESH_TABLES 4 /* close all tables */ -#define REFRESH_HOSTS 8 /* Flush host cache */ -#define REFRESH_STATUS 16 /* Flush status variables */ -#define REFRESH_THREADS 32 /* Flush status variables */ -#define REFRESH_SLAVE 64 /* Reset master info and restart slave - thread */ -#define REFRESH_MASTER 128 /* Remove all bin logs in the index - and truncate the index */ - -/* The following can't be set with mysql_refresh() */ -#define REFRESH_READ_LOCK 16384 /* Lock tables for read */ -#define REFRESH_FAST 32768 /* Intern flag */ - -#define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */ -#define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */ -#define CLIENT_LONG_FLAG 4 /* Get all column flags */ -#define CLIENT_CONNECT_WITH_DB 8 /* One can specify db on connect */ -#define CLIENT_NO_SCHEMA 16 /* Don't allow database.table.column */ -#define CLIENT_COMPRESS 32 /* Can use compression protocol */ -#define CLIENT_ODBC 64 /* Odbc client */ -#define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */ -#define CLIENT_IGNORE_SPACE 256 /* Ignore spaces before '(' */ -#define CLIENT_CHANGE_USER 512 /* Support the mysql_change_user() */ -#define CLIENT_INTERACTIVE 1024 /* This is an interactive client */ -#define CLIENT_SSL 2048 /* Switch to SSL after handshake */ -#define CLIENT_IGNORE_SIGPIPE 4096 /* IGNORE sigpipes */ -#define CLIENT_TRANSACTIONS 8196 /* Client knows about transactions */ - -#define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */ -#define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */ - -#define MYSQL_ERRMSG_SIZE 200 -#define NET_READ_TIMEOUT 30 /* Timeout on read */ -#define NET_WRITE_TIMEOUT 60 /* Timeout on write */ -#define NET_WAIT_TIMEOUT 8*60*60 /* Wait for new query */ - -#ifndef Vio_defined -#define Vio_defined -#ifdef HAVE_VIO -class Vio; /* Fill Vio class in C++ */ -#else -struct st_vio; /* Only C */ -typedef struct st_vio Vio; -#endif -#endif - -typedef struct st_net { - Vio* vio; - my_socket fd; /* For Perl DBI/dbd */ - int fcntl; - unsigned char *buff,*buff_end,*write_pos,*read_pos; - char last_error[MYSQL_ERRMSG_SIZE]; - unsigned int last_errno,max_packet,timeout,pkt_nr; - unsigned char error; - my_bool return_errno,compress; - my_bool no_send_ok; /* needed if we are doing several - queries in one command ( as in LOAD TABLE ... FROM MASTER ), - and do not want to confuse the client with OK at the wrong time - */ - unsigned long remain_in_buf,length, buf_length, where_b; - unsigned int *return_status; - unsigned char reading_or_writing; - char save_char; -} NET; - -#define packet_error ((unsigned int) -1) - -enum enum_field_types { FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY, - FIELD_TYPE_SHORT, FIELD_TYPE_LONG, - FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE, - FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP, - FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24, - FIELD_TYPE_DATE, FIELD_TYPE_TIME, - FIELD_TYPE_DATETIME, FIELD_TYPE_YEAR, - FIELD_TYPE_NEWDATE, - FIELD_TYPE_ENUM=247, - FIELD_TYPE_SET=248, - FIELD_TYPE_TINY_BLOB=249, - FIELD_TYPE_MEDIUM_BLOB=250, - FIELD_TYPE_LONG_BLOB=251, - FIELD_TYPE_BLOB=252, - FIELD_TYPE_VAR_STRING=253, - FIELD_TYPE_STRING=254 -}; - -#define FIELD_TYPE_CHAR FIELD_TYPE_TINY /* For compability */ -#define FIELD_TYPE_INTERVAL FIELD_TYPE_ENUM /* For compability */ - - -/* Shutdown/kill enums and constants */ - -/* Bits for THD::killable. */ -#define MYSQL_SHUTDOWN_KILLABLE_CONNECT (unsigned char)(1 << 0) -#define MYSQL_SHUTDOWN_KILLABLE_TRANS (unsigned char)(1 << 1) -#define MYSQL_SHUTDOWN_KILLABLE_LOCK_TABLE (unsigned char)(1 << 2) -#define MYSQL_SHUTDOWN_KILLABLE_UPDATE (unsigned char)(1 << 3) - -enum mysql_enum_shutdown_level { - /* - We want levels to be in growing order of hardness (because we use number - comparisons). Note that DEFAULT does not respect the growing property, but - it's ok. - */ - DEFAULT= 0, - /* wait for existing connections to finish */ - WAIT_CONNECTIONS= MYSQL_SHUTDOWN_KILLABLE_CONNECT, - /* wait for existing trans to finish */ - WAIT_TRANSACTIONS= MYSQL_SHUTDOWN_KILLABLE_TRANS, - /* wait for existing updates to finish (=> no partial MyISAM update) */ - WAIT_UPDATES= MYSQL_SHUTDOWN_KILLABLE_UPDATE, - /* flush InnoDB buffers and other storage engines' buffers*/ - WAIT_ALL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1), - /* don't flush InnoDB buffers, flush other storage engines' buffers*/ - WAIT_CRITICAL_BUFFERS= (MYSQL_SHUTDOWN_KILLABLE_UPDATE << 1) + 1, - /* Now the 2 levels of the KILL command */ -#if MYSQL_VERSION_ID >= 50000 - KILL_QUERY= 254, -#endif - KILL_CONNECTION= 255 -}; - -extern unsigned long max_allowed_packet; -extern unsigned long net_buffer_length; - -#define net_new_transaction(net) ((net)->pkt_nr=0) - -int my_net_init(NET *net, Vio* vio); -void net_end(NET *net); -void net_clear(NET *net); -int net_flush(NET *net); -int my_net_write(NET *net,const char *packet,unsigned long len); -int net_write_command(NET *net,unsigned char command,const char *packet, - unsigned long len); -int net_real_write(NET *net,const char *packet,unsigned long len); -unsigned int my_net_read(NET *net); - -struct rand_struct { - unsigned long seed1,seed2,max_value; - double max_value_dbl; -}; - - /* The following is for user defined functions */ - -enum Item_result {STRING_RESULT,REAL_RESULT,INT_RESULT}; - -typedef struct st_udf_args -{ - unsigned int arg_count; /* Number of arguments */ - enum Item_result *arg_type; /* Pointer to item_results */ - char **args; /* Pointer to argument */ - unsigned long *lengths; /* Length of string arguments */ - char *maybe_null; /* Set to 1 for all maybe_null args */ -} UDF_ARGS; - - /* This holds information about the result */ - -typedef struct st_udf_init -{ - my_bool maybe_null; /* 1 if function can return NULL */ - unsigned int decimals; /* for real functions */ - unsigned int max_length; /* For string functions */ - char *ptr; /* free pointer for function data */ - my_bool const_item; /* 0 if result is independent of arguments */ -} UDF_INIT; - - /* Constants when using compression */ -#define NET_HEADER_SIZE 4 /* standard header size */ -#define COMP_HEADER_SIZE 3 /* compression header extra size */ - - /* Prototypes to password functions */ - -#ifdef __cplusplus -extern "C" { -#endif - -void randominit(struct rand_struct *,unsigned long seed1, - unsigned long seed2); -double rnd(struct rand_struct *); -void make_scrambled_password(char *to,const char *password); -void get_salt_from_password(unsigned long *res,const char *password); -void make_password_from_salt(char *to, unsigned long *hash_res); -char *scramble(char *to,const char *message,const char *password, - my_bool old_ver); -my_bool check_scramble(const char *, const char *message, - unsigned long *salt,my_bool old_ver); -char *get_tty_password(char *opt_message); -void hash_password(unsigned long *result, const char *password); -#ifdef __cplusplus -} -#endif - -/* Some other useful functions */ - -void my_init(void); -void load_defaults(const char *conf_file, const char **groups, - int *argc, char ***argv); - -#define NULL_LENGTH ((unsigned long) ~0) /* For net_store_length */ - -#ifdef __WIN__ -#define socket_errno WSAGetLastError() -#else -#define socket_errno errno -#endif - -#endif diff --git a/VC++Files/winmysqladmin/mysql_version.h b/VC++Files/winmysqladmin/mysql_version.h deleted file mode 100644 index 1f868704fe8..00000000000 --- a/VC++Files/winmysqladmin/mysql_version.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright Abandoned 1996,1999 TCX DataKonsult AB & Monty Program KB & Detron HB - This file is public domain and comes with NO WARRANTY of any kind */ - -/* Version numbers for protocol & mysqld */ - -#ifdef _CUSTOMCONFIG_ - #include -#else -#define PROTOCOL_VERSION 10 -#define MYSQL_SERVER_VERSION "3.23.22-beta" -#define FRM_VER 6 -#define MYSQL_VERSION_ID 32322 -#define MYSQL_PORT 3306 -#define MYSQL_UNIX_ADDR "/tmp/mysql.sock" - -/* mysqld compile time options */ -#ifndef MYSQL_CHARSET -#define MYSQL_CHARSET "latin1" -#endif -#endif diff --git a/VC++Files/winmysqladmin/winmysqladmin.cpp b/VC++Files/winmysqladmin/winmysqladmin.cpp deleted file mode 100644 index a4fbe590196..00000000000 --- a/VC++Files/winmysqladmin/winmysqladmin.cpp +++ /dev/null @@ -1,36 +0,0 @@ -//--------------------------------------------------------------------------- -#include -#pragma hdrstop -HINSTANCE g_hinst; -USERES("winmysqladmin.res"); -USEFORM("main.cpp", Form1); -USEFORM("initsetup.cpp", Form2); -USEFORM("db.cpp", dbfrm); -USELIB("lib\mysqlclient.lib"); -USELIB("lib\myisammrg.lib"); -USELIB("lib\heap.lib"); -USELIB("lib\myisam.lib"); -USELIB("lib\mysys.lib"); -USELIB("lib\regex.lib"); -USELIB("lib\strings.lib"); -USELIB("lib\zlib.lib"); -//--------------------------------------------------------------------------- -WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) -{ - try - { - Application->Initialize(); - Application->HelpFile = "C:\\mysql\\bin\\WINMYSQLADMIN.HLP"; - Application->Title = "WinMySQLadmin 1.0"; - Application->CreateForm(__classid(TForm1), &Form1); - Application->CreateForm(__classid(TForm2), &Form2); - Application->CreateForm(__classid(Tdbfrm), &dbfrm); - Application->Run(); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - return 0; -} -//--------------------------------------------------------------------------- From 6b964f0f102efb51c761091a4ee8f715604fb78a Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 11:53:16 -0500 Subject: [PATCH 12/22] BUG# 10687: MERGE Engine fails on Windows This is a replacement for the original patch given by Ingo. This one comes from Monty. The problem is that merge files now use unix style pathnames on all platforms. The merge file open code was not properly converting those pathnames back to non-unix when necessary. myisammrg/myrg_open.c: use fn_format to convert pathnames if the files in the merge file have a pathname mysys/my_getwd.c: add a test for '/' in the code that determines if a string inlucdes a pathname --- myisammrg/myrg_open.c | 4 +++- mysys/my_getwd.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/myisammrg/myrg_open.c b/myisammrg/myrg_open.c index 0dc2f4f9768..f9cdc2bb205 100644 --- a/myisammrg/myrg_open.c +++ b/myisammrg/myrg_open.c @@ -67,7 +67,7 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) while ((length=my_b_gets(&file,buff,FN_REFLEN-1))) { if ((end=buff+length)[-1] == '\n') - end[-1]='\0'; + *--end='\0'; if (!buff[0]) continue; /* Skip empty lines */ if (buff[0] == '#') @@ -86,6 +86,8 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) sizeof(name_buff)-1-dir_length)); VOID(cleanup_dirname(buff,name_buff)); } + else + fn_format(buff, buff, "", "", 0); if (!(isam=mi_open(buff,mode,(handle_locking?HA_OPEN_WAIT_IF_LOCKED:0)))) goto err; if (!m_info) /* First file */ diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c index 89f949eca27..14d68168acd 100644 --- a/mysys/my_getwd.c +++ b/mysys/my_getwd.c @@ -208,7 +208,7 @@ int test_if_hard_path(register const char *dir_name) my_bool has_path(const char *name) { - return test(strchr(name, FN_LIBCHAR)) + return test(strchr(name, FN_LIBCHAR)) || test(strchr(name,'/')) #ifdef FN_DEVCHAR || test(strchr(name, FN_DEVCHAR)) #endif From 3ca4caef3fa58fd48c1f14777e08f617e434a049 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 18:53:53 +0200 Subject: [PATCH 13/22] Build fixes for icc, compile _without_ "-no-gnu" include/my_global.h: icc does not define __ICC when emulating gcc. Use __INTEL_COMPILER to check for icc. ndb/src/cw/cpcd/Process.cpp: Remove rlimit64 ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: Remove dirent64 --- include/my_global.h | 2 +- ndb/src/cw/cpcd/Process.cpp | 5 +---- ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp | 4 ---- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/include/my_global.h b/include/my_global.h index 62c6a5d1e4a..f059d603976 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -44,7 +44,7 @@ #endif /* __CYGWIN__ */ /* Determine when to use "#pragma interface" */ -#if !defined(__CYGWIN__) && !defined(__ICC) && defined(__GNUC__) && (__GNUC__ < 3) +#if !defined(__CYGWIN__) && !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ < 3) #define USE_PRAGMA_INTERFACE #endif diff --git a/ndb/src/cw/cpcd/Process.cpp b/ndb/src/cw/cpcd/Process.cpp index cfffec7d0ce..431c96e3320 100644 --- a/ndb/src/cw/cpcd/Process.cpp +++ b/ndb/src/cw/cpcd/Process.cpp @@ -223,11 +223,8 @@ set_ulimit(const BaseString & pair){ if(!(list[1].trim() == "unlimited")){ value = atoi(list[1].c_str()); } -#if defined(__INTEL_COMPILER) - struct rlimit64 rlp; -#else + struct rlimit rlp; -#endif #define _RLIMIT_FIX(x) { res = getrlimit(x,&rlp); if(!res){ rlp.rlim_cur = value; res = setrlimit(x, &rlp); }} if(list[0].trim() == "c"){ diff --git a/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp b/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp index b3fc6e04d6c..f76440a462a 100644 --- a/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp +++ b/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp @@ -799,11 +799,7 @@ AsyncFile::rmrfReq(Request * request, char * path, bool removePath){ request->error = errno; return; } -#if defined(__INTEL_COMPILER) - struct dirent64 * dp; -#else struct dirent * dp; -#endif while ((dp = readdir(dirp)) != NULL){ if ((strcmp(".", dp->d_name) != 0) && (strcmp("..", dp->d_name) != 0)) { BaseString::snprintf(path_add, (size_t)path_max_copy, "%s%s", From 36b3f0a0529ab92fdedcbdefa7d1686b61f90429 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 12:05:15 -0500 Subject: [PATCH 14/22] BUG# 10687: Merge engine fails under Windows This cset is to roll out the cset applied earlier from Ingo. This bug has been fixed with a different cset. sql/ha_myisammrg.cc: removed the patch applied earlier strings/my_vsnprintf.c: removed the patch applied earlier. The patch was to add %c ability. Monty has already done this. --- sql/ha_myisammrg.cc | 4 ++-- strings/my_vsnprintf.c | 6 ------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/sql/ha_myisammrg.cc b/sql/ha_myisammrg.cc index 1bf2f8a31ad..9270361980f 100644 --- a/sql/ha_myisammrg.cc +++ b/sql/ha_myisammrg.cc @@ -406,8 +406,8 @@ int ha_myisammrg::create(const char *name, register TABLE *form, This means that it might not be possible to move the DATADIR of an embedded server without changing the paths in the .MRG file. */ - uint length= my_snprintf(buff, FN_REFLEN, "%s%c%s/%s", mysql_data_home, - FN_LIBCHAR, tables->db, tables->real_name); + uint length= my_snprintf(buff, FN_REFLEN, "%s%s/%s", mysql_data_home, + tables->db, tables->real_name); /* If a MyISAM table is in the same directory as the MERGE table, we use the table name without a path. This means that the diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c index d92b291321b..d0e529288f7 100644 --- a/strings/my_vsnprintf.c +++ b/strings/my_vsnprintf.c @@ -28,7 +28,6 @@ %#[l]u %#[l]x %#.#s Note first # is ignored - %c RETURN length of result string @@ -121,11 +120,6 @@ int my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap) to+= res_length; continue; } - else if (*fmt == 'c') - { - *(to++)= (char) va_arg(ap, int); - continue; - } /* We come here on '%%', unknown code or too long parameter */ if (to == end) break; From 67c5514b908a6adfb0cd91dfe6dc9d0b0e21e1c1 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 12:31:22 -0500 Subject: [PATCH 15/22] BUG#10687 - Merge engine fails under Windows This final cset is to fix a syntax problem in ha_myisammrg.cc where a / was left out of a format string. It also adds a check in has_path to avoid a possible redundant comparison. ha_myisammrg.cc: Replaced missing / in format string my_getwd.c: Added test to see if FN_LIBCHAR != '/' before doing comparison to avoid redundant comparison mysys/my_getwd.c: Added test to see if FN_LIBCHAR != '/' before doing comparison to avoid redundant comparison sql/ha_myisammrg.cc: Replaced missing / in format string --- mysys/my_getwd.c | 5 ++++- sql/ha_myisammrg.cc | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c index 14d68168acd..5663ceaa60e 100644 --- a/mysys/my_getwd.c +++ b/mysys/my_getwd.c @@ -208,7 +208,10 @@ int test_if_hard_path(register const char *dir_name) my_bool has_path(const char *name) { - return test(strchr(name, FN_LIBCHAR)) || test(strchr(name,'/')) + return test(strchr(name, FN_LIBCHAR)) +#if FN_LIBCHAR != '/' + || test(strchr(name,'/')) +#endif #ifdef FN_DEVCHAR || test(strchr(name, FN_DEVCHAR)) #endif diff --git a/sql/ha_myisammrg.cc b/sql/ha_myisammrg.cc index 9270361980f..0b160d72aab 100644 --- a/sql/ha_myisammrg.cc +++ b/sql/ha_myisammrg.cc @@ -406,7 +406,7 @@ int ha_myisammrg::create(const char *name, register TABLE *form, This means that it might not be possible to move the DATADIR of an embedded server without changing the paths in the .MRG file. */ - uint length= my_snprintf(buff, FN_REFLEN, "%s%s/%s", mysql_data_home, + uint length= my_snprintf(buff, FN_REFLEN, "%s/%s/%s", mysql_data_home, tables->db, tables->real_name); /* If a MyISAM table is in the same directory as the MERGE table, From ad9eba227d7ba62e7f25ae35319191a5fd1452b6 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 22:38:12 +0400 Subject: [PATCH 16/22] A comment for view_prepare_mode. sql/sql_lex.h: A comment. --- sql/sql_lex.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql/sql_lex.h b/sql/sql_lex.h index fffb8ff9ae6..3e463cb35ce 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -757,7 +757,13 @@ typedef struct st_lex bool drop_if_exists, drop_temporary, local_file, one_shot_set; bool in_comment, ignore_space, verbose, no_write_to_binlog; bool tx_chain, tx_release; - /* special JOIN::prepare mode: changing of query is prohibited */ + /* + Special JOIN::prepare mode: changing of query is prohibited. + When creating a view, we need to just check its syntax omitting + any optimizations: afterwards definition of the view will be + reconstructed by means of ::print() methods and written to + to an .frm file. We need this definition to stay untouched. + */ bool view_prepare_mode; bool safe_to_cache_query; bool subqueries, ignore; From 87f3b9f43e26870c13e3d1558c5863d024bfa86b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 21:15:00 +0200 Subject: [PATCH 17/22] mysqld.dsp: Added BLACKHOLE and FEDERATED storage engines for max builds Some preparations for including yaSSL ha_federated.cc: Use local seach path for "mysql_priv.h" sql/ha_federated.cc: Use local seach path for "mysql_priv.h" VC++Files/sql/mysqld.dsp: Added BLACKHOLE and FEDERATED storage engines for max builds Some preparations for including yaSSL --- VC++Files/sql/mysqld.dsp | 27 ++++++++++++++++++--------- sql/ha_federated.cc | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/VC++Files/sql/mysqld.dsp b/VC++Files/sql/mysqld.dsp index 723c0d63b36..a140b99080b 100644 --- a/VC++Files/sql/mysqld.dsp +++ b/VC++Files/sql/mysqld.dsp @@ -49,7 +49,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../zlib" /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../zlib" /I "../include" /I "../regex" /I "../extra/yassl/include" /D "NDEBUG" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x410 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -75,7 +75,7 @@ LINK32=xilink6.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c +# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c # SUBTRACT CPP /Fr /YX # ADD BASE RSC /l 0x410 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" @@ -102,7 +102,7 @@ LINK32=xilink6.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /G5 /MT /W3 /O2 /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /D "DBUG_OFF" /FD /c # SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "HAVE_INNOBASE_DB" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt /FD /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x410 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -130,7 +130,7 @@ LINK32=xilink6.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c # SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -159,7 +159,7 @@ LINK32=xilink6.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c # SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-max /FD /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-max /FD /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -187,7 +187,7 @@ LINK32=xilink6.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c # SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D LICENSE=Commercial /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "HAVE_DLOPEN" /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /D MYSQL_SERVER_SUFFIX=-classic /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D LICENSE=Commercial /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "HAVE_DLOPEN" /D "DBUG_OFF" /D "_MBCS" /D "NDEBUG" /FD /D MYSQL_SERVER_SUFFIX=-classic /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -215,7 +215,7 @@ LINK32=xilink6.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c # SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D MYSQL_SERVER_SUFFIX=-pro /FD /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D MYSQL_SERVER_SUFFIX=-pro /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -243,7 +243,7 @@ LINK32=xilink6.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c # SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /D LICENSE=Commercial /D MYSQL_SERVER_SUFFIX=-classic-nt /c +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /D LICENSE=Commercial /D MYSQL_SERVER_SUFFIX=-classic-nt /c # SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" @@ -272,7 +272,8 @@ LINK32=xilink6.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c # SUBTRACT BASE CPP /YX -# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D LICENSE=Commercial /D "NDEBUG" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-pro-nt" /FD +# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-pro-nt" /FD /c +# SUBTRACT CPP /YX # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -451,6 +452,14 @@ SOURCE=.\gstream.cpp # End Source File # Begin Source File +SOURCE=.\ha_blackhole.cpp +# End Source File +# Begin Source File + +SOURCE=.\ha_federated.cpp +# End Source File +# Begin Source File + SOURCE=.\ha_berkeley.cpp # End Source File # Begin Source File diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index 0ac209d82e0..8cb6dcb7285 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -349,7 +349,7 @@ #pragma implementation // gcc: Class implementation #endif -#include +#include "mysql_priv.h" #ifdef HAVE_FEDERATED_DB #include "ha_federated.h" From 97bde75e4ed215354f86f1fd220e5eaf25920fc7 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 14:48:25 -0500 Subject: [PATCH 18/22] BUG# 9148 Denial of service fixups of test case and comment formatting BitKeeper/deleted/.del-reserved_win_names-master.opt~e56da049a7ce9a5b: ***MISSING TEXT*** mysql-test/r/lowercase_table.result: added my test for bug #9148 to this test case mysql-test/t/lowercase_table.test: added my test for bug #9148 to this test case mysys/my_fopen.c: reformatted comments mysys/my_open.c: reformatted comments --- mysql-test/r/lowercase_table.result | 6 ++++++ mysql-test/t/lowercase_table.test | 11 +++++++++++ mysql-test/t/reserved_win_names-master.opt | 1 - mysys/my_fopen.c | 5 +++-- mysys/my_open.c | 7 ++++--- 5 files changed, 24 insertions(+), 6 deletions(-) delete mode 100644 mysql-test/t/reserved_win_names-master.opt diff --git a/mysql-test/r/lowercase_table.result b/mysql-test/r/lowercase_table.result index ef379cebaa9..499f46a237e 100644 --- a/mysql-test/r/lowercase_table.result +++ b/mysql-test/r/lowercase_table.result @@ -83,3 +83,9 @@ create table t2 like T1; drop table t1, t2; show tables; Tables_in_test +use lpt1; +ERROR 42000: Unknown database 'lpt1' +use com1; +ERROR 42000: Unknown database 'com1' +use prn; +ERROR 42000: Unknown database 'prn' diff --git a/mysql-test/t/lowercase_table.test b/mysql-test/t/lowercase_table.test index ee8dc403981..ca81c7c66bc 100644 --- a/mysql-test/t/lowercase_table.test +++ b/mysql-test/t/lowercase_table.test @@ -82,3 +82,14 @@ create table t2 like T1; drop table t1, t2; show tables; + +# +#Bug 9148: Denial of service +# +--error 1049 +use lpt1; +--error 1049 +use com1; +--error 1049 +use prn; + diff --git a/mysql-test/t/reserved_win_names-master.opt b/mysql-test/t/reserved_win_names-master.opt deleted file mode 100644 index 62ab6dad1e0..00000000000 --- a/mysql-test/t/reserved_win_names-master.opt +++ /dev/null @@ -1 +0,0 @@ ---lower_case_table_names=1 diff --git a/mysys/my_fopen.c b/mysys/my_fopen.c index 208e7e80fd8..4310250bd0d 100644 --- a/mysys/my_fopen.c +++ b/mysys/my_fopen.c @@ -34,8 +34,9 @@ FILE *my_fopen(const char *FileName, int Flags, myf MyFlags) DBUG_PRINT("my",("Name: '%s' Flags: %d MyFlags: %d", FileName, Flags, MyFlags)); /* - * if we are not creating, then we need to use my_access to make sure - * the file exists since Windows doesn't handle files like "com1.sym" very well + if we are not creating, then we need to use my_access to make sure + the file exists since Windows doesn't handle files like "com1.sym" + very well */ #ifdef __WIN__ if (! (Flags & O_CREAT) && my_access(FileName, F_OK)) diff --git a/mysys/my_open.c b/mysys/my_open.c index 1f3bb95b5a2..ea4d99c3e8c 100644 --- a/mysys/my_open.c +++ b/mysys/my_open.c @@ -46,9 +46,10 @@ File my_open(const char *FileName, int Flags, myf MyFlags) DBUG_PRINT("my",("Name: '%s' Flags: %d MyFlags: %d", FileName, Flags, MyFlags)); #if defined(MSDOS) || defined(__WIN__) || defined(__EMX__) || defined(OS2) - /* if we are not creating, then we need to use my_access to make - * sure the file exists since Windows doesn't handle files like - * "com1.sym" very well + /* + if we are not creating, then we need to use my_access to make + sure the file exists since Windows doesn't handle files like + "com1.sym" very well */ if (! (Flags & O_CREAT) && my_access(FileName, F_OK)) return -1; From 9c79a9d69165aaba06ac6c7300b2216a372be204 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 23:43:43 +0200 Subject: [PATCH 19/22] Fixed on BUG#6048: Stored procedure causes operating system reboot Memory leak in locally evalutated expressions during SP execution fixed by reusing allocated item slots when possible. Note: No test case added, since the test is a stress test that tries to make the machine to run out of memory. Second attempt, now tested with debug build, valgrind build, max (optimized) build, with and without --debug, --vagrind and --ps-protocol. Errors in trigger and view test with --debug in debug build where present before this patch, and likewise for valgrind warnings for view test in valgrind build with --ps-protocol. sql/item.cc: Init rsize in Item (for SP item reusal). sql/item.h: Addes special new operator for reuse of Items, for SP internal use only. sql/sp_head.cc: Reuse items assigned internally in SPs when possible. sql/sp_rcontext.cc: Reuse items assigned internally in SPs when possible. Moved the local variable assignment here (from sp_head) to avoid duplicated code. sql/sp_rcontext.h: New arg to sp_rcontext::set_item_eval() (and some coding style). sql/sql_class.cc: Adjusted call to new set_item_eval(). --- sql/item.cc | 3 ++- sql/item.h | 18 +++++++++++++ sql/sp_head.cc | 45 ++++++++++++++----------------- sql/sp_rcontext.cc | 67 +++++++++++++++++++++++++++++++++++++--------- sql/sp_rcontext.h | 7 +++-- sql/sql_class.cc | 3 ++- 6 files changed, 99 insertions(+), 44 deletions(-) diff --git a/sql/item.cc b/sql/item.cc index f105d97bec2..a28cc261b3c 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -298,7 +298,7 @@ longlong Item::val_int_from_decimal() Item::Item(): - name(0), orig_name(0), name_length(0), fixed(0), + rsize(0), name(0), orig_name(0), name_length(0), fixed(0), collation(&my_charset_bin, DERIVATION_COERCIBLE) { marker= 0; @@ -330,6 +330,7 @@ Item::Item(): tables */ Item::Item(THD *thd, Item *item): + rsize(0), str_value(item->str_value), name(item->name), orig_name(item->orig_name), diff --git a/sql/item.h b/sql/item.h index 11b9460906e..18a81dcaa03 100644 --- a/sql/item.h +++ b/sql/item.h @@ -232,6 +232,21 @@ public: static void *operator new(size_t size) {return (void*) sql_alloc((uint) size); } static void *operator new(size_t size, MEM_ROOT *mem_root) { return (void*) alloc_root(mem_root, (uint) size); } + /* Special for SP local variable assignment - reusing slots */ + static void *operator new(size_t size, Item *reuse, uint *rsize) + { + if (reuse && size <= reuse->rsize) + { + reuse->cleanup(); + TRASH((void *)reuse, size); + if (rsize) + (*rsize)= reuse->rsize; + return (void *)reuse; + } + if (rsize) + (*rsize)= size; + return (void *)sql_alloc((uint)size); + } static void operator delete(void *ptr,size_t size) { TRASH(ptr, size); } static void operator delete(void *ptr, MEM_ROOT *mem_root) {} @@ -247,6 +262,9 @@ public: enum traverse_order { POSTFIX, PREFIX }; + /* Reuse size, only used by SP local variable assignment, otherwize 0 */ + uint rsize; + /* str_values's main purpose is to be used to cache the value in save_in_field diff --git a/sql/sp_head.cc b/sql/sp_head.cc index ca2ec6d0acf..988345694b2 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -131,10 +131,12 @@ sp_prepare_func_item(THD* thd, Item **it_addr) ** if nothing else. */ Item * -sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) +sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type, + Item *reuse) { DBUG_ENTER("sp_eval_func_item"); Item *it= sp_prepare_func_item(thd, it_addr); + uint rsize; DBUG_PRINT("info", ("type: %d", type)); if (!it) @@ -144,7 +146,7 @@ sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) /* QQ How do we do this? Is there some better way? */ if (type == MYSQL_TYPE_NULL) - it= new Item_null(); + it= new(reuse, &rsize) Item_null(); else { switch (sp_map_result_type(type)) { @@ -155,12 +157,12 @@ sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) if (it->null_value) { DBUG_PRINT("info", ("INT_RESULT: null")); - it= new Item_null(); + it= new(reuse, &rsize) Item_null(); } else { DBUG_PRINT("info", ("INT_RESULT: %d", i)); - it= new Item_int(i); + it= new(reuse, &rsize) Item_int(i); } break; } @@ -171,7 +173,7 @@ sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) if (it->null_value) { DBUG_PRINT("info", ("REAL_RESULT: null")); - it= new Item_null(); + it= new(reuse, &rsize) Item_null(); } else { @@ -180,7 +182,7 @@ sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) uint8 decimals= it->decimals; uint32 max_length= it->max_length; DBUG_PRINT("info", ("REAL_RESULT: %g", d)); - it= new Item_float(d); + it= new(reuse, &rsize) Item_float(d); it->decimals= decimals; it->max_length= max_length; } @@ -190,9 +192,9 @@ sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) { my_decimal value, *val= it->val_decimal(&value); if (it->null_value) - it= new Item_null(); + it= new(reuse, &rsize) Item_null(); else - it= new Item_decimal(val); + it= new(reuse, &rsize) Item_decimal(val); #ifndef DBUG_OFF char dbug_buff[DECIMAL_MAX_STR_LENGTH+1]; DBUG_PRINT("info", ("DECIMAL_RESULT: %s", dbug_decimal_as_string(dbug_buff, val))); @@ -208,14 +210,16 @@ sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) if (it->null_value) { DBUG_PRINT("info", ("default result: null")); - it= new Item_null(); + it= new(reuse, &rsize) Item_null(); } else { DBUG_PRINT("info",("default result: %*s", s->length(), s->c_ptr_quick())); - it= new Item_string(thd->strmake(s->ptr(), s->length()), - s->length(), it->collation.collation); + it= new(reuse, &rsize) Item_string(thd->strmake(s->ptr(), + s->length()), + s->length(), + it->collation.collation); } break; } @@ -224,6 +228,7 @@ sp_eval_func_item(THD *thd, Item **it_addr, enum enum_field_types type) DBUG_ASSERT(0); } } + it->rsize= rsize; DBUG_RETURN(it); } @@ -708,7 +713,7 @@ sp_head::execute_function(THD *thd, Item **argp, uint argcount, Item **resp) for (i= 0 ; i < params && i < argcount ; i++) { sp_pvar_t *pvar = m_pcont->find_pvar(i); - Item *it= sp_eval_func_item(thd, argp++, pvar->type); + Item *it= sp_eval_func_item(thd, argp++, pvar->type, NULL); if (it) nctx->push_item(it); @@ -823,7 +828,7 @@ sp_head::execute_procedure(THD *thd, List *args) } else { - Item *it2= sp_eval_func_item(thd, li.ref(), pvar->type); + Item *it2= sp_eval_func_item(thd, li.ref(), pvar->type, NULL); if (it2) nctx->push_item(it2); // IN or INOUT @@ -1466,19 +1471,9 @@ sp_instr_set::execute(THD *thd, uint *nextp) int sp_instr_set::exec_core(THD *thd, uint *nextp) { - Item *it; - int res; + int res= thd->spcont->set_item_eval(thd, m_offset, &m_value, m_type); - it= sp_eval_func_item(thd, &m_value, m_type); - if (! it) - res= -1; - else - { - res= 0; - thd->spcont->set_item(m_offset, it); - } *nextp = m_ip+1; - return res; } @@ -1715,7 +1710,7 @@ sp_instr_freturn::exec_core(THD *thd, uint *nextp) Item *it; int res; - it= sp_eval_func_item(thd, &m_value, m_type); + it= sp_eval_func_item(thd, &m_value, m_type, NULL); if (! it) res= -1; else diff --git a/sql/sp_rcontext.cc b/sql/sp_rcontext.cc index 672491a97f2..49ead5d1585 100644 --- a/sql/sp_rcontext.cc +++ b/sql/sp_rcontext.cc @@ -40,19 +40,39 @@ sp_rcontext::sp_rcontext(uint fsize, uint hmax, uint cmax) m_saved.empty(); } -int -sp_rcontext::set_item_eval(uint idx, Item **item_addr, enum_field_types type) -{ - extern Item *sp_eval_func_item(THD *thd, Item **it, enum_field_types type); - Item *it= sp_eval_func_item(current_thd, item_addr, type); +int +sp_rcontext::set_item_eval(THD *thd, uint idx, Item **item_addr, + enum_field_types type) +{ + extern Item *sp_eval_func_item(THD *thd, Item **it, enum_field_types type, + Item *reuse); + Item *it; + Item *reuse_it; + Item *old_item_next; + Item *old_free_list= thd->free_list; + int res; + LINT_INIT(old_item_next); + + if ((reuse_it= get_item(idx))) + old_item_next= reuse_it->next; + it= sp_eval_func_item(thd, item_addr, type, reuse_it); if (! it) - return -1; + res= -1; else { + res= 0; + if (reuse_it && it == reuse_it) + { + // A reused item slot, where the constructor put it in the free_list, + // so we have to restore the list. + thd->free_list= old_free_list; + it->next= old_item_next; + } set_item(idx, it); - return 0; } + + return res; } bool @@ -111,7 +131,10 @@ void sp_rcontext::save_variables(uint fp) { while (fp < m_count) - m_saved.push_front(m_frame[fp++]); + { + m_saved.push_front(m_frame[fp]); + m_frame[fp++]= NULL; // Prevent reuse + } } void @@ -230,7 +253,12 @@ sp_cursor::fetch(THD *thd, List *vars) for (fldcount= 0 ; (pv= li++) ; fldcount++) { Item *it; + Item *reuse; + uint rsize; + Item *old_item_next; + Item *old_free_list= thd->free_list; const char *s; + LINT_INIT(old_item_next); if (fldcount >= m_prot->get_field_count()) { @@ -238,9 +266,13 @@ sp_cursor::fetch(THD *thd, List *vars) ER(ER_SP_WRONG_NO_OF_FETCH_ARGS), MYF(0)); return -1; } + + if ((reuse= thd->spcont->get_item(pv->offset))) + old_item_next= reuse->next; + s= row[fldcount]; if (!s) - it= new Item_null(); + it= new(reuse, &rsize) Item_null(); else { /* @@ -255,23 +287,32 @@ sp_cursor::fetch(THD *thd, List *vars) len= (*next -s)-1; switch (sp_map_result_type(pv->type)) { case INT_RESULT: - it= new Item_int(s); + it= new(reuse, &rsize) Item_int(s); break; case REAL_RESULT: - it= new Item_float(s, len); + it= new(reuse, &rsize) Item_float(s, len); break; case DECIMAL_RESULT: - it= new Item_decimal(s, len, thd->db_charset); + it= new(reuse, &rsize) Item_decimal(s, len, thd->db_charset); break; case STRING_RESULT: /* TODO: Document why we do an extra copy of the string 's' here */ - it= new Item_string(thd->strmake(s, len), len, thd->db_charset); + it= new(reuse, &rsize) Item_string(thd->strmake(s, len), len, + thd->db_charset); break; case ROW_RESULT: default: DBUG_ASSERT(0); } } + it->rsize= rsize; + if (reuse && it == reuse) + { + // A reused item slot, where the constructor put it in the free_list, + // so we have to restore the list. + thd->free_list= old_free_list; + it->next= old_item_next; + } thd->spcont->set_item(pv->offset, it); } if (fldcount < m_prot->get_field_count()) diff --git a/sql/sp_rcontext.h b/sql/sp_rcontext.h index c132032e32c..417c50d0f0f 100644 --- a/sql/sp_rcontext.h +++ b/sql/sp_rcontext.h @@ -62,19 +62,19 @@ class sp_rcontext : public Sql_alloc push_item(Item *i) { if (m_count < m_fsize) - m_frame[m_count++] = i; + m_frame[m_count++]= i; } inline void set_item(uint idx, Item *i) { if (idx < m_count) - m_frame[idx] = i; + m_frame[idx]= i; } /* Returns 0 on success, -1 on (eval) failure */ int - set_item_eval(uint idx, Item **i, enum_field_types type); + set_item_eval(THD *thd, uint idx, Item **i, enum_field_types type); inline Item * get_item(uint idx) @@ -82,7 +82,6 @@ class sp_rcontext : public Sql_alloc return m_frame[idx]; } - inline Item ** get_item_addr(uint idx) { diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 2d5c4722164..2a500610479 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1746,7 +1746,8 @@ bool select_dumpvar::send_data(List &items) { if ((yy=var_li++)) { - if (thd->spcont->set_item_eval(yy->get_offset(), it.ref(), zz->type)) + if (thd->spcont->set_item_eval(current_thd, + yy->get_offset(), it.ref(), zz->type)) DBUG_RETURN(1); } } From b6c1f2302ab77e6cfd37bd05f8444ff0c82bc459 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 23 May 2005 23:54:39 +0200 Subject: [PATCH 20/22] marking the file gone again to hopefully get the tree on its feet BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted --- BitKeeper/etc/gone | 1 + BitKeeper/etc/logging_ok | 1 + 2 files changed, 2 insertions(+) diff --git a/BitKeeper/etc/gone b/BitKeeper/etc/gone index 63a759cf131..2d5522899d2 100644 --- a/BitKeeper/etc/gone +++ b/BitKeeper/etc/gone @@ -750,6 +750,7 @@ mwagner@work.mysql.com|mysql-test/r/3.23/sel000001.result|20001010091454|28284|3 mwagner@work.mysql.com|mysql-test/r/3.23/sel000002.result|20001010091454|29230|d1787e6fd5dbc1cc nick@nick.leippe.com|mysql-test/r/rpl_empty_master_crash.result|20020531235552|47718|615f521be2132141 nick@nick.leippe.com|mysql-test/t/rpl_empty_master_crash.test|20020531235552|52328|99464e737639ccc6 +reggie@mdk10.(none)|mysql-test/t/reserved_win_names-master.opt|20050520210356|14878|e56da049a7ce9a5b sasha@mysql.sashanet.com|BitKeeper/etc/logging_ok|20000801000905|12967|5b7d847a2158554 sasha@mysql.sashanet.com|build-tags|20011125054855|05181|7afb7e785b80f97 sasha@mysql.sashanet.com|build-tags|20011201050944|25384|b6f6fff142121618 diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 2ed4bf2a5d3..aad4399302e 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -49,6 +49,7 @@ dlenev@mysql.com ejonore@mc03.ndb.mysql.com evgen@moonbone.(none) evgen@moonbone.local +gbichot@bk-internal.mysql.com gbichot@production.mysql.com gbichot@quadita2.mysql.com gbichot@quadxeon.mysql.com From f9433acc8180cd5f7edd7c419d79fd683f089061 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 24 May 2005 14:35:23 +0400 Subject: [PATCH 21/22] Fix for bug #10659: information_schema_db fail on Mac OS --- mysql-test/r/information_schema_db.result | 4 ++-- mysql-test/t/information_schema_db.test | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/information_schema_db.result b/mysql-test/r/information_schema_db.result index 0ccb22be22a..3da5cc7bd11 100644 --- a/mysql-test/r/information_schema_db.result +++ b/mysql-test/r/information_schema_db.result @@ -1,6 +1,6 @@ use INFORMATION_SCHEMA; show tables; -Tables_in_INFORMATION_SCHEMA +Tables_in_information_schema SCHEMATA TABLES COLUMNS @@ -17,7 +17,7 @@ COLUMN_PRIVILEGES TABLE_CONSTRAINTS KEY_COLUMN_USAGE show tables from INFORMATION_SCHEMA like 'T%'; -Tables_in_INFORMATION_SCHEMA (T%) +Tables_in_information_schema (T%) TABLES TABLE_PRIVILEGES TABLE_CONSTRAINTS diff --git a/mysql-test/t/information_schema_db.test b/mysql-test/t/information_schema_db.test index f88d04c2783..efb738d682c 100644 --- a/mysql-test/t/information_schema_db.test +++ b/mysql-test/t/information_schema_db.test @@ -1,7 +1,9 @@ -- source include/testdb_only.inc use INFORMATION_SCHEMA; +--replace_result Tables_in_INFORMATION_SCHEMA Tables_in_information_schema show tables; +--replace_result 'Tables_in_INFORMATION_SCHEMA (T%)' 'Tables_in_information_schema (T%)' show tables from INFORMATION_SCHEMA like 'T%'; create database `inf%`; use `inf%`; From 8ddb0ddc5cf302a88372ba877ad843b049de1121 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 24 May 2005 14:06:44 +0300 Subject: [PATCH 22/22] Print information about XA recovery only if there are prepared XA transactions after recovery. --- innobase/trx/trx0trx.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/innobase/trx/trx0trx.c b/innobase/trx/trx0trx.c index cdda1dd4dee..c6d1f953772 100644 --- a/innobase/trx/trx0trx.c +++ b/innobase/trx/trx0trx.c @@ -1926,10 +1926,6 @@ trx_recover_for_mysql( ut_ad(xid_list); ut_ad(len); - ut_print_timestamp(stderr); - fprintf(stderr, - " InnoDB: Starting recovery for XA transactions...\n"); - /* We should set those transactions which are in the prepared state to the xid_list */ @@ -1941,6 +1937,12 @@ trx_recover_for_mysql( if (trx->conc_state == TRX_PREPARED) { xid_list[count] = trx->xid; + if (count == 0) { + ut_print_timestamp(stderr); + fprintf(stderr, +" InnoDB: Starting recovery for XA transactions...\n"); + } + ut_print_timestamp(stderr); fprintf(stderr, " InnoDB: Transaction %lu %lu in prepared state after recovery\n", @@ -1964,10 +1966,12 @@ trx_recover_for_mysql( mutex_exit(&kernel_mutex); - ut_print_timestamp(stderr); - fprintf(stderr, + if (count > 0){ + ut_print_timestamp(stderr); + fprintf(stderr, " InnoDB: %d transactions in prepared state after recovery\n", - count); + count); + } return (count); }