~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;
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
35
static bool interrupted= false, opt_verbose= false,tty_password= false;
165 by Brian Aker
mysqladmin patch (plus removal of password auth bits)
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
/*
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
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
632.1.12 by Monty Taylor
Fixed more sun studio warnings.
112
get_one_option(int optid, const struct my_option *, char *argument)
1 by brian
clean slate
113
{
114
  int error = 0;
115
116
  switch(optid) {
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
117
  case 'p':
118
    if (argument)
119
    {
120
      char *start=argument;
656.1.51 by Monty Taylor
Fixed strdup return checking in client/
121
      if (opt_password)
122
        free(opt_password);
123
656.1.20 by Monty Taylor
Removed my_strdup, my_malloc, my_realloc from client/
124
      opt_password= strdup(argument);
656.1.51 by Monty Taylor
Fixed strdup return checking in client/
125
      if (opt_password == NULL)
126
      {
127
        fprintf(stderr, _("Memory allocation error while copying password. "
128
                          "Aborting.\n"));
129
        exit(ENOMEM);
130
      }
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
131
      while (*argument) *argument++= 'x';   /* Destroy argument */
132
      if (*start)
133
        start[1]=0; /* Cut length of argument */
134
      tty_password= 0;
135
    }
660.1.3 by Eric Herman
removed trailing whitespace with simple script:
136
    else
137
      tty_password= 1;
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
138
    break;
1 by brian
clean slate
139
  case 's':
140
    option_silent++;
141
    break;
142
  case 'V':
143
    print_version();
144
    exit(0);
145
  case 'w':
146
    if (argument)
147
    {
148
      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
149
        option_wait=1;
1 by brian
clean slate
150
    }
151
    else
152
      option_wait= ~(uint)0;
153
    break;
154
  case '?':
155
  case 'I':					/* Info */
156
    error++;
157
    break;
158
  }
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
159
1 by brian
clean slate
160
  if (error)
161
  {
162
    usage();
163
    exit(1);
164
  }
165
  return 0;
