From a56e488ac0ff9842723caad4b6965f8079d4e3da Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 11 Apr 2006 18:54:24 -0700 Subject: 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 --- mysql-test/my_manage.c | 887 ------------------------------------------------- 1 file changed, 887 deletions(-) delete mode 100644 mysql-test/my_manage.c (limited to 'mysql-test/my_manage.c') 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 -#include -#ifndef __WIN__ -#include -#endif -#include -#ifdef __NETWARE__ -#include -#include -#else -#include -#ifndef __WIN__ -#include -#include -#include -#include /* FIXME HAVE_FNMATCH_H or something */ -#else -#include -#include -#include -#endif -#endif -#include -#include -#include -#include - -#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); - } -} -- cgit v1.2.1