Add --help and --version support.
Make the output for them resemble the output for other programs. Change-Id: I45dbee32ad403b8fedc2350ac9096ac1a5820cbe Reviewed-on: https://code.wireshark.org/review/2799 Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
parent
f0ed0e69fa
commit
edc6736293
|
@ -1305,6 +1305,7 @@ if(BUILD_captype)
|
|||
)
|
||||
set(captype_FILES
|
||||
captype.c
|
||||
version_info.c
|
||||
image/captype.rc
|
||||
)
|
||||
add_executable(captype ${captype_FILES})
|
||||
|
|
|
@ -137,7 +137,8 @@ capinfos_SOURCES = \
|
|||
|
||||
# captype specifics
|
||||
captype_SOURCES = \
|
||||
captype.c
|
||||
captype.c \
|
||||
version_info.c
|
||||
|
||||
# dftest specifics
|
||||
dftest_SOURCES = \
|
||||
|
|
121
captype.c
121
captype.c
|
@ -36,15 +36,27 @@
|
|||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GETOPT_H
|
||||
#include <getopt.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBZ
|
||||
#include <zlib.h> /* to get the libz version number */
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include <wsutil/privileges.h>
|
||||
#include <wsutil/filesystem.h>
|
||||
#include <wsutil/file_util.h>
|
||||
#include <wsutil/crash_info.h>
|
||||
#include <wsutil/copyright_info.h>
|
||||
#include <wsutil/os_version_info.h>
|
||||
#include <wsutil/ws_version_info.h>
|
||||
|
||||
#ifdef HAVE_PLUGINS
|
||||
#include <wsutil/plugins.h>
|
||||
|
@ -59,20 +71,27 @@
|
|||
#include <wsutil/unicode-utils.h>
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#include "version.h"
|
||||
#include "version_info.h"
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
show_version(GString *comp_info_str, GString *runtime_info_str)
|
||||
{
|
||||
fprintf(stderr, "Captype %s"
|
||||
#ifdef GITVERSION
|
||||
" (" GITVERSION " from " GITBRANCH ")"
|
||||
#endif
|
||||
"\n", VERSION);
|
||||
fprintf(stderr, "Prints the file types of capture files.\n");
|
||||
fprintf(stderr, "See http://www.wireshark.org for more information.\n");
|
||||
fprintf(stderr, "\n");
|
||||
fprintf(stderr, "Usage: captype <infile> ...\n");
|
||||
printf("Captype (Wireshark) %s\n"
|
||||
"\n"
|
||||
"%s"
|
||||
"\n"
|
||||
"%s"
|
||||
"\n"
|
||||
"%s",
|
||||
get_ws_vcs_version_info(), get_copyright_info(),
|
||||
comp_info_str->str, runtime_info_str->str);
|
||||
}
|
||||
|
||||
static void
|
||||
print_usage(FILE *output)
|
||||
{
|
||||
fprintf(output, "\n");
|
||||
fprintf(output, "Usage: captype <infile> ...\n");
|
||||
}
|
||||
|
||||
#ifdef HAVE_PLUGINS
|
||||
|
@ -88,19 +107,69 @@ failure_message(const char *msg_format _U_, va_list ap _U_)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
get_captype_compiled_info(GString *str)
|
||||
{
|
||||
/* LIBZ */
|
||||
g_string_append(str, ", ");
|
||||
#ifdef HAVE_LIBZ
|
||||
g_string_append(str, "with libz ");
|
||||
#ifdef ZLIB_VERSION
|
||||
g_string_append(str, ZLIB_VERSION);
|
||||
#else /* ZLIB_VERSION */
|
||||
g_string_append(str, "(version unknown)");
|
||||
#endif /* ZLIB_VERSION */
|
||||
#else /* HAVE_LIBZ */
|
||||
g_string_append(str, "without libz");
|
||||
#endif /* HAVE_LIBZ */
|
||||
}
|
||||
|
||||
static void
|
||||
get_captype_runtime_info(GString *str)
|
||||
{
|
||||
/* zlib */
|
||||
#if defined(HAVE_LIBZ) && !defined(_WIN32)
|
||||
g_string_append_printf(str, ", with libz %s", zlibVersion());
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
GString *comp_info_str;
|
||||
GString *runtime_info_str;
|
||||
wtap *wth;
|
||||
int err;
|
||||
gchar *err_info;
|
||||
int i;
|
||||
int opt;
|
||||
int overall_error_status;
|
||||
static const struct option long_options[] = {
|
||||
{(char *)"help", no_argument, NULL, 'h'},
|
||||
{(char *)"version", no_argument, NULL, 'v'},
|
||||
{0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
#ifdef HAVE_PLUGINS
|
||||
char *init_progfile_dir_error;
|
||||
#endif
|
||||
|
||||
/* Assemble the compile-time version information string */
|
||||
comp_info_str = g_string_new("Compiled ");
|
||||
get_compiled_version_info(comp_info_str, NULL, get_captype_compiled_info);
|
||||
|
||||
/* Assemble the run-time version information string */
|
||||
runtime_info_str = g_string_new("Running ");
|
||||
get_runtime_version_info(runtime_info_str, get_captype_runtime_info);
|
||||
|
||||
/* Add it to the information to be reported on a crash. */
|
||||
ws_add_crash_info("Captype (Wireshark) %s\n"
|
||||
"\n"
|
||||
"%s"
|
||||
"\n"
|
||||
"%s",
|
||||
get_ws_vcs_version_info(), comp_info_str->str, runtime_info_str->str);
|
||||
|
||||
#ifdef _WIN32
|
||||
arg_list_utf_16to8(argc, argv);
|
||||
create_app_running_mutex();
|
||||
|
@ -131,11 +200,39 @@ main(int argc, char *argv[])
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Process the options */
|
||||
while ((opt = getopt_long(argc, argv, "hv", long_options, NULL)) !=-1) {
|
||||
|
||||
switch (opt) {
|
||||
|
||||
case 'h':
|
||||
printf("Captype (Wireshark) %s\n"
|
||||
"Print the file types of capture files.\n"
|
||||
"See http://www.wireshark.org for more information.\n",
|
||||
get_ws_vcs_version_info());
|
||||
print_usage(stdout);
|
||||
exit(0);
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
show_version(comp_info_str, runtime_info_str);
|
||||
g_string_free(comp_info_str, TRUE);
|
||||
g_string_free(runtime_info_str, TRUE);
|
||||
exit(0);
|
||||
break;
|
||||
|
||||
case '?': /* Bad flag - print usage message */
|
||||
print_usage(stderr);
|
||||
exit(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the C-language locale to the native environment. */
|
||||
setlocale(LC_ALL, "");
|
||||
|
||||
if (argc < 2) {
|
||||
usage();
|
||||
print_usage(stderr);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue