diff options
author | Michael Mann <mmann78@netscape.net> | 2014-03-18 13:21:51 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2014-03-19 05:04:54 +0000 |
commit | 04d950130624c14ac8af39c621f69851d8088ed6 (patch) | |
tree | ec315eb356b27def24a385b7b5aa8bdf72529b11 /epan/wslua/wslua_util.c | |
parent | d832cb18db4e152177cf13673385288987ba9448 (diff) |
Add capture file reader/writer support for Lua so scripts can implement new capture file formats.
This enables a Lua script to implement a brand new capture file format reader/writer, so that for example one could write a script to read from vendor-specific "logs" of packets, and show them as normal packets in wireshark.
Change-Id: Id394edfffa94529f39789844c382b7ab6cc2d814
Reviewed-on: https://code.wireshark.org/review/431
Reviewed-by: Hadriel Kaplan <hadrielk@yahoo.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/wslua/wslua_util.c')
-rw-r--r-- | epan/wslua/wslua_util.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/epan/wslua/wslua_util.c b/epan/wslua/wslua_util.c index d912607fef..f66310bf7c 100644 --- a/epan/wslua/wslua_util.c +++ b/epan/wslua/wslua_util.c @@ -287,7 +287,7 @@ WSLUA_CONSTRUCTOR Dir_open(lua_State* L) { } dir = (Dir)g_malloc(sizeof(struct _wslua_dir)); - dir->dir = OPENDIR_OP(dirname_clean); + dir->dir = g_dir_open(dirname_clean, 0, dir->dummy); g_free(dirname_clean); dir->ext = extension ? g_strdup(extension) : NULL; dir->dummy = (GError **)g_malloc(sizeof(GError *)); @@ -309,7 +309,7 @@ WSLUA_METAMETHOD Dir__call(lua_State* L) { /* At every invocation will return one file (nil when done) */ Dir dir = checkDir(L,1); - const FILE_T* file; + const gchar* file; const gchar* filename; const char* ext; @@ -317,21 +317,20 @@ WSLUA_METAMETHOD Dir__call(lua_State* L) { return 0; } - if ( ! ( file = DIRGETNEXT_OP(dir->dir ) )) { - CLOSEDIR_OP(dir->dir); + if ( ! ( file = g_dir_read_name(dir->dir ) )) { + g_dir_close(dir->dir); dir->dir = NULL; return 0; } if ( ! dir->ext ) { - filename = GETFNAME_OP(file); - lua_pushstring(L,filename); + lua_pushstring(L,file); return 1; } do { - filename = GETFNAME_OP(file); + filename = file; /* XXX strstr returns ptr to first match, this fails ext=".xxx" filename="aaa.xxxz.xxx" */ @@ -339,9 +338,9 @@ WSLUA_METAMETHOD Dir__call(lua_State* L) { lua_pushstring(L,filename); return 1; } - } while(( file = DIRGETNEXT_OP(dir->dir) )); + } while(( file = g_dir_read_name(dir->dir) )); - CLOSEDIR_OP(dir->dir); + g_dir_close(dir->dir); dir->dir = NULL; return 0; } @@ -351,7 +350,7 @@ WSLUA_METHOD Dir_close(lua_State* L) { Dir dir = checkDir(L,1); if (dir->dir) { - CLOSEDIR_OP(dir->dir); + g_dir_close(dir->dir); dir->dir = NULL; } @@ -365,7 +364,7 @@ static int Dir__gc(lua_State* L) { if(!dir) return 0; if (dir->dir) { - CLOSEDIR_OP(dir->dir); + g_dir_close(dir->dir); } g_free(dir->dummy); |