166
}
167
168
int main(int argc,char *argv[])
169
{
170
  int error= 0, ho_error;
206.3.1 by Patrick Galbraith
Most everything working with client rename
171
  DRIZZLE drizzle;
1 by brian
clean slate
172
  char **commands, **save_argv;
173
174
  MY_INIT(argv[0]);
202.2.4 by Monty Taylor
Merged from Patrick.
175
  drizzle_create(&drizzle);
520.4.28 by Monty Taylor
Changed my.cnf to drizzle.cnf and /etc/mysql to /etc/drizzle.
176
  load_defaults("drizzle",load_default_groups,&argc,&argv);
1 by brian
clean slate
177
  save_argv = argv;				/* Save for free_defaults */
178
  if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
179
  {
180
    free_defaults(save_argv);
181
    exit(ho_error);
182
  }
183
184
  if (argc == 0)
185
  {
186
    usage();
187
    exit(1);
188
  }
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
189
1 by brian
clean slate
190
  commands = argv;
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
191
  if (tty_password)
461 by Monty Taylor
Removed NullS. bu-bye.
192
    opt_password = get_tty_password(NULL);
1 by brian
clean slate
193
398.1.10 by Monty Taylor
Actually removed VOID() this time.
194
  signal(SIGINT,endprog);			/* Here if abort */
195
  signal(SIGTERM,endprog);		/* Here if abort */
1 by brian
clean slate
196
197
  if (opt_connect_timeout)
198
  {
199
    uint tmp=opt_connect_timeout;
206.3.1 by Patrick Galbraith
Most everything working with client rename
200
    drizzle_options(&drizzle,DRIZZLE_OPT_CONNECT_TIMEOUT, (char*) &tmp);
1 by brian
clean slate
201
  }
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
202
203
  error_flags= (myf)0;
1 by brian
clean slate
204
206.3.1 by Patrick Galbraith
Most everything working with client rename
205
  if (sql_connect(&drizzle, option_wait))
1 by brian
clean slate
206
  {
206.3.1 by Patrick Galbraith
Most everything working with client rename
207
    unsigned int err= drizzle_errno(&drizzle);
1 by brian
clean slate
208
    if (err >= CR_MIN_ERROR && err <= CR_MAX_ERROR)
209
      error= 1;
210
    else
211
    {
212
      /* Return 0 if all commands are PING */
213
      for (; argc > 0; argv++, argc--)
214
      {
215
        if (find_type(argv[0], &command_typelib, 2) != ADMIN_PING)
216
        {
217
          error= 1;
218
          break;
219
        }
220
      }
221
    }
222
  }
223
  else
224
  {
206.3.1 by Patrick Galbraith
Most everything working with client rename
225
    error=execute_commands(&drizzle,argc,commands);
226
    drizzle_close(&drizzle);
1 by brian
clean slate
227
  }
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.
228
  free(opt_password);
229
  free(user);
1 by brian
clean slate
230
  free_defaults(save_argv);
231
  my_end(my_end_arg);
632.1.12 by Monty Taylor
Fixed more sun studio warnings.
232
  return error ? 1 : 0;
1 by brian
clean slate
233
}
234
632.1.12 by Monty Taylor
Fixed more sun studio warnings.
235
RETSIGTYPE endprog(int)
1 by brian
clean slate
236
{
237
  interrupted=1;
238
}
239
206.3.1 by Patrick Galbraith
Most everything working with client rename
240
static bool sql_connect(DRIZZLE *drizzle, uint wait)
1 by brian
clean slate
241
{
143 by Brian Aker
Bool cleanup.
242
  bool info=0;
1 by brian
clean slate
243
244
  for (;;)
245
  {
461 by Monty Taylor
Removed NullS. bu-bye.
246
    if (drizzle_connect(drizzle,host,user,opt_password,NULL,tcp_port,NULL,0))
1 by brian
clean slate
247
    {
206.3.1 by Patrick Galbraith
Most everything working with client rename
248
      drizzle->reconnect= 1;
1 by brian
clean slate
249
      if (info)
250
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
251
        fputs("\n",stderr);
252
        (void) fflush(stderr);
1 by brian
clean slate
253
      }
254
      return 0;
255
    }
256
257
    if (!wait)
258
    {
259
      if (!option_silent)
260
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
261
        if (!host)
262
          host= (char*) LOCAL_HOST;
263
264.1.21 by forstm1w
Added gettext translations to strings.
264
        my_printf_error(0,_("connect to server at '%s' failed\nerror: '%s'"),
206.3.1 by Patrick Galbraith
Most everything working with client rename
265
        error_flags, host, drizzle_error(drizzle));
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
266
206.3.1 by Patrick Galbraith
Most everything working with client rename
267
        if (drizzle_errno(drizzle) == CR_CONN_HOST_ERROR ||
268
          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
269
        {
264.1.21 by forstm1w
Added gettext translations to strings.
270
          fprintf(stderr,_("Check that drizzled is running on %s"),host);
271
          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.
272
          tcp_port ? tcp_port: drizzle_get_default_port());
264.1.21 by forstm1w
Added gettext translations to strings.
273
          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.
274
                  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
275
        }
1 by brian
clean slate
276
      }
277
      return 1;
278
    }
365.2.8 by Monty Taylor
More MAX macros.
279
    if (wait != UINT32_MAX)
1 by brian
clean slate
280
      wait--;				/* One less retry */
206.3.1 by Patrick Galbraith
Most everything working with client rename
281
    if ((drizzle_errno(drizzle) != CR_CONN_HOST_ERROR) &&
282
        (drizzle_errno(drizzle) != CR_CONNECTION_ERROR))
1 by brian
clean slate
283
    {
264.1.21 by forstm1w
Added gettext translations to strings.
284
      fprintf(stderr,_("Got error: %s\n"), drizzle_error(drizzle));
1 by brian
clean slate
285
    }
286
    else if (!option_silent)
287
    {
288
      if (!info)
289
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
290
        info=1;
264.1.21 by forstm1w
Added gettext translations to strings.
291
        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
292
        (void) fflush(stderr);
1 by brian
clean slate
293
      }
294
      else
295
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
296
        putc('.',stderr);
297
        (void) fflush(stderr);
1 by brian
clean slate
298
      }
299
    }
300
    sleep(5);
301
  }
