Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
24918973
Commit
24918973
authored
Dec 25, 2001
by
sasha@mysql.sashanet.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some work on mysql_install
parent
0048a58f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
196 additions
and
3 deletions
+196
-3
.bzrignore
.bzrignore
+1
-0
extra/Makefile.am
extra/Makefile.am
+1
-1
extra/mysql_install.c
extra/mysql_install.c
+194
-2
No files found.
.bzrignore
View file @
24918973
...
...
@@ -447,3 +447,4 @@ vio/test-sslserver
vio/viotest-ssl
sql-bench/test-transactions
libmysqld/sql_do.cc
extra/mysql_install
extra/Makefile.am
View file @
24918973
...
...
@@ -18,7 +18,7 @@ INCLUDES = @MT_INCLUDES@ -I$(srcdir)/../include -I../include -I..
LDADD
=
@CLIENT_EXTRA_LDFLAGS@ ../mysys/libmysys.a
\
../dbug/libdbug.a ../strings/libmystrings.a
bin_PROGRAMS
=
replace comp_err perror resolveip my_print_defaults
\
resolve_stack_dump
resolve_stack_dump
mysql_install
OMIT_DEPENDENCIES
=
pthread.h stdio.h __stdio.h stdlib.h __stdlib.h math.h
\
__math.h time.h __time.h unistd.h __unistd.h types.h
\
...
...
extra/mysql_install.c
View file @
24918973
...
...
@@ -21,7 +21,7 @@
#define INSTALL_VERSION "1.0"
#define DONT_USE_RAID
#include <global.h>
#include <
my_
global.h>
#include <m_ctype.h>
#include <my_sys.h>
#include <m_string.h>
...
...
@@ -29,13 +29,195 @@
#include <errno.h>
#include <getopt.h>
#define ANSWERS_CHUNCK 32
int
have_gui
=
0
;
struct
option
long_options
[]
=
{
{
"help"
,
no_argument
,
0
,
'
h
'
},
{
"help"
,
no_argument
,
0
,
'
?
'
},
{
"version"
,
no_argument
,
0
,
'V'
},
{
0
,
0
,
0
,
0
}
};
/* For now, not much exciting here, but we'll add more once
we add GUI support
*/
typedef
struct
{
FILE
*
out
;
FILE
*
in
;
const
char
*
question
;
int
default_ind
;
DYNAMIC_ARRAY
answers
;
}
QUESTION_WIDGET
;
static
void
usage
();
static
void
die
(
const
char
*
fmt
,
...);
static
void
print_version
(
void
);
static
char
get_answer_char
(
int
ans_ind
);
static
int
ask_user
(
const
char
*
question
,
int
default_ind
,
...);
static
void
add_answer
(
QUESTION_WIDGET
*
w
,
const
char
*
ans
);
static
void
display_question
(
QUESTION_WIDGET
*
w
);
static
int
init_question_widget
(
QUESTION_WIDGET
*
w
,
const
char
*
question
,
int
default_ind
);
static
void
end_question_widget
(
QUESTION_WIDGET
*
w
);
static
int
get_answer
(
QUESTION_WIDGET
*
w
);
static
char
answer_from_char
(
char
c
);
static
void
invalid_answer
(
QUESTION_WIDGET
*
w
);
enum
{
IMODE_STANDARD
=
0
,
IMODE_CUSTOM
,
IMODE_UPGRAGE
}
install_mode
=
IMODE_STANDARD
;
static
char
get_answer_char
(
int
ans_ind
)
{
return
'a'
+
ans_ind
;
}
static
void
invalid_answer
(
QUESTION_WIDGET
*
w
)
{
if
(
!
have_gui
)
{
fprintf
(
w
->
out
,
"ERROR: invalid answer, try again...
\a\n
"
);
}
}
static
char
answer_from_char
(
char
c
)
{
return
c
-
'a'
;
}
static
void
die
(
const
char
*
fmt
,
...)
{
va_list
args
;
va_start
(
args
,
fmt
);
fprintf
(
stderr
,
"%s: "
,
my_progname
);
vfprintf
(
stderr
,
fmt
,
args
);
fprintf
(
stderr
,
"
\n
"
);
va_end
(
args
);
exit
(
1
);
}
static
void
display_question
(
QUESTION_WIDGET
*
w
)
{
if
(
!
have_gui
)
{
uint
i
,
num_answers
=
w
->
answers
.
elements
;
DYNAMIC_ARRAY
*
answers
=
&
w
->
answers
;
fprintf
(
w
->
out
,
"
\n
%s
\n\n
"
,
w
->
question
);
for
(
i
=
0
;
i
<
num_answers
;
i
++
)
{
char
*
ans
;
get_dynamic
(
answers
,(
gptr
)
&
ans
,
i
);
fprintf
(
w
->
out
,
"%c - %s
\n
"
,
get_answer_char
(
i
),
ans
);
}
fprintf
(
w
->
out
,
"q - Abort Install/Upgrade
\n\n
"
);
}
}
static
void
add_answer
(
QUESTION_WIDGET
*
w
,
const
char
*
ans
)
{
insert_dynamic
(
&
w
->
answers
,(
gptr
)
&
ans
);
}
static
int
init_question_widget
(
QUESTION_WIDGET
*
w
,
const
char
*
question
,
int
default_ind
)
{
if
(
have_gui
)
{
w
->
in
=
w
->
out
=
0
;
}
else
{
w
->
out
=
stdout
;
w
->
in
=
stdin
;
}
w
->
question
=
question
;
w
->
default_ind
=
default_ind
;
if
(
init_dynamic_array
(
&
w
->
answers
,
sizeof
(
char
*
),
ANSWERS_CHUNCK
,
ANSWERS_CHUNCK
))
die
(
"Out of memory"
);
return
0
;
}
static
void
end_question_widget
(
QUESTION_WIDGET
*
w
)
{
delete_dynamic
(
&
w
->
answers
);
}
static
int
get_answer
(
QUESTION_WIDGET
*
w
)
{
if
(
!
have_gui
)
{
char
buf
[
32
];
int
ind
;
char
c
;
if
(
!
fgets
(
buf
,
sizeof
(
buf
),
w
->
in
))
die
(
"Failed fgets on input stream"
);
switch
((
c
=
tolower
(
*
buf
)))
{
case
'\n'
:
return
w
->
default_ind
;
case
'q'
:
die
(
"Install/Upgrade aborted"
);
default:
ind
=
answer_from_char
(
c
);
if
(
ind
>=
0
&&
ind
<
(
int
)
w
->
answers
.
elements
)
return
ind
;
}
}
return
-
1
;
}
static
int
ask_user
(
const
char
*
question
,
int
default_ind
,
...)
{
va_list
args
;
char
*
opt
;
QUESTION_WIDGET
w
;
int
ans
;
va_start
(
args
,
default_ind
);
init_question_widget
(
&
w
,
question
,
default_ind
);
for
(;(
opt
=
va_arg
(
args
,
char
*
));)
{
add_answer
(
&
w
,
opt
);
}
for
(;;)
{
display_question
(
&
w
);
if
((
ans
=
get_answer
(
&
w
))
>=
0
)
break
;
invalid_answer
(
&
w
);
}
end_question_widget
(
&
w
);
va_end
(
args
);
return
ans
;
}
static
int
parse_args
(
int
argc
,
char
**
argv
)
{
int
c
,
option_index
=
0
;
while
((
c
=
getopt_long
(
argc
,
argv
,
"?V"
,
long_options
,
&
option_index
))
!=
EOF
)
{
switch
(
c
)
{
case
'V'
:
print_version
();
exit
(
0
);
case
'?'
:
usage
();
exit
(
0
);
default:
usage
();
exit
(
1
);
}
}
return
0
;
}
static
void
print_version
(
void
)
{
printf
(
"%s Ver %s Distrib %s, for %s (%s)
\n
"
,
my_progname
,
INSTALL_VERSION
,
...
...
@@ -55,6 +237,16 @@ static void usage()
-V, --version Output version information and exit.
\n
"
);
}
int
main
(
int
argc
,
char
**
argv
)
{
MY_INIT
(
argv
[
0
]);
parse_args
(
argc
,
argv
);
install_mode
=
ask_user
(
"Please select install/upgrade mode"
,
install_mode
,
"Standard Install"
,
"Custom Install"
,
"Upgrade"
,
0
);
printf
(
"mode=%d
\n
"
,
install_mode
);
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment