diff options
Diffstat (limited to 'netware/mysql_install_db.c')
-rw-r--r-- | netware/mysql_install_db.c | 447 |
1 files changed, 0 insertions, 447 deletions
diff --git a/netware/mysql_install_db.c b/netware/mysql_install_db.c deleted file mode 100644 index 98852c89825..00000000000 --- a/netware/mysql_install_db.c +++ /dev/null @@ -1,447 +0,0 @@ -/* - Copyright (c) 2002 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 <stdlib.h> -#include <stdio.h> -#include <netdb.h> -#include <sys/stat.h> -#include <monitor.h> -#include <strings.h> -#include <getopt.h> -#include <screen.h> -#include <errno.h> - -#include "my_config.h" -#include "my_manage.h" - -/****************************************************************************** - - global variables - -******************************************************************************/ -char autoclose; -char basedir[PATH_MAX]; -char datadir[PATH_MAX]; -char err_log[PATH_MAX]; -char out_log[PATH_MAX]; -char mysqld[PATH_MAX]; -char hostname[PATH_MAX]; -char sql_file[PATH_MAX]; -char default_option[PATH_MAX]; - -/****************************************************************************** - - prototypes - -******************************************************************************/ - -void start_defaults(int, char*[]); -void finish_defaults(); -void read_defaults(arg_list_t *); -void parse_args(int, char*[]); -void get_options(int, char*[]); -void create_paths(); -int mysql_install_db(int argc, char *argv[]); - -/****************************************************************************** - - functions - -******************************************************************************/ - -/****************************************************************************** - - start_defaults() - - Start setting the defaults. - -******************************************************************************/ -void start_defaults(int argc, char *argv[]) -{ - struct stat buf; - int i; - - // default options - static char *default_options[] = - { - "--no-defaults", - "--defaults-file=", - "--defaults-extra-file=", - NULL - }; - - // autoclose - autoclose = FALSE; - - // basedir - get_basedir(argv[0], basedir); - - // hostname - if (gethostname(hostname,PATH_MAX) < 0) - { - // default - strcpy(hostname,"mysql"); - } - - // default option - default_option[0] = NULL; - for (i=0; (argc > 1) && default_options[i]; i++) - { - if(!strnicmp(argv[1], default_options[i], strlen(default_options[i]))) - { - strncpy(default_option, argv[1], PATH_MAX); - break; - } - } - - // set after basedir is established - datadir[0] = NULL; - err_log[0] = NULL; - out_log[0] = NULL; - mysqld[0] = NULL; - sql_file[0] = NULL; -} - -/****************************************************************************** - - finish_defaults() - - Finish setting the defaults. - -******************************************************************************/ -void finish_defaults() -{ - struct stat buf; - int i; - - // datadir - if (!datadir[0]) snprintf(datadir, PATH_MAX, "%s/data", basedir); - - // err-log - if (!err_log[0]) snprintf(err_log, PATH_MAX, "%s/%s.err", datadir, hostname); - - // out-log - if (!out_log[0]) snprintf(out_log, PATH_MAX, "%s/%s.out", datadir, hostname); - - // sql-file - if (!sql_file[0]) snprintf(sql_file, PATH_MAX, "%s/bin/init_db.sql", basedir); - - // mysqld - if (!mysqld[0]) snprintf(mysqld, PATH_MAX, "%s/bin/mysqld", basedir); -} - -/****************************************************************************** - - read_defaults() - - Read the defaults. - -******************************************************************************/ -void read_defaults(arg_list_t *pal) -{ - arg_list_t al; - char defaults_file[PATH_MAX]; - char mydefaults[PATH_MAX]; - char line[PATH_MAX]; - FILE *fp; - - // defaults output file - snprintf(defaults_file, PATH_MAX, "%s/bin/defaults.out", basedir); - remove(defaults_file); - - // mysqladmin file - snprintf(mydefaults, PATH_MAX, "%s/bin/my_print_defaults", basedir); - - // args - init_args(&al); - add_arg(&al, mydefaults); - if (default_option[0]) add_arg(&al, default_option); - add_arg(&al, "mysqld"); - add_arg(&al, "mysql_install_db"); - - spawn(mydefaults, &al, TRUE, NULL, defaults_file, NULL); - - free_args(&al); - - // gather defaults - if((fp = fopen(defaults_file, "r")) != NULL) - { - while(fgets(line, PATH_MAX, fp)) - { - char *p; - - // remove end-of-line character - if ((p = strrchr(line, '\n')) != NULL) *p = '\0'; - - // add the option as an argument - add_arg(pal, line); - } - - fclose(fp); - } - - // remove file - remove(defaults_file); -} - -/****************************************************************************** - - parse_args() - - Get the options. - -******************************************************************************/ -void parse_args(int argc, char *argv[]) -{ - int index = 0; - int c; - - // parse options - enum opts - { - OPT_BASEDIR = 0xFF, - OPT_DATADIR, - OPT_SQL_FILE - }; - - static struct option options[] = - { - {"autoclose", no_argument, &autoclose, TRUE}, - {"basedir", required_argument, 0, OPT_BASEDIR}, - {"datadir", required_argument, 0, OPT_DATADIR}, - {"sql-file", required_argument, 0, OPT_SQL_FILE}, - {0, 0, 0, 0} - }; - - // we have to reset getopt_long because we use it multiple times - optind = 1; - - // turn off error reporting - opterr = 0; - - while ((c = getopt_long(argc, argv, "b:h:", options, &index)) >= 0) - { - switch (c) - { - case OPT_BASEDIR: - case 'b': - strcpy(basedir, optarg); - break; - - case OPT_DATADIR: - case 'h': - strcpy(datadir, optarg); - break; - - case OPT_SQL_FILE: - strcpy(sql_file, optarg); - break; - - default: - // ignore - break; - } - } -} - -/****************************************************************************** - - get_options() - - Get the options. - -******************************************************************************/ -void get_options(int argc, char *argv[]) -{ - arg_list_t al; - - // start defaults - start_defaults(argc, argv); - - // default file arguments - init_args(&al); - add_arg(&al, "ignore"); - read_defaults(&al); - parse_args(al.argc, al.argv); - free_args(&al); - - // command-line arguments - parse_args(argc, argv); - - // finish defaults - finish_defaults(); -} - -/****************************************************************************** - - create_paths() - - Create database paths. - -******************************************************************************/ -void create_paths() -{ - struct stat info; - char temp[PATH_MAX]; - - // check for tables - snprintf(temp, PATH_MAX, "%s/mysql/host.frm", datadir); - if (!stat(temp, &info)) - { - printf("A database already exists in the directory:\n"); - printf("\t%s\n\n", datadir); - exit(-1); - } - - // data directory - if (stat(datadir, &info)) - { - mkdir(datadir, 0); - } -} - -/****************************************************************************** - - mysql_install_db() - - Install the database. - -******************************************************************************/ -int mysql_install_db(int argc, char *argv[]) -{ - arg_list_t al; - int i, j, err; - char skip; - struct stat info; - - // private options - static char *private_options[] = - { - "--autoclose", - "--sql-file=", - NULL - }; - - // args - init_args(&al); - add_arg(&al, "%s", mysqld); - - // parent args - for(i = 1; i < argc; i++) - { - skip = FALSE; - - // skip private arguments - for (j=0; private_options[j]; j++) - { - if(!strnicmp(argv[i], private_options[j], strlen(private_options[j]))) - { - skip = TRUE; - break; - } - } - - if (!skip) add_arg(&al, "%s", argv[i]); - } - - add_arg(&al, "--bootstrap"); - add_arg(&al, "--skip-grant-tables"); - add_arg(&al, "--skip-innodb"); - - if ((err = stat(sql_file, &info)) != 0) - { - printf("ERROR - %s:\n", strerror(errno)); - printf("\t%s\n\n", sql_file); - // free args - free_args(&al); - exit(-1); - } - - if ((err = stat(sql_file, &info)) != 0) - { - printf("ERROR - %s:\n", strerror(errno)); - printf("\t%s\n\n", sql_file); - // free args - free_args(&al); - exit(-1); - } - - // spawn mysqld - err = spawn(mysqld, &al, TRUE, sql_file, out_log, err_log); - - // free args - free_args(&al); - - return err; -} - -/****************************************************************************** - - main() - -******************************************************************************/ -int main(int argc, char **argv) -{ - // get options - get_options(argc, argv); - - // check for an autoclose option - if (!autoclose) setscreenmode(SCR_NO_MODE); - - // header - printf("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE, - MACHINE_TYPE); - - // create paths - create_paths(); - - // install the database - if (mysql_install_db(argc, argv)) - { - printf("ERROR - Failed to create the database!\n"); - printf(" %s\n", strerror(errno)); - printf("See the following log for more information:\n"); - printf("\t%s\n\n", err_log); - exit(-1); - } - - // status - printf("Initial database successfully created in the directory:\n"); - printf("\t%s\n", datadir); - - // info - printf("\nPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !\n"); - - printf("\nThis is done with:\n"); - printf("\tmysqladmin -u root password 'new-password'\n"); - - printf("\nSee the manual for more instructions.\n"); - - printf("\nYou can start the MySQL daemon with:\n"); - printf("\tmysqld_safe\n"); - - printf("\nPlease report any problems with:\n"); - printf("\t/mysql/mysqlbug.txt\n"); - - printf("\nThe latest information about MySQL is available on the web at\n"); - printf("\thttp://www.mysql.com\n"); - - printf("\nSupport MySQL by buying support at http://shop.mysql.com\n\n"); - - return 0; -} |