302
}
303
304
/*
305
  Execute a command.
306
  Return 0 on ok
307
	 -1 on retryable error
308
	 1 on fatal error
309
*/
206.3.1 by Patrick Galbraith
Most everything working with client rename
310
static int execute_commands(DRIZZLE *drizzle,int argc, char **argv)
1 by brian
clean slate
311
{
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
312
1 by brian
clean slate
313
  /*
206.3.1 by Patrick Galbraith
Most everything working with client rename
314
    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
315
    execute commands in the order specified.
1 by brian
clean slate
316
    If this behaviour is ever changed, Docs should be notified.
317
  */
318
  for (; argc > 0 ; argv++,argc--)
319
  {
320
    switch (find_type(argv[0],&command_typelib,2)) {
321
    case ADMIN_SHUTDOWN:
322
    {
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
323
      if (opt_verbose)
264.1.21 by forstm1w
Added gettext translations to strings.
324
        printf(_("shutting down drizzled...\n"));
1 by brian
clean slate
325
438.1.9 by Brian Aker
Removed dead shutdown code.
326
      if (drizzle_shutdown(drizzle))
1 by brian
clean slate
327
      {
264.1.21 by forstm1w
Added gettext translations to strings.
328
        my_printf_error(0, _("shutdown failed; error: '%s'"), error_flags,
206.3.1 by Patrick Galbraith
Most everything working with client rename
329
                        drizzle_error(drizzle));
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
330
        return -1;
1 by brian
clean slate
331
      }
206.3.1 by Patrick Galbraith
Most everything working with client rename
332
      drizzle_close(drizzle);	/* Close connection to avoid error messages */
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
333
334
      if (opt_verbose)
264.1.21 by forstm1w
Added gettext translations to strings.
335
        printf(_("done\n"));
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
336
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
337
      argc=1;             /* Force SHUTDOWN to be the last command */
154.1.2 by Toru Maesaka
further slimdown of mysqladmin and code review fixes
338
      break;
1 by brian
clean slate
339
    }
340
    case ADMIN_PING:
206.3.1 by Patrick Galbraith
Most everything working with client rename
341
      drizzle->reconnect=0;	/* We want to know of reconnects */
342
      if (!drizzle_ping(drizzle))
1 by brian
clean slate
343
      {
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
344
        if (option_silent < 2)
264.1.21 by forstm1w
Added gettext translations to strings.
345
          puts(_("drizzled is alive"));
1 by brian
clean slate
346
      }
347
      else
348
      {
206.3.1 by Patrick Galbraith
Most everything working with client rename
349
        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
350
        {
206.3.1 by Patrick Galbraith
Most everything working with client rename
351
          drizzle->reconnect=1;
352
          if (!drizzle_ping(drizzle))
264.1.21 by forstm1w
Added gettext translations to strings.
353
            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
354
        }
355
        else
356
	      {
264.1.21 by forstm1w
Added gettext translations to strings.
357
          my_printf_error(0,_("drizzled doesn't answer to ping, error: '%s'"),
206.3.1 by Patrick Galbraith
Most everything working with client rename
358
          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
359
          return -1;
360
        }
1 by brian
clean slate
361
      }
206.3.1 by Patrick Galbraith
Most everything working with client rename
362
      drizzle->reconnect=1;	/* Automatic reconnect is default */
1 by brian
clean slate
363
      break;
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
364
1 by brian
clean slate
365
    default:
264.1.21 by forstm1w
Added gettext translations to strings.
366
      my_printf_error(0, _("Unknown command: '%-.60s'"), error_flags, argv[0]);
1 by brian
clean slate
367
      return 1;
368
    }
369
  }
370
  return 0;
371
}
372
373
static void print_version(void)
374
{
264.1.21 by forstm1w
Added gettext translations to strings.
375
  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.
376
	 drizzle_get_client_info(),SYSTEM_TYPE,MACHINE_TYPE);
1 by brian
clean slate
377
}
378
379
static void usage(void)
380
{
381
  print_version();
264.1.21 by forstm1w
Added gettext translations to strings.
382
  puts(_("Copyright (C) 2000-2008 MySQL AB"));
383
  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"));
384
  puts(_("Administration program for the drizzled daemon."));
385
  printf(_("Usage: %s [OPTIONS] command command....\n"), my_progname);
1 by brian
clean slate
386
  my_print_help(my_long_options);
264.1.21 by forstm1w
Added gettext translations to strings.
387
  puts(_("\
154.1.1 by Toru Maesaka
Slimmed down mysqladmin to ping and shutdown only. Some dead code were removed too
388
  ping         Check if server is down\n\
264.1.21 by forstm1w
Added gettext translations to strings.
389
  shutdown     Take server down\n"));
1 by brian
clean slate
390
}