diff options
author | unknown <jimw@mysql.com> | 2006-04-11 18:54:24 -0700 |
---|---|---|
committer | unknown <jimw@mysql.com> | 2006-04-11 18:54:24 -0700 |
commit | a56e488ac0ff9842723caad4b6965f8079d4e3da (patch) | |
tree | 24f79d4012d38ba95416a1379bdf4c392e02e0cb /mysql-test/my_manage.c | |
parent | 087cae1a1e5c5681886955c44726bddec2c5d94a (diff) | |
download | mariadb-git-a56e488ac0ff9842723caad4b6965f8079d4e3da.tar.gz |
Remove old cruft from the tree: mysqltestmanager, mysql_test_run_new,
and various stuff in Docs/. Also move the certificates used for testing
into mysql-test/std_data from the top-level SSL directory (now gone).
BitKeeper/deleted/.del-init_db.sql~af2dfeabaa348dd7:
Delete: mysql-test/init_db.sql
BitKeeper/deleted/.del-my_create_tables.c~c121a0c4c427ebb:
Delete: mysql-test/my_create_tables.c
BitKeeper/deleted/.del-my_manage.c~4de50e721d227d19:
Delete: mysql-test/my_manage.c
BitKeeper/deleted/.del-my_manage.h~9d2cbc1e8bc894f:
Delete: mysql-test/my_manage.h
BitKeeper/deleted/.del-mysql_test_run_new.c~a23ab2c4b28b25ad:
Delete: mysql-test/mysql_test_run_new.c
mysql-test/mysql-test-run.sh:
Remove code that uses old mysqltestmanager
BitKeeper/deleted/.del-Makefile.am~abb265028eb9b6a7:
Delete: tools/Makefile.am
BitKeeper/deleted/.del-managertest1.nc~96a5c1c5c2d33085:
Delete: tools/managertest1.nc
BitKeeper/deleted/.del-mysqlmanager-sample.pwd~712b89f01aaad84a:
Delete: tools/mysqlmanager-sample.pwd
BitKeeper/deleted/.del-mysqlmanager.c~e97636d71145a0b:
Delete: tools/mysqlmanager.c
BitKeeper/deleted/.del-client-req.pem~efd482e1d290d4d8:
Delete: SSL/client-req.pem
BitKeeper/deleted/.del-run-client~e683192d4f3821e0:
Delete: SSL/run-client
BitKeeper/deleted/.del-server-req.pem~16301893cacf1be4:
Delete: SSL/server-req.pem
BitKeeper/deleted/.del-run-server~55426778bc206c48:
Delete: SSL/run-server
BitKeeper/deleted/.del-Makefile.am~de166d6fcac3b9b6:
Delete: SSL/Makefile.am
BitKeeper/deleted/.del-NOTES~e926d3e6929ac052:
Delete: SSL/NOTES
BitKeeper/deleted/.del-mysqlmanager-pwgen.c~d8f5f91ec54432b9:
Delete: client/mysqlmanager-pwgen.c
BitKeeper/deleted/.del-mysqlmanagerc.c~4f6e3499e68508f6:
Delete: client/mysqlmanagerc.c
BitKeeper/deleted/.del-algor.eps~1a57aff065918206:
Delete: Docs/Books/algor.eps
BitKeeper/deleted/.del-bk.txt~ffd510fa9531f87c:
Delete: Docs/bk.txt
BitKeeper/deleted/.del-algor.gif~72c40c3bad198f2f:
Delete: Docs/Books/algor.gif
BitKeeper/deleted/.del-algor.txt~37d2b5c1290e3cfa:
Delete: Docs/Books/algor.txt
BitKeeper/deleted/.del-dbi.eps~7b1032f98de7736d:
Delete: Docs/Books/dbi.eps
BitKeeper/deleted/.del-dbi.gif~8f6861147437298b:
Delete: Docs/Books/dbi.gif
BitKeeper/deleted/.del-dbi.txt~f5cf3fe321168fd5:
Delete: Docs/Books/dbi.txt
BitKeeper/deleted/.del-dubois.eps~f24e09a7fa420436:
Delete: Docs/Books/dubois.eps
BitKeeper/deleted/.del-dubois.gif~e02d361b13b1c4a4:
Delete: Docs/Books/dubois.gif
BitKeeper/deleted/.del-dubois.txt~998581cf9040fcc:
Delete: Docs/Books/dubois.txt
BitKeeper/deleted/.del-ecomm.eps~17833026ebd7656:
Delete: Docs/Books/ecomm.eps
BitKeeper/deleted/.del-ecomm.gif~f9bce6949b171613:
Delete: Docs/Books/ecomm.gif
BitKeeper/deleted/.del-ecomm.txt~27494674104ee9db:
Delete: Docs/Books/ecomm.txt
BitKeeper/deleted/.del-in_21.eps~8150d06653dab178:
Delete: Docs/Books/in_21.eps
BitKeeper/deleted/.del-in_21.gif~4a0b14f6d76458a9:
Delete: Docs/Books/in_21.gif
BitKeeper/deleted/.del-in_21.txt~448fb4b3d8c0b34e:
Delete: Docs/Books/in_21.txt
BitKeeper/deleted/.del-manual.eps~1c2ebcea50b4840c:
Delete: Docs/Books/manual.eps
BitKeeper/deleted/.del-manual.gif~657cf08119b1b3fc:
Delete: Docs/Books/manual.gif
BitKeeper/deleted/.del-manual.txt~4702af61ea5e3c29:
Delete: Docs/Books/manual.txt
BitKeeper/deleted/.del-msql.eps~f3801b9d166ae4fc:
Delete: Docs/Books/msql.eps
BitKeeper/deleted/.del-msql.gif~72ea7c6d307b9108:
Delete: Docs/Books/msql.gif
BitKeeper/deleted/.del-msql.txt~235ae568824f4073:
Delete: Docs/Books/msql.txt
BitKeeper/deleted/.del-prof.eps~1f54d9a56eb2b908:
Delete: Docs/Books/prof.eps
BitKeeper/deleted/.del-prof.gif~2fa8ed201d9d05fe:
Delete: Docs/Books/prof.gif
BitKeeper/deleted/.del-prof.txt~9fc04ec3e5ce8361:
Delete: Docs/Books/prof.txt
BitKeeper/deleted/.del-pthreads.eps~2ca8ff2d1181b2c0:
Delete: Docs/Books/pthreads.eps
BitKeeper/deleted/.del-pthreads.gif~2d9460dec2577859:
Delete: Docs/Books/pthreads.gif
BitKeeper/deleted/.del-pthreads.txt~fc9e17d021335a39:
Delete: Docs/Books/pthreads.txt
BitKeeper/deleted/.del-realmen.eps~cc022325d3cb045:
Delete: Docs/Books/realmen.eps
BitKeeper/deleted/.del-realmen.gif~86113e3b1fcbd597:
Delete: Docs/Books/realmen.gif
BitKeeper/deleted/.del-realmen.txt~81c30565a8f06539:
Delete: Docs/Books/realmen.txt
BitKeeper/deleted/.del-sql-99.eps~f85c06de7a016c7d:
Delete: Docs/Books/sql-99.eps
BitKeeper/deleted/.del-sql-99.gif~df369376884a5689:
Delete: Docs/Books/sql-99.gif
BitKeeper/deleted/.del-sql-99.txt~eff316adac3dd5b8:
Delete: Docs/Books/sql-99.txt
BitKeeper/deleted/.del-Tutorial-MySQL-final.txt~6e5b88fe4217504d:
Delete: Docs/Tutorial-MySQL-final.txt
BitKeeper/deleted/.del-mysql-01.gif~6f3f2e474b834ac6:
Delete: Docs/MySQL-logos/mysql-01.gif
BitKeeper/deleted/.del-mysql-02.gif~5e03e2ffa6bd060f:
Delete: Docs/MySQL-logos/mysql-02.gif
BitKeeper/deleted/.del-mysql-03.gif~a510e3599346cd5f:
Delete: Docs/MySQL-logos/mysql-03.gif
BitKeeper/deleted/.del-mysql-04.gif~6c3fdc91da64574:
Delete: Docs/MySQL-logos/mysql-04.gif
BitKeeper/deleted/.del-mysql-05.gif~230c28315136655:
Delete: Docs/MySQL-logos/mysql-05.gif
BitKeeper/deleted/.del-mysql-06.gif~8bb16461fd45634e:
Delete: Docs/MySQL-logos/mysql-06.gif
BitKeeper/deleted/.del-mysql-07.gif~b86f918998a2114e:
Delete: Docs/MySQL-logos/mysql-07.gif
BitKeeper/deleted/.del-mysql-08.gif~50fb4d886f82e8bc:
Delete: Docs/MySQL-logos/mysql-08.gif
BitKeeper/deleted/.del-mysql-09.gif~17604ce9d92cd94a:
Delete: Docs/MySQL-logos/mysql-09.gif
BitKeeper/deleted/.del-mysql-10.gif~a8b5306c4d911f8e:
Delete: Docs/MySQL-logos/mysql-10.gif
BitKeeper/deleted/.del-mysql-11.gif~8495404458978524:
Delete: Docs/MySQL-logos/mysql-11.gif
BitKeeper/deleted/.del-mysql-12.gif~18d47c1ad5aef481:
Delete: Docs/MySQL-logos/mysql-12.gif
BitKeeper/deleted/.del-mysql-13.gif~1ad2eedf58da3aaa:
Delete: Docs/MySQL-logos/mysql-13.gif
BitKeeper/deleted/.del-mysql-14.gif~a11e7df8653ad1b1:
Delete: Docs/MySQL-logos/mysql-14.gif
BitKeeper/deleted/.del-mysql-15.gif~64c998fdd6fc1ae1:
Delete: Docs/MySQL-logos/mysql-15.gif
BitKeeper/deleted/.del-mysql-16.gif~6a6c86de2f85f0f5:
Delete: Docs/MySQL-logos/mysql-16.gif
BitKeeper/deleted/.del-mysql-17.gif~b07962578d0952b1:
Delete: Docs/MySQL-logos/mysql-17.gif
BitKeeper/deleted/.del-mysql_anim-01.gif~d27d4f0c1a2a6da9:
Delete: Docs/MySQL-logos/mysql_anim-01.gif
BitKeeper/deleted/.del-mysql_anim-02.gif~476224d724007343:
Delete: Docs/MySQL-logos/mysql_anim-02.gif
BitKeeper/deleted/.del-mysql_anim-03.gif~470dd9c9a8bd55fc:
Delete: Docs/MySQL-logos/mysql_anim-03.gif
BitKeeper/deleted/.del-mysql_anim-04.gif~14f429c87c0c718:
Delete: Docs/MySQL-logos/mysql_anim-04.gif
BitKeeper/deleted/.del-mysql_anim-05.gif~e63e7f003b77ad95:
Delete: Docs/MySQL-logos/mysql_anim-05.gif
BitKeeper/deleted/.del-mysql_anim-06.gif~d9cffaf35d9d4719:
Delete: Docs/MySQL-logos/mysql_anim-06.gif
BitKeeper/deleted/.del-mysql-compatible.jpg~56ecc684688a7382:
Delete: Docs/MySQL-logos/mysql-compatible.jpg
BitKeeper/deleted/.del-docbook-fixup.pl~46cf3bdef147084e:
Delete: Docs/Support/docbook-fixup.pl
BitKeeper/deleted/.del-docbook-prefix.pl~876c7d33c68c224a:
Delete: Docs/Support/docbook-prefix.pl
BitKeeper/deleted/.del-docbook-split~be931c3922898d0:
Delete: Docs/Support/docbook-split
BitKeeper/deleted/.del-make-docbook~ccac1eb717e92ac9:
Delete: Docs/Support/make-docbook
BitKeeper/deleted/.del-make-makefile~39fd454b487126e8:
Delete: Docs/Support/make-makefile
BitKeeper/deleted/.del-test-make-manual~5da458f958a424ec:
Delete: Docs/Support/test-make-manual
BitKeeper/deleted/.del-test-make-manual-de~33cad2886311b8a:
Delete: Docs/Support/test-make-manual-de
BitKeeper/deleted/.del-trivial-makeinfo-4.0c.patch~40d336454ecf98db:
Delete: Docs/Support/trivial-makeinfo-4.0c.patch
BitKeeper/deleted/.del-xwf~76b97805d9146b80:
Delete: Docs/Support/xwf
BitKeeper/deleted/.del-colspec-fix.pl~6c78d3332330b19e:
Delete: Docs/Support/colspec-fix.pl
Docs/generate-text-files.pl:
Rename: Docs/Support/generate-text-files.pl -> Docs/generate-text-files.pl
BitKeeper/deleted/.del-.cvsignore~250f630140b90042:
Delete: Docs/Support/.cvsignore
BitKeeper/deleted/.del-changelog-4.0.xml~8f56ee8a913e848b:
Delete: Docs/changelog-4.0.xml
BitKeeper/deleted/.del-changelog-4.1.xml~8aa496ebed09d868:
Delete: Docs/changelog-4.1.xml
BitKeeper/deleted/.del-changelog-5.0.xml~f4c50926ccdd7434:
Delete: Docs/changelog-5.0.xml
BitKeeper/deleted/.del-sp-implemented.txt~15f5c0033d848288:
Delete: Docs/sp-implemented.txt
mysql-test/std_data/cacert.pem:
Rename: SSL/cacert.pem -> mysql-test/std_data/cacert.pem
mysql-test/std_data/client-cert.pem:
Rename: SSL/client-cert.pem -> mysql-test/std_data/client-cert.pem
mysql-test/std_data/client-key.pem:
Rename: SSL/client-key.pem -> mysql-test/std_data/client-key.pem
mysql-test/std_data/server-cert.pem:
Rename: SSL/server-cert.pem -> mysql-test/std_data/server-cert.pem
mysql-test/std_data/server-key.pem:
Rename: SSL/server-key.pem -> mysql-test/std_data/server-key.pem
BitKeeper/etc/ignore:
added client/mysql_upgrade
Docs/Makefile.am:
Move generate-text-files.pl up a level, since it is the only Support file
Makefile.am:
Remove tools and SSL directories
client/Makefile.am:
Remove mysqltestmanager clients
configure.in:
Remove old tools directory
mysql-test/Makefile.am:
Don't need to copy .pem files any more, they're now in std_data.
scripts/make_binary_distribution.sh:
Don't package up mysqltestmanager
support-files/mysql.spec.sh:
Don't package mysqltestmanager
Diffstat (limited to 'mysql-test/my_manage.c')
-rw-r--r-- | mysql-test/my_manage.c | 887 |
1 files changed, 0 insertions, 887 deletions
diff --git a/mysql-test/my_manage.c b/mysql-test/my_manage.c deleted file mode 100644 index e5d1be42f95..00000000000 --- a/mysql-test/my_manage.c +++ /dev/null @@ -1,887 +0,0 @@ -/* - Copyright (c) 2003 Novell, Inc. All Rights Reserved. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include <stdio.h> -#include <errno.h> -#ifndef __WIN__ -#include <dirent.h> -#endif -#include <string.h> -#ifdef __NETWARE__ -#include <screen.h> -#include <proc.h> -#else -#include <sys/types.h> -#ifndef __WIN__ -#include <sys/wait.h> -#include <unistd.h> -#include <signal.h> -#include <fnmatch.h> /* FIXME HAVE_FNMATCH_H or something */ -#else -#include <direct.h> -#include <stdlib.h> -#include <stdio.h> -#endif -#endif -#include <ctype.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <assert.h> - -#include "my_manage.h" - -#ifndef __NETWARE__ -#define ASSERT assert -extern char **environ; -#endif - - - -/****************************************************************************** - - macros - -******************************************************************************/ - -/****************************************************************************** - - global variables - -******************************************************************************/ - -/****************************************************************************** - - functions - -******************************************************************************/ - -/****************************************************************************** - - init_args() - - Init an argument list. - -******************************************************************************/ - -void init_args(arg_list_t *al) -{ - ASSERT(al != NULL); - - al->argc= 0; - al->size= ARG_BUF; - al->argv= malloc(al->size * sizeof(char *)); - ASSERT(al->argv != NULL); - - return; -} - -/****************************************************************************** - - add_arg() - - Add an argument to a list. - -******************************************************************************/ - -void add_arg(arg_list_t *al, const char *format, ...) -{ - va_list ap; - char temp[FN_REFLEN]; - - ASSERT(al != NULL); - - /* increase size */ - if (al->argc >= (int)al->size) - { - al->size+= ARG_BUF; - al->argv= realloc(al->argv, al->size * sizeof(char *)); - ASSERT(al->argv != NULL); - } - - if (format) - { - va_start(ap, format); - vsprintf(temp, format, ap); - va_end(ap); - - al->argv[al->argc]= malloc(strlen(temp)+1); - ASSERT(al->argv[al->argc] != NULL); - strcpy(al->argv[al->argc], temp); - - ++(al->argc); - } - else - { - al->argv[al->argc]= NULL; - } - - return; -} - -/****************************************************************************** - - free_args() - - Free an argument list. - -******************************************************************************/ - -void free_args(arg_list_t *al) -{ - int i; - - ASSERT(al != NULL); - - for (i= 0; i < al->argc; i++) - { - ASSERT(al->argv[i] != NULL); - free(al->argv[i]); - al->argv[i]= NULL; - } - - free(al->argv); - al->argc= 0; - al->argv= NULL; - - return; -} - -/****************************************************************************** - - sleep_until_file_deleted() - - Sleep until the given file is no longer found. - -******************************************************************************/ - -#ifndef __WIN__ -int sleep_until_file_deleted(char *pid_file) -#else -int sleep_until_file_deleted(HANDLE pid_file) -#endif -{ - int err= 0; /* Initiate to supress warning */ -#ifndef __WIN__ - struct stat buf; - int i; - - for (i= 0; (i < TRY_MAX) && (err= !stat(pid_file, &buf)); i++) sleep(1); - - if (err != 0) err= errno; -#else - err= (WaitForSingleObject(pid_file, TRY_MAX*1000) == WAIT_TIMEOUT); -#endif - return err; -} - -/****************************************************************************** - - sleep_until_file_exists() - - Sleep until the given file exists. - -******************************************************************************/ - -#ifndef __WIN__ -int sleep_until_file_exists(char *pid_file) -#else -int sleep_until_file_exists(HANDLE pid_file) -#endif -{ - int err= 0; /* Initiate to supress warning */ -#ifndef __WIN__ - struct stat buf; - int i; - - for (i= 0; (i < TRY_MAX) && (err= stat(pid_file, &buf)); i++) sleep(1); - - if (err != 0) err= errno; -#else - err= (WaitForSingleObject(pid_file, TRY_MAX*1000) == WAIT_TIMEOUT); -#endif - return err; -} - -/****************************************************************************** - - wait_for_server_start() - - Wait for the server on the given port to start. - -******************************************************************************/ - -int wait_for_server_start(char *bin_dir __attribute__((unused)), - char *mysqladmin_file, - char *user, char *password, int port,char *tmp_dir) -{ - arg_list_t al; - int err= 0; - char trash[FN_REFLEN]; - - /* mysqladmin file */ - snprintf(trash, FN_REFLEN, "%s/trash.out",tmp_dir); - - /* args */ - init_args(&al); - add_arg(&al, "%s", mysqladmin_file); - add_arg(&al, "--no-defaults"); - add_arg(&al, "--port=%u", port); - add_arg(&al, "--user=%s", user); - add_arg(&al, "--password=%s", password); - add_arg(&al, "--silent"); - add_arg(&al, "--host=localhost"); - -#ifndef __NETWARE__ - add_arg(&al, "--connect_timeout=10"); - add_arg(&al, "-w"); - add_arg(&al, "--protocol=tcp"); -#endif - add_arg(&al, "ping"); - - /* - NetWare does not support the connect timeout in the TCP/IP stack - -- we will try the ping multiple times - */ -#ifndef __WIN__ - { - int i; - for (i= 0; - (i < TRY_MAX) && (err= spawn(mysqladmin_file, &al, TRUE, NULL, - trash, NULL, NULL)); - i++) - sleep(1); - } -#else - err= spawn(mysqladmin_file, &al, TRUE, NULL,trash, NULL, NULL); -#endif - - /* free args */ - free_args(&al); - - return err; -} - -/****************************************************************************** - - spawn() - - Spawn the given path with the given arguments. - -******************************************************************************/ - -#ifdef __NETWARE__ -int spawn(char *path, arg_list_t *al, int join, char *input, - char *output, char *error, char *pid_file) -{ - pid_t pid; - int result= 0; - wiring_t wiring= { FD_UNUSED, FD_UNUSED, FD_UNUSED }; - unsigned long flags= PROC_CURRENT_SPACE | PROC_INHERIT_CWD; - - /* open wiring */ - if (input) - wiring.infd= open(input, O_RDONLY); - - if (output) - wiring.outfd= open(output, O_WRONLY | O_CREAT | O_TRUNC); - - if (error) - wiring.errfd= open(error, O_WRONLY | O_CREAT | O_TRUNC); - - /* procve requires a NULL */ - add_arg(al, NULL); - - /* go */ - pid= procve(path, flags, NULL, &wiring, NULL, NULL, 0, - NULL, (const char **)al->argv); - - /* close wiring */ - if (wiring.infd != -1) - close(wiring.infd); - - if (wiring.outfd != -1) - close(wiring.outfd); - - if (wiring.errfd != -1) - close(wiring.errfd); - - return result; -} -#elif __WIN__ - -int spawn(char *path, arg_list_t *al, int join, char *input, - char *output, char *error, HANDLE *pid) -{ - bool result; - int i; - STARTUPINFO startup_info; - PROCESS_INFORMATION process_information; - DWORD exit_code; - char win_args[1024]= ""; - - /* Skip the first parameter */ - for (i= 1; i < al->argc; i++) - { - ASSERT(al->argv[i] != NULL); - strcat(win_args,al->argv[i]); - strcat(win_args," "); - } - - memset(&startup_info,0,sizeof(STARTUPINFO)); - startup_info.cb= sizeof(STARTUPINFO); - - if (input) - freopen(input, "rb", stdin); - - if (output) - freopen(output, "wb", stdout); - - if (error) - freopen(error, "wb", stderr); - - result= CreateProcess( - path, - (LPSTR)&win_args, - NULL, - NULL, - TRUE, - 0, - NULL, - NULL, - &startup_info, - &process_information - ); - - if (result && process_information.hProcess) - { - if (join) - { - if (WaitForSingleObject(process_information.hProcess, mysqld_timeout) - == WAIT_TIMEOUT) - { - exit_code= -1; - } - else - { - GetExitCodeProcess(process_information.hProcess, &exit_code); - } - CloseHandle(process_information.hProcess); - } - else - { - exit_code= 0; - } - if (pid != NULL) - *pid= process_information.hProcess; - } - else - { - exit_code= -1; - } - if (input) - freopen("CONIN$","rb",stdin); - if (output) - freopen("CONOUT$","wb",stdout); - if (error) - freopen("CONOUT$","wb",stderr); - - return exit_code; -} -#else -int spawn(char *path, arg_list_t *al, int join, char *input, - char *output, char *error, char *pid_file __attribute__((unused))) -{ - pid_t pid; - int res_exec= 0; - int result= 0; - - pid= fork(); - - if (pid == -1) - { - fprintf(stderr, "fork was't created\n"); - /* We can't create the fork...exit with error */ - return EXIT_FAILURE; - } - - if (pid > 0) - { - /* The parent process is waiting for child process if join is not zero */ - if (join) - { - waitpid(pid, &result, 0); - if (WIFEXITED(result) != 0) - { - result= WEXITSTATUS(result); - } - else - { - result= EXIT_FAILURE; - } - } - } - else - { - - /* Child process */ - add_arg(al, NULL); - - /* Reassign streams */ - if (input) - freopen(input, "r", stdin); - - if (output) - freopen(output, "w", stdout); - - if (error) - freopen(error, "w", stderr); - - /* Spawn the process */ - if ((res_exec= execve(path, al->argv, environ)) < 0) - exit(EXIT_FAILURE); - - /* Restore streams */ - if (input) - freopen("/dev/tty", "r", stdin); - - if (output) - freopen("/dev/tty", "w", stdout); - - if (error) - freopen("/dev/tty", "w", stderr); - - exit(0); - } - - return result; -} -#endif -/****************************************************************************** - - stop_server() - - Stop the server with the given port and pid file. - -******************************************************************************/ - -int stop_server(char *bin_dir __attribute__((unused)), char *mysqladmin_file, - char *user, char *password, int port, -#ifndef __WIN__ - char *pid_file, -#else - HANDLE pid_file, -#endif - char *tmp_dir) -{ - arg_list_t al; - int err= 0; - char trash[FN_REFLEN]; - - snprintf(trash, FN_REFLEN, "%s/trash.out",tmp_dir); - - /* args */ - init_args(&al); - add_arg(&al, "%s", mysqladmin_file); - add_arg(&al, "--no-defaults"); - add_arg(&al, "--port=%u", port); - add_arg(&al, "--user=%s", user); - add_arg(&al, "--password=%s", password); - add_arg(&al, "-O"); - add_arg(&al, "shutdown_timeout=20"); -#ifndef __NETWARE__ - add_arg(&al, "--protocol=tcp"); -#endif - add_arg(&al, "shutdown"); - - /* spawn */ - if ((err= spawn(mysqladmin_file, &al, TRUE, NULL, - trash, NULL, NULL)) == 0) - { - sleep_until_file_deleted(pid_file); - } - else - { -#ifndef __WIN__ - pid_t pid= get_server_pid(pid_file); - - /* shutdown failed - kill server */ - kill_server(pid); - - sleep(TRY_MAX); - - /* remove pid file if possible */ - err= remove(pid_file); -#else - TerminateProcess(pid_file,err); -#endif - } - - /* free args */ - free_args(&al); - - return err; -} - -/****************************************************************************** - - get_server_pid() - - Get the VM id with the given pid file. - -******************************************************************************/ - -#ifndef __WIN__ -pid_t get_server_pid(char *pid_file) -{ - char buf[FN_REFLEN]; - int fd, err; - char *p; - pid_t id= 0; - - /* discover id */ - fd= open(pid_file, O_RDONLY); - - err= read(fd, buf, FN_REFLEN); - - close(fd); - - if (err > 0) - { - /* terminate string */ - if ((p= strchr(buf, '\n')) != NULL) - { - *p= '\0'; - - /* check for a '\r' */ - if ((p= strchr(buf, '\r')) != NULL) - { - *p= '\0'; - } - } - else - { - buf[err]= '\0'; - } - - id= strtol(buf, NULL, 0); - } - - return id; -} - -/****************************************************************************** - - kill_server() - - Force a kill of the server with the given pid. - -******************************************************************************/ - -void kill_server(pid_t pid) -{ - if (pid > 0) - { -#if !defined(__NETWARE__) - /* Send SIGTERM to pid */ - kill(pid, SIGTERM); -#else /* __NETWARE__ */ - /* destroy vm */ - NXVmDestroy(pid); -#endif - } -} -#endif -/****************************************************************************** - - del_tree() - - Delete the directory and subdirectories. - -******************************************************************************/ - -void del_tree(char *dir) -{ -#ifndef __WIN__ - DIR *parent= opendir(dir); - struct dirent *entry; - char temp[FN_REFLEN]; - - if (parent == NULL) - { - return; - } - - while ((entry= readdir(parent)) != NULL) - { - /* create long name */ - snprintf(temp, FN_REFLEN, "%s/%s", dir, entry->d_name); - - if (entry->d_name[0] == '.') - { - /* Skip */ - } - else - { -/* FIXME missing test in acinclude.m4 */ -#ifndef STRUCT_DIRENT_HAS_D_TYPE - struct stat st; - - if (lstat(entry->d_name, &st) == -1) - { - /* FIXME error */ - return; - } - if (S_ISDIR(st.st_mode)) -#else - if (S_ISDIR(entry->d_type)) -#endif - { - /* delete subdirectory */ - del_tree(temp); - } - else - { - /* remove file */ - remove(temp); - } - } - } - /* remove directory */ - rmdir(dir); -#else - struct _finddata_t parent; -#if defined(_MSC_VER) && _MSC_VER > 1200 - intptr_t handle; -#else - long handle; -#endif /* _MSC_VER && _MSC_VER > 1200 */ - char temp[FN_REFLEN]; - char mask[FN_REFLEN]; - - snprintf(mask,FN_REFLEN,"%s/*.*",dir); - - if ((handle=_findfirst(mask,&parent)) == -1L) - { - return; - } - - do - { - /* create long name */ - snprintf(temp, FN_REFLEN, "%s/%s", dir, parent.name); - if (parent.name[0] == '.') - { - /* Skip */ - } - else - if (parent.attrib & _A_SUBDIR) - { - /* delete subdirectory */ - del_tree(temp); - } - else - { - /* remove file */ - remove(temp); - } - } while (_findnext(handle,&parent) == 0); - - _findclose(handle); - - /* remove directory */ - _rmdir(dir); -#endif -} - -/****************************************************************************** - - removef() - -******************************************************************************/ - -int removef(const char *format, ...) -{ -#ifdef __NETWARE__ - va_list ap; - char path[FN_REFLEN]; - - va_start(ap, format); - - vsnprintf(path, FN_REFLEN, format, ap); - - va_end(ap); - return remove(path); - -#elif __WIN__ - { - va_list ap; - char path[FN_REFLEN]; - struct _finddata_t parent; -#if defined(_MSC_VER) && _MSC_VER > 1200 - intptr_t handle; -#else - long handle; -#endif /* _MSC_VER && _MSC_VER > 1200 */ - char temp[FN_REFLEN]; - char *p; - - va_start(ap, format); - - vsnprintf(path, FN_REFLEN, format, ap); - - va_end(ap); - - p= path + strlen(path); - while (*p != '\\' && *p != '/' && p > path) p--; - - if ((handle=_findfirst(path,&parent)) == -1L) - { - /* if there is not files....it's ok */ - return 0; - } - - *p= '\0'; - - do - { - if (! (parent.attrib & _A_SUBDIR)) - { - snprintf(temp, FN_REFLEN, "%s/%s", path, parent.name); - remove(temp); - } - }while (_findnext(handle,&parent) == 0); - - _findclose(handle); - } -#else - DIR *parent; - struct dirent *entry; - char temp[FN_REFLEN]; - va_list ap; - char path[FN_REFLEN]; - char *p; - /* Get path with mask */ - va_start(ap, format); - - vsnprintf(path, FN_REFLEN, format, ap); - - va_end(ap); - - p= path + strlen(path); - while (*p != '\\' && *p != '/' && p > path) p--; - *p= '\0'; - p++; - - parent= opendir(path); - - if (parent == NULL) - { - return 1; /* Error, directory missing */ - } - - while ((entry= readdir(parent)) != NULL) - { - /* entry is not directory and entry matches with mask */ -#ifndef STRUCT_DIRENT_HAS_D_TYPE - struct stat st; - - /* create long name */ - snprintf(temp, FN_REFLEN, "%s/%s", path, entry->d_name); - - if (lstat(temp, &st) == -1) - { - return 1; /* Error couldn't lstat file */ - } - - if (!S_ISDIR(st.st_mode) && !fnmatch(p, entry->d_name,0)) -#else - if (!S_ISDIR(entry->d_type) && !fnmatch(p, entry->d_name,0)) -#endif - { - /* create long name */ - snprintf(temp, FN_REFLEN, "%s/%s", path, entry->d_name); - /* Delete only files */ - remove(temp); - } - } -#endif - return 0; -} - -/****************************************************************************** - - get_basedir() - -******************************************************************************/ - -void get_basedir(char *argv0, char *basedir) -{ - char temp[FN_REFLEN]; - char *p; - int position; - - ASSERT(argv0 != NULL); - ASSERT(basedir != NULL); - - strcpy(temp, strlwr(argv0)); - while ((p= strchr(temp, '\\')) != NULL) *p= '/'; - - if ((position= strinstr(temp, "/bin/")) != 0) - { - p= temp + position; - *p= '\0'; - strcpy(basedir, temp); - } -} - -uint strinstr(reg1 const char *str,reg4 const char *search) -{ - reg2 my_string i,j; - my_string start= (my_string) str; - - skipp: - while (*str != '\0') - { - if (*str++ == *search) - { - i=(my_string) str; - j= (my_string) search+1; - while (*j) - if (*i++ != *j++) goto skipp; - return ((uint) (str - start)); - } - } - return (0); -} - -/****************************************************************************** - - remove_empty_file() - -******************************************************************************/ - -void remove_empty_file(const char *file_name) -{ - struct stat file; - - if (!stat(file_name,&file)) - { - if (!file.st_size) - remove(file_name); - } -} |