~drizzle-trunk/drizzle/development

382 by Monty Taylor
Removed bogus copyright headers.
1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2008 MySQL
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; either version 2 of the License, or
9
 *  (at your option) any later version.
10
 *
11
 *  This program is distributed in the hope that it will be useful,
12
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 *  GNU General Public License for more details.
15
 *
16
 *  You should have received a copy of the GNU General Public License
17
 *  along with this program; if not, write to the Free Software
18
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19
 */
1 by brian
clean slate
20
206.3.1 by Patrick Galbraith
Most everything working with client rename
21
/* maintaince of drizzle databases */
1 by brian
clean slate
22
23
#include "client_priv.h"
24
#include <signal.h>
212.5.13 by Monty Taylor
Moved my_sys/my_pthread/my_nosys and mysys_err to mysys.
25
#include <mysys/my_pthread.h>				/* because of signal()	*/
1 by brian
clean slate
26
#include <sys/stat.h>
27
264.1.21 by forstm1w
Added gettext translations to strings.
28
/* Added this for string translation. */
538 by Monty Taylor
Moved gettext.h into drizzled in anticipation of the new client lib.
29
#include <drizzled/gettext.h>
264.1.21 by forstm1w
Added gettext translations to strings.
30
1 by brian
clean slate
31
#define ADMIN_VERSION "8.42"
32
#define SHUTDOWN_DEF_TIMEOUT 3600		/* Wait for shutdown */
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
33
165 by Brian Aker
mysqladmin patch (plus removal of password auth bits)
34
char *host= NULL, *user= NULL, *opt_password= NULL;
35
static bool interrupted= false, opt_verbose= false,tty_password= false; 
36
static uint32_t tcp_port= 0, option_wait= 0, option_silent= 0;
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
37
static uint32_t my_end_arg;
38
static uint32_t opt_connect_timeout, opt_shutdown_timeout;
1 by brian
clean slate
39
static myf error_flags; /* flags to pass to my_printf_error, like ME_BELL */
40
520.4.43 by mordred
A set of Solaris fixes.
41
using namespace std;
42
1 by brian
clean slate
43
/*
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
44
  Forward declarations 
1 by brian
clean slate
45
*/
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
46
static void usage(void);
1 by brian
clean slate
47
static void print_version(void);
454 by Monty Taylor
Removed RETSIGHANDLER to sig_handler define.
48
extern "C" RETSIGTYPE endprog(int signal_number);
143 by Brian Aker
Bool cleanup.
49
extern "C" bool get_one_option(int optid, const struct my_option *opt,
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
50
                               char *argument);
