aboutsummaryrefslogtreecommitdiffstats
path: root/mergecap.c
diff options
context:
space:
mode:
authorDario Lombardo <lomato@gmail.com>2017-02-04 16:26:34 +0100
committerDario Lombardo <lomato@gmail.com>2017-02-14 10:22:20 +0000
commit7c0c580c4b0093437ee81e11934ef5b8d27a5bb4 (patch)
tree45d46758e2ce26b82b8a5d066bd9b1f23e1165ec /mergecap.c
parentae0bdcc78c6cb2719e7aa5ae24e80584dec488a3 (diff)
wiretap: add cleanup routine.
The cleanup routine has been added to exit section of the applications. Those which required a exit restyle have been patched as well. Change-Id: I3a8787f0718ac7fef00dc58176869c7510fda7b1 Reviewed-on: https://code.wireshark.org/review/19949 Petri-Dish: Dario Lombardo <lomato@gmail.com> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Dario Lombardo <lomato@gmail.com>
Diffstat (limited to 'mergecap.c')
-rw-r--r--mergecap.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/mergecap.c b/mergecap.c
index fd2c2838c3..41339a4e61 100644
--- a/mergecap.c
+++ b/mergecap.c
@@ -262,7 +262,7 @@ main(int argc, char *argv[])
gchar *err_info = NULL;
int err_fileno;
char *out_filename = NULL;
- merge_result status;
+ merge_result status = MERGE_OK;
idb_merge_mode mode = IDB_MERGE_MODE_MAX;
gboolean use_stdout = FALSE;
merge_progress_callback_t cb;
@@ -338,7 +338,8 @@ main(int argc, char *argv[])
fprintf(stderr, "mergecap: \"%s\" isn't a valid capture file type\n",
optarg);
list_capture_types();
- exit(1);
+ status = MERGE_ERR_INVALID_OPTION;
+ goto clean_exit;
}
break;
@@ -348,7 +349,7 @@ main(int argc, char *argv[])
"See https://www.wireshark.org for more information.\n",
get_ws_vcs_version_info());
print_usage(stdout);
- exit(0);
+ goto clean_exit;
break;
case 'I':
@@ -357,7 +358,8 @@ main(int argc, char *argv[])
fprintf(stderr, "mergecap: \"%s\" isn't a valid IDB merge mode\n",
optarg);
list_idb_merge_modes();
- exit(1);
+ status = MERGE_ERR_INVALID_OPTION;
+ goto clean_exit;
}
break;
@@ -375,7 +377,7 @@ main(int argc, char *argv[])
show_version("Mergecap (Wireshark)", comp_info_str, runtime_info_str);
g_string_free(comp_info_str, TRUE);
g_string_free(runtime_info_str, TRUE);
- exit(0);
+ goto clean_exit;
break;
case 'w':
@@ -393,7 +395,8 @@ main(int argc, char *argv[])
default:
print_usage(stderr);
}
- exit(1);
+ status = MERGE_ERR_INVALID_OPTION;
+ goto clean_exit;
break;
}
}
@@ -408,7 +411,8 @@ main(int argc, char *argv[])
if (!out_filename) {
fprintf(stderr, "mergecap: an output filename must be set with -w\n");
fprintf(stderr, " run with -h for help\n");
- return 1;
+ status = MERGE_ERR_INVALID_OPTION;
+ goto clean_exit;
}
if (in_file_count < 1) {
fprintf(stderr, "mergecap: No input files were specified\n");
@@ -418,7 +422,8 @@ main(int argc, char *argv[])
/* setting IDB merge mode must use PCAPNG output */
if (mode != IDB_MERGE_MODE_MAX && file_type != WTAP_FILE_TYPE_SUBTYPE_PCAPNG) {
fprintf(stderr, "The IDB merge mode can only be used with PCAPNG output format\n");
- return 1;
+ status = MERGE_ERR_INVALID_OPTION;
+ goto clean_exit;
}
/* if they didn't set IDB merge mode, set it to our default */
@@ -478,6 +483,8 @@ main(int argc, char *argv[])
g_free(err_info);
+clean_exit:
+ wtap_cleanup();
return (status == MERGE_OK) ? 0 : 2;
}