1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
/* This file is part of Grot. -*- c -*-
Copyright (C) 2009, 2010 Sergey Poznyakoff
Grot 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 3, or (at your option)
any later version.
Grot 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 grot. If not, see <http://www.gnu.org/licenses/>. */
#include "grot.h"
#include <getopt.h>
#define gettext(s) s
#define _(s) gettext(s)
#define N_(s) s
char *grot_host;
char *grot_password;
int password_option;
unsigned grot_port;
char *grot_socket;
char *grot_user;
int verbose;
int dry_run_option;
int flush_logs_option = 1;
size_t keep_count;
OPTIONS_BEGIN(gnu, "grot",
[<Gray's Rotation Tool for MySQL binary logs>])
OPTION(host,H,[NAME],
[<server host>])
BEGIN
grot_host = optarg;
END
OPTION(password,p,[PASS],
[<MySQL user password>])
BEGIN
grot_password = optarg;
password_option = 1;
END
OPTION(port,P,NUMBER,
[<port number>])
BEGIN
char *p;
grot_port = strtoul(optarg, &p, 10);
if (!grot_port || *p)
terror(1, NULL, "invalid port number: %s", optarg);
END
OPTION(socket,S,STRING,
[<socket file name>])
BEGIN
grot_socket = optarg;
END
OPTION(user,u,NAME,
[<user name>])
BEGIN
grot_user = optarg;
END
OPTION(verbose,v,,
[<increase verbosity level>])
BEGIN
verbose++;
END
OPTION(dry-run,n,,
[<do not actually rotate the logs>])
BEGIN
dry_run_option = 1;
verbose++;
END
OPTION(no-flush,,,
[<do not flush logs after rotating>])
BEGIN
flush_logs_option = 0;
END
OPTION(keep,k,NUMBER,
[<keep NUMBER of files before the oldest>])
BEGIN
char *p;
keep_count = strtoul(optarg, &p, 0);
if (*p)
terror(1, NULL, "invalid number: %s", optarg);
END
OPTIONS_END
void
read_options(int argc, char *argv[])
{
GETOPT(argc, argv)
}
|