Cross Reference: doveadm-dump.c
xref
: /
dovecot
/
src
/
doveadm
/
doveadm-dump.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
doveadm-dump.c revision bde78a7bf5f9000f1ae4dc7ce6cabd012e1f8b79
6643
N/A
/* Copyright (C) 2004 Joshua Goodall */
6643
N/A
6643
N/A
#
include
"
lib.h
"
6643
N/A
#
include
"
doveadm.h
"
6643
N/A
#
include
"
doveadm-dump.h
"
6643
N/A
6643
N/A
#
include
<
stdio.h
>
6643
N/A
#
include
<
unistd.h
>
6643
N/A
6643
N/A
static
const
struct
doveadm_cmd_dump
*
dumps
[] = {
6643
N/A
&
doveadm_cmd_dump_index
,
6643
N/A
&
doveadm_cmd_dump_log
,
6643
N/A
&
doveadm_cmd_dump_mailboxlog
,
6643
N/A
&
doveadm_cmd_dump_thread
6643
N/A
};
6643
N/A
6643
N/A
static
const
struct
doveadm_cmd_dump
*
6643
N/A
dump_find_name
(
const
char
*
name
)
6643
N/A
{
6643
N/A
unsigned
int
i;
6643
N/A
6643
N/A
for
(i = 0; i <
N_ELEMENTS
(
dumps
); i++) {
6643
N/A
if
(
strcmp
(
dumps
[i]->
name
,
name
) == 0)
6643
N/A
return
dumps
[i];
6643
N/A
}
6643
N/A
return
NULL
;
6643
N/A
}
6643
N/A
6643
N/A
static
const
struct
doveadm_cmd_dump
*
6643
N/A
dump_find_test
(
const
char
*
path
)
6643
N/A
{
6643
N/A
unsigned
int
i;
6643
N/A
6643
N/A
for
(i = 0; i <
N_ELEMENTS
(
dumps
); i++) {
6643
N/A
if
(
dumps
[i]->
test
(
path
))
6643
N/A
return
dumps
[i];
6643
N/A
}
6643
N/A
return
NULL
;
6643
N/A
}
6643
N/A
6643
N/A
static
void
cmd_dump
(
int
argc
,
char
*
argv
[])
6643
N/A
{
6643
N/A
const
struct
doveadm_cmd_dump
*
dump
;
6643
N/A
const
char
*
type
=
NULL
;
6643
N/A
int
c;
6643
N/A
6643
N/A
while
((c =
getopt
(
argc
,
argv
,
"t:"
)) > 0) {
6643
N/A
switch
(c) {
6643
N/A
case
't'
:
6643
N/A
type
=
optarg
;
6643
N/A
break
;
6643
N/A
default
:
6643
N/A
help
(&
doveadm_cmd_dump
);
6643
N/A
}
6643
N/A
}
6643
N/A
if
(
optind
==
argc
)
6643
N/A
help
(&
doveadm_cmd_dump
);
6643
N/A
6643
N/A
optind
--;
6643
N/A
argc
-=
optind
;
6643
N/A
argv
+=
optind
;
6643
N/A
6643
N/A
dump
=
type
!=
NULL
?
dump_find_name
(
type
) :
dump_find_test
(
argv
[
1
]);
6643
N/A
if
(
dump
==
NULL
) {
6643
N/A
if
(
type
!=
NULL
)
6643
N/A
i_fatal
(
"Unknown type: %s"
,
type
);
6643
N/A
else
6643
N/A
i_fatal
(
"Can't autodetect file type: %s"
,
argv
[
1
]);
6643
N/A
}
else
{
6643
N/A
if
(
type
==
NULL
)
6643
N/A
printf
(
"Detected file type: %s\n"
,
dump
->
name
);
6643
N/A
}
6643
N/A
dump
->
cmd
(
argc
,
argv
);
6643
N/A
}
6643
N/A
struct
doveadm_cmd
doveadm_cmd_dump
= {
cmd_dump
,
"dump"
,
"[-t <type>] <path>"
};