diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2013-12-22 13:08:39 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2013-12-22 13:08:39 +0000 |
commit | a48a5a164f45cd829851b8977708d67d93e34e49 (patch) | |
tree | fd951d9a3cb4b0ce3db941a4b8912ab505654376 /epan/wslua/wslua_tvb.c | |
parent | a1c84e00de20a6a9d382d25048fd9f3139c9ed2b (diff) |
Made TvbRange string and stringz take an optional encoding argument, and
removed the yet-another-string-function string_enc and stringz_enc.
Documented the encoding argument.
svn path=/trunk/; revision=54356
Diffstat (limited to 'epan/wslua/wslua_tvb.c')
-rw-r--r-- | epan/wslua/wslua_tvb.c | 49 |
1 files changed, 7 insertions, 42 deletions
diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c index 2341abfc1f..1a306ff1df 100644 --- a/epan/wslua/wslua_tvb.c +++ b/epan/wslua/wslua_tvb.c @@ -1120,25 +1120,11 @@ WSLUA_METHOD TvbRange_le_nstime(lua_State* L) { WSLUA_RETURN(1); /* The NSTime */ } -WSLUA_METHOD TvbRange_string_enc(lua_State* L) { - /* Obtain a string from a TvbRange, using a specified encoding */ - TvbRange tvbr = checkTvbRange(L,1); - guint encoding = (guint)luaL_checknumber(L,2); - - if ( !(tvbr && tvbr->tvb)) return 0; - if (tvbr->tvb->expired) { - luaL_error(L,"expired tvb"); - return 0; - } - - lua_pushlstring(L, (gchar*)tvb_get_string_enc(wmem_packet_scope(),tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len,encoding), tvbr->len); - - WSLUA_RETURN(1); /* The string */ -} - WSLUA_METHOD TvbRange_string(lua_State* L) { /* Obtain a string from a TvbRange */ +#define WSLUA_OPTARG_TvbRange_string_ENCODING 2 /* The encoding to use. Defaults to ENC_ASCII. */ TvbRange tvbr = checkTvbRange(L,1); + guint encoding = (guint)luaL_optint(L,WSLUA_OPTARG_TvbRange_string_ENCODING, ENC_ASCII|ENC_NA); if ( !(tvbr && tvbr->tvb)) return 0; if (tvbr->tvb->expired) { @@ -1146,7 +1132,7 @@ WSLUA_METHOD TvbRange_string(lua_State* L) { return 0; } - lua_pushlstring(L, (gchar*)tvb_get_string_enc(wmem_packet_scope(),tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len,ENC_ASCII|ENC_NA), tvbr->len); + lua_pushlstring(L, (gchar*)tvb_get_string_enc(wmem_packet_scope(),tvbr->tvb->ws_tvb,tvbr->offset,tvbr->len,encoding), tvbr->len); WSLUA_RETURN(1); /* The string */ } @@ -1178,10 +1164,11 @@ WSLUA_METHOD TvbRange_le_ustring(lua_State* L) { WSLUA_RETURN(TvbRange_ustring_any(L, TRUE)); /* The string */ } -WSLUA_METHOD TvbRange_stringz_enc(lua_State* L) { - /* Obtain a zero terminated string from a TvbRange, using a specified encoding */ +WSLUA_METHOD TvbRange_stringz(lua_State* L) { + /* Obtain a zero terminated string from a TvbRange */ +#define WSLUA_OPTARG_TvbRange_stringz_ENCODING 2 /* The encoding to use. Defaults to ENC_ASCII. */ TvbRange tvbr = checkTvbRange(L,1); - guint encoding = (guint)luaL_checknumber(L,2); + guint encoding = (guint)luaL_optint(L,WSLUA_OPTARG_TvbRange_stringz_ENCODING, ENC_ASCII|ENC_NA); gint offset; gunichar2 uchar; @@ -1220,26 +1207,6 @@ WSLUA_METHOD TvbRange_stringz_enc(lua_State* L) { WSLUA_RETURN(1); /* The zero terminated string */ } -WSLUA_METHOD TvbRange_stringz(lua_State* L) { - /* Obtain a zero terminated string from a TvbRange */ - TvbRange tvbr = checkTvbRange(L,1); - - if ( !(tvbr && tvbr->tvb)) return 0; - if (tvbr->tvb->expired) { - luaL_error(L,"expired tvb"); - return 0; - } - - if (tvb_find_guint8 (tvbr->tvb->ws_tvb, tvbr->offset, -1, 0) == -1) { - luaL_error(L,"out of bounds"); - return 0; - } - - lua_pushstring(L, (gchar*)tvb_get_stringz_enc(wmem_packet_scope(),tvbr->tvb->ws_tvb,tvbr->offset,NULL,ENC_ASCII|ENC_NA)); - - WSLUA_RETURN(1); /* The zero terminated string */ -} - WSLUA_METHOD TvbRange_strsize(lua_State* L) { /* Find the size of a zero terminated string from a TvbRange. The size of the string includes the terminating zero. */ TvbRange tvbr = checkTvbRange(L,1); @@ -1480,9 +1447,7 @@ static const luaL_Reg TvbRange_methods[] = { {"le_ipv4", TvbRange_le_ipv4}, {"nstime", TvbRange_nstime}, {"le_nstime", TvbRange_le_nstime}, - {"string_enc", TvbRange_string_enc}, {"string", TvbRange_string}, - {"stringz_enc", TvbRange_stringz_enc}, {"stringz", TvbRange_stringz}, {"strsize", TvbRange_strsize}, {"bytes", TvbRange_bytes}, |