206.3.1 by Patrick Galbraith
Most everything working with client rename
51
static int execute_commands(DRIZZLE *drizzle,int argc, char **argv);
52
static bool sql_connect(DRIZZLE *drizzle, uint wait);
1 by brian
clean slate
53
54
/*
55
  The order of commands must be the same as command_names,
56
  except ADMIN_ERROR
57
*/
58
enum commands {
59
  ADMIN_ERROR,
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
60
  ADMIN_SHUTDOWN,
61
  ADMIN_PING
1 by brian
clean slate
62
};
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
63
1 by brian
clean slate
64
static const char *command_names[]= {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
65
  "shutdown",
66
  "ping",
461 by Monty Taylor
Removed NullS. bu-bye.
67
  NULL
1 by brian
clean slate
68
};
69
70
static TYPELIB command_typelib=
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
71
{ array_elements(command_names)-1,"commands", command_names, NULL };
1 by brian
clean slate
72
73
static struct my_option my_long_options[] =
74
{
264.1.21 by forstm1w
Added gettext translations to strings.
75
  {"help", '?', N_("Display this help and exit."), 0, 0, 0, GET_NO_ARG,
1 by brian
clean slate
76
   NO_ARG, 0, 0, 0, 0, 0, 0},
264.1.21 by forstm1w
Added gettext translations to strings.
77
  {"host", 'h', N_("Connect to host."), (char**) &host, (char**) &host, 0, GET_STR,
1 by brian
clean slate
78
   REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
79
  {"password", 'p',
264.1.21 by forstm1w
Added gettext translations to strings.
80
   N_("Password to use when connecting to server. If password is not given it's asked from the tty."),
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
81
   0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
264.1.21 by forstm1w
Added gettext translations to strings.
82
  {"port", 'P', N_("Port number to use for connection or 0 for default to, in "
520.4.28 by Monty Taylor
Changed my.cnf to drizzle.cnf and /etc/mysql to /etc/drizzle.
83
   "order of preference, drizzle.cnf, $DRIZZLE_TCP_PORT, "
301 by Brian Aker
Clean up port startup
84
   "built-in default (" STRINGIFY_ARG(DRIZZLE_PORT) ")."),
77.1.77 by Monty Taylor
A crapton more warning cleanups (I turned on more warnings)
85
   (char**) &tcp_port,
86
   (char**) &tcp_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
264.1.21 by forstm1w
Added gettext translations to strings.
87
  {"silent", 's', N_("Silently exit if one can't connect to server."),
1 by brian
clean slate
88
   0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
89
#ifndef DONT_ALLOW_USER_CHANGE
264.1.21 by forstm1w
Added gettext translations to strings.
90
  {"user", 'u', N_("User for login if not current user."), (char**) &user,
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
91
   (char**) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
92
#endif
264.1.21 by forstm1w
Added gettext translations to strings.
93
  {"verbose", 'v', N_("Write more information."), (char**) &opt_verbose,
77.1.77 by Monty Taylor
A crapton more warning cleanups (I turned on more warnings)
94
   (char**) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
264.1.21 by forstm1w
Added gettext translations to strings.
95
  {"version", 'V', N_("Output version information and exit."), 0, 0, 0, GET_NO_ARG,
1 by brian
clean slate
96
   NO_ARG, 0, 0, 0, 0, 0, 0},
264.1.21 by forstm1w
Added gettext translations to strings.
97
  {"wait", 'w', N_("Wait and retry if connection is down."), 0, 0, 0, GET_UINT,
1 by brian
clean slate
98
   OPT_ARG, 0, 0, 0, 0, 0, 0},
77.1.77 by Monty Taylor
A crapton more warning cleanups (I turned on more warnings)
99
  {"connect_timeout", OPT_CONNECT_TIMEOUT, "", (char**) &opt_connect_timeout,
100
   (char**) &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, 3600*12, 0,
1 by brian
clean slate
101
   3600*12, 0, 1, 0},
77.1.77 by Monty Taylor
A crapton more warning cleanups (I turned on more warnings)
102
  {"shutdown_timeout", OPT_SHUTDOWN_TIMEOUT, "", (char**) &opt_shutdown_timeout,
103
   (char**) &opt_shutdown_timeout, 0, GET_ULONG, REQUIRED_ARG,
1 by brian
clean slate
104
   SHUTDOWN_DEF_TIMEOUT, 0, 3600*12, 0, 1, 0},
105
  { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
106
};
107
108
206.3.1 by Patrick Galbraith
Most everything working with client rename
109
static const char *load_default_groups[]= { "drizzleadmin","client",0 };
1 by brian
clean slate
110
143 by Brian Aker
Bool cleanup.
111
bool
1 by brian
clean slate
112
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
113
               char *argument)
1 by brian
clean slate
114
{
115
  int error = 0;
116
117
  switch(optid) {
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
118
  case 'p':
119
    if (argument)
120
    {
121
      char *start=argument;
477 by Monty Taylor
Removed my_free(). It turns out that it had been def'd to ignore the flags passed to it in the second arg anyway. Gotta love that.
122
      free(opt_password);
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
123
      opt_password= my_strdup(argument,MYF(MY_FAE));
124
      while (*argument) *argument++= 'x';   /* Destroy argument */
125
      if (*start)
126
        start[1]=0; /* Cut length of argument */
127
      tty_password= 0;
128
    }
129
    else 
130
      tty_password= 1; 
131
    break;
1 by brian
clean slate
132
  case 's':
133
    option_silent++;
134
    break;
135
  case 'V':
136
    print_version();
137
    exit(0);
138
    break;
139
  case 'w':
140
    if (argument)
141
    {
142
      if ((option_wait=atoi(argument)) <= 0)
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
143
        option_wait=1;
1 by brian
clean slate
144
    }
145
    else
146
      option_wait= ~(uint)0;
147
    break;
148
  case '?':
149
  case 'I':					/* Info */
150
    error++;
151
    break;
152
  }
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
153
1 by brian
clean slate
154
  if (error)
155
  {
156
    usage();
157
    exit(1);
158
  }
159
  return 0;
160
}
161
162
int main(int argc,char *argv[])
163
{
164
  int error= 0, ho_error;
206.3.1 by Patrick Galbraith
Most everything working with client rename
165
  DRIZZLE drizzle;
1 by brian
clean slate
166
  char **commands, **save_argv;
167
168
  MY_INIT(argv[0]);
202.2.4 by Monty Taylor
Merged from Patrick.
169
  drizzle_create(&drizzle);
520.4.28 by Monty Taylor
Changed my.cnf to drizzle.cnf and /etc/mysql to /etc/drizzle.
170
  load_defaults("drizzle",load_default_groups,&argc,&argv);
1 by brian
clean slate
171
  save_argv = argv;				/* Save for free_defaults */
172
  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
173
  {
174
    free_defaults(save_argv);
175
    exit(ho_error);
176
  }
177
178
  if (argc == 0)
179
  {
180
    usage();
181
    exit(1);
182
  }
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
183
1 by brian
clean slate
184
  commands = argv;
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
185
  if (tty_password)
461 by Monty Taylor
Removed NullS. bu-bye.
186
    opt_password = get_tty_password(NULL);
1 by brian
clean slate
187
398.1.10 by Monty Taylor
Actually removed VOID() this time.
188
  signal(SIGINT,endprog);			/* Here if abort */
189
  signal(SIGTERM,endprog);		/* Here if abort */
1 by brian
clean slate
190
191
  if (opt_connect_timeout)
192
  {
193
    uint tmp=opt_connect_timeout;
206.3.1 by Patrick Galbraith
Most everything working with client rename
194
    drizzle_options(&drizzle,DRIZZLE_OPT_CONNECT_TIMEOUT, (char*) &tmp);
1 by brian
clean slate
195
  }
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
196
197
  error_flags= (myf)0;
1 by brian
clean slate
198
206.3.1 by Patrick Galbraith
Most everything working with client rename
199
  if (sql_connect(&drizzle, option_wait))
1 by brian
clean slate
200
  {
206.3.1 by Patrick Galbraith
Most everything working with client rename
201
    unsigned int err= drizzle_errno(&drizzle);
1 by brian
clean slate
202
    if (err >= CR_MIN_ERROR && err <= CR_MAX_ERROR)
203
      error= 1;
204
    else
205
    {
206
      /* Return 0 if all commands are PING */
207
      for (; argc > 0; argv++, argc--)
208
      {
209
        if (find_type(argv[0], &command_typelib, 2) != ADMIN_PING)
210
        {
211
          error= 1;
212
          break;
213
        }
214
      }
215
    }
216
  }
217
  else
218
  {
206.3.1 by Patrick Galbraith
Most everything working with client rename
219
    error=execute_commands(&drizzle,argc,commands);
220
    drizzle_close(&drizzle);
1 by brian
clean slate
221
  }
477 by Monty Taylor
Removed my_free(). It turns out that it had been def'd to ignore the flags passed to it in the second arg anyway. Gotta love that.
222
  free(opt_password);
223
  free(user);
1 by brian
clean slate
224
  free_defaults(save_argv);
225
  my_end(my_end_arg);
226
  exit(error ? 1 : 0);
227
}
228
454 by Monty Taylor
Removed RETSIGHANDLER to sig_handler define.
229
RETSIGTYPE endprog(int signal_number __attribute__((unused)))
1 by brian
clean slate
230
{
231
  interrupted=1;
232
}
233
206.3.1 by Patrick Galbraith
Most everything working with client rename
234
static bool sql_connect(DRIZZLE *drizzle, uint wait)
1 by brian
clean slate
235
{
143 by Brian Aker
Bool cleanup.
236
  bool info=0;
1 by brian
clean slate
237
238
  for (;;)
239
  {
461 by Monty Taylor
Removed NullS. bu-bye.
240
    if (drizzle_connect(drizzle,host,user,opt_password,NULL,tcp_port,NULL,0))
1 by brian
clean slate
241
    {
206.3.1 by Patrick Galbraith
Most everything working with client rename
242
      drizzle->reconnect= 1;
1 by brian
clean slate
243
      if (info)
244
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
245
        fputs("\n",stderr);
246
        (void) fflush(stderr);
1 by brian
clean slate
247
      }
248
      return 0;
249
    }
250
251
    if (!wait)
252
    {
253
      if (!option_silent)
254
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
255
        if (!host)
256
          host= (char*) LOCAL_HOST;
257
264.1.21 by forstm1w
Added gettext translations to strings.
258
        my_printf_error(0,_("connect to server at '%s' failed\nerror: '%s'"),
206.3.1 by Patrick Galbraith
Most everything working with client rename
259
        error_flags, host, drizzle_error(drizzle));
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
260
206.3.1 by Patrick Galbraith
Most everything working with client rename
261
        if (drizzle_errno(drizzle) == CR_CONN_HOST_ERROR ||
262
          drizzle_errno(drizzle) == CR_UNKNOWN_HOST)
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
263
        {
264.1.21 by forstm1w
Added gettext translations to strings.
264
          fprintf(stderr,_("Check that drizzled is running on %s"),host);
265
          fprintf(stderr,_(" and that the port is %d.\n"),
390.1.5 by Monty Taylor
Moved more functions into drizzle.c as part of the split of code.
266
          tcp_port ? tcp_port: drizzle_get_default_port());
264.1.21 by forstm1w
Added gettext translations to strings.
267
          fprintf(stderr,_("You can check this by doing 'telnet %s %d'\n"),
390.1.5 by Monty Taylor
Moved more functions into drizzle.c as part of the split of code.
268
                  host, tcp_port ? tcp_port: drizzle_get_default_port());
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
269
        }
1 by brian
clean slate
270
      }
271
      return 1;
272
    }
365.2.8 by Monty Taylor
More MAX macros.
273
    if (wait != UINT32_MAX)
1 by brian
clean slate
274
      wait--;				/* One less retry */
206.3.1 by Patrick Galbraith
Most everything working with client rename
275
    if ((drizzle_errno(drizzle) != CR_CONN_HOST_ERROR) &&
276
        (drizzle_errno(drizzle) != CR_CONNECTION_ERROR))
1 by brian
clean slate
277
    {
264.1.21 by forstm1w
Added gettext translations to strings.
278
      fprintf(stderr,_("Got error: %s\n"), drizzle_error(drizzle));
1 by brian
clean slate
279
    }
280
    else if (!option_silent)
281
    {
282
      if (!info)
283
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
284
        info=1;
264.1.21 by forstm1w
Added gettext translations to strings.
285
        fputs(_("Waiting for Drizzle server to answer"),stderr);
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
286
        (void) fflush(stderr);
1 by brian
clean slate
287
      }
288
      else
289
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
290
        putc('.',stderr);
291
        (void) fflush(stderr);
1 by brian
clean slate
292
      }
293
    }
294
    sleep(5);
295
  }
296
}
297
298
/*
299
  Execute a command.
300
  Return 0 on ok
301
	 -1 on retryable error
302
	 1 on fatal error
303
*/
206.3.1 by Patrick Galbraith
Most everything working with client rename
304
static int execute_commands(DRIZZLE *drizzle,int argc, char **argv)
1 by brian
clean slate
305
{
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
306
1 by brian
clean slate
307
  /*
206.3.1 by Patrick Galbraith
Most everything working with client rename
308
    DRIZZLE documentation relies on the fact that drizzleadmin will
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
309
    execute commands in the order specified.
1 by brian
clean slate
310
    If this behaviour is ever changed, Docs should be notified.
311
  */
312
  for (; argc > 0 ; argv++,argc--)
313
  {
314
    switch (find_type(argv[0],&command_typelib,2)) {
315
    case ADMIN_SHUTDOWN:
316
    {
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
317
      if (opt_verbose)
264.1.21 by forstm1w
Added gettext translations to strings.
318
        printf(_("shutting down drizzled...\n"));
1 by brian
clean slate
319
438.1.9 by Brian Aker
Removed dead shutdown code.
320
      if (drizzle_shutdown(drizzle))
1 by brian
clean slate
321
      {
264.1.21 by forstm1w
Added gettext translations to strings.
322
        my_printf_error(0, _("shutdown failed; error: '%s'"), error_flags,
206.3.1 by Patrick Galbraith
Most everything working with client rename
323
                        drizzle_error(drizzle));
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
324
        return -1;
1 by brian
clean slate
325
      }
206.3.1 by Patrick Galbraith
Most everything working with client rename
326
      drizzle_close(drizzle);	/* Close connection to avoid error messages */
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
327
328
      if (opt_verbose)
264.1.21 by forstm1w
Added gettext translations to strings.
329
        printf(_("done\n"));
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
330
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
331
      argc=1;             /* Force SHUTDOWN to be the last command */
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
332
      break;
1 by brian
clean slate
333
    }
334
    case ADMIN_PING:
206.3.1 by Patrick Galbraith
Most everything working with client rename
335
      drizzle->reconnect=0;	/* We want to know of reconnects */
336
      if (!drizzle_ping(drizzle))
1 by brian
clean slate
337
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
338
        if (option_silent < 2)
264.1.21 by forstm1w
Added gettext translations to strings.
339
          puts(_("drizzled is alive"));
1 by brian
clean slate
340
      }
341
      else
342
      {
206.3.1 by Patrick Galbraith
Most everything working with client rename
343
        if (drizzle_errno(drizzle) == CR_SERVER_GONE_ERROR)
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
344
        {
206.3.1 by Patrick Galbraith
Most everything working with client rename
345
          drizzle->reconnect=1;
346
          if (!drizzle_ping(drizzle))
264.1.21 by forstm1w
Added gettext translations to strings.
347
            puts(_("connection was down, but drizzled is now alive"));
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
348
        }
349
        else
350
	      {
264.1.21 by forstm1w
Added gettext translations to strings.
351
          my_printf_error(0,_("drizzled doesn't answer to ping, error: '%s'"),
206.3.1 by Patrick Galbraith
Most everything working with client rename
352
          error_flags, drizzle_error(drizzle));
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
353
          return -1;
354
        }
1 by brian
clean slate
355
      }
206.3.1 by Patrick Galbraith
Most everything working with client rename
356
      drizzle->reconnect=1;	/* Automatic reconnect is default */
1 by brian
clean slate
357
      break;
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
358
1 by brian
clean slate
359
    default:
264.1.21 by forstm1w
Added gettext translations to strings.
360
      my_printf_error(0, _("Unknown command: '%-.60s'"), error_flags, argv[0]);
1 by brian
clean slate
361
      return 1;
362
    }
363
  }
364
  return 0;
365
}
366
367
static void print_version(void)
368
{
264.1.21 by forstm1w
Added gettext translations to strings.
369
  printf(_("%s  Ver %s Distrib %s, for %s on %s\n"),my_progname,ADMIN_VERSION,
264.1.10 by Monty Taylor
Removed client insistence on version.h stuff.
370
	 drizzle_get_client_info(),SYSTEM_TYPE,MACHINE_TYPE);
1 by brian
clean slate
371
}
372
373
static void usage(void)
374
{
375
  print_version();
264.1.21 by forstm1w
Added gettext translations to strings.
376
  puts(_("Copyright (C) 2000-2008 MySQL AB"));
377
  puts(_("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n"));
378
  puts(_("Administration program for the drizzled daemon."));
379
  printf(_("Usage: %s [OPTIONS] command command....\n"), my_progname);
1 by brian
clean slate
380
  my_print_help(my_long_options);
264.1.21 by forstm1w
Added gettext translations to strings.
381
  puts(_("\
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
382
  ping         Check if server is down\n\
264.1.21 by forstm1w
Added gettext translations to strings.
383
  shutdown     Take server down\n"));
1 by brian
clean slate
384
}