summaryrefslogtreecommitdiff
path: root/epan/wslua/wslua_dumper.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-12-17 16:02:50 -0800
committerGuy Harris <guy@alum.mit.edu>2014-12-18 00:03:26 +0000
commit51522b33723dec4dd0481dcabc261010be39937c (patch)
tree4c772ba5dd3a61a470784464e39573ca27c5028c /epan/wslua/wslua_dumper.c
parent8ce0f122011f26ab4e81172e9899ed27a5508abd (diff)
downloadwireshark-51522b33723dec4dd0481dcabc261010be39937c.tar.gz
Handle "I can't map this for that file format" better.
For cases where record (meta)data is something that can't be written out in a particular file format, return WTAP_ERR_UNWRITABLE_REC_DATA along with an err_info string. Report (and free) that err_info string in cases where WTAP_ERR_UNWRITABLE_REC_DATA is returned. Clean up some other error reporting cases, and flag with an XXX some cases where we aren't reporting errors at all, while we're at it. Change-Id: I91d02093af0d42c24ec4634c2c773b30f3d39ab3 Reviewed-on: https://code.wireshark.org/review/5823 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/wslua/wslua_dumper.c')
-rw-r--r--epan/wslua/wslua_dumper.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/epan/wslua/wslua_dumper.c b/epan/wslua/wslua_dumper.c
index 1c59c5d8f9..747bb700f2 100644
--- a/epan/wslua/wslua_dumper.c
+++ b/epan/wslua/wslua_dumper.c
@@ -301,6 +301,7 @@ WSLUA_METHOD Dumper_dump(lua_State* L) {
struct wtap_pkthdr pkthdr;
double ts;
int err;
+ gchar *err_info;
if (!d) return 0;
@@ -335,9 +336,20 @@ WSLUA_METHOD Dumper_dump(lua_State* L) {
/* TODO: Can we get access to pinfo->pkt_comment here somehow? We
* should be copying it to pkthdr.opt_comment if we can. */
- if (! wtap_dump(d, &pkthdr, ba->data, &err)) {
- luaL_error(L,"error while dumping: %s",
- wtap_strerror(err));
+ if (! wtap_dump(d, &pkthdr, ba->data, &err, &err_info)) {
+ switch (err) {
+
+ case WTAP_ERR_UNWRITABLE_REC_DATA:
+ luaL_error(L,"error while dumping: %s (%s)",
+ wtap_strerror(err), err_info);
+ g_free(err_info);
+ break;
+
+ default:
+ luaL_error(L,"error while dumping: %s",
+ wtap_strerror(err));
+ break;
+ }
}
return 0;
@@ -402,6 +414,7 @@ WSLUA_METHOD Dumper_dump_current(lua_State* L) {
tvbuff_t* tvb;
struct data_source *data_src;
int err = 0;
+ gchar *err_info;
if (!d) return 0;
@@ -432,9 +445,20 @@ WSLUA_METHOD Dumper_dump_current(lua_State* L) {
data = (const guchar *)tvb_memdup(wmem_packet_scope(),tvb,0,pkthdr.caplen);
- if (! wtap_dump(d, &pkthdr, data, &err)) {
- luaL_error(L,"error while dumping: %s",
- wtap_strerror(err));
+ if (! wtap_dump(d, &pkthdr, data, &err, &err_info)) {
+ switch (err) {
+
+ case WTAP_ERR_UNWRITABLE_REC_DATA:
+ luaL_error(L,"error while dumping: %s (%s)",
+ wtap_strerror(err), err_info);
+ g_free(err_info);
+ break;
+
+ default:
+ luaL_error(L,"error while dumping: %s",
+ wtap_strerror(err));
+ break;
+ }
}
return 0;