Rather than creating strtoul{l} functions that can deal with possibly non-NULL

terminated strings (retrieved with tvb_get_ptr()), just use
tvb_get_ephemeral_string() and the standard strtoul{l} functions.

svn path=/trunk/; revision=35394
This commit is contained in:
Jeff Morriss 2011-01-06 02:45:01 +00:00
parent fb7450a8df
commit 0b49360059
1 changed files with 18 additions and 55 deletions

View File

@ -117,7 +117,7 @@ static gint ett_nasdaq_itch = -1;
static int hf_nasdaq_itch_version = -1;
static int hf_nasdaq_itch_message_type = -1;
static int hf_nasdaq_itch_message_type = -1;
static int hf_nasdaq_itch_market_category = -1;
static int hf_nasdaq_itch_financial_status = -1;
static int hf_nasdaq_itch_stock = -1;
@ -128,15 +128,15 @@ static int hf_nasdaq_itch_system_event = -1;
static int hf_nasdaq_itch_second = -1;
static int hf_nasdaq_itch_millisecond = -1;
static int hf_nasdaq_itch_message = -1;
static int hf_nasdaq_itch_message = -1;
static int hf_nasdaq_itch_trading_state = -1;
static int hf_nasdaq_itch_reserved = -1;
static int hf_nasdaq_itch_reason = -1;
static int hf_nasdaq_itch_order_reference = -1;
static int hf_nasdaq_itch_buy_sell = -1;
static int hf_nasdaq_itch_shares = -1;
static int hf_nasdaq_itch_price = -1;
static int hf_nasdaq_itch_trading_state = -1;
static int hf_nasdaq_itch_reserved = -1;
static int hf_nasdaq_itch_reason = -1;
static int hf_nasdaq_itch_order_reference = -1;
static int hf_nasdaq_itch_buy_sell = -1;
static int hf_nasdaq_itch_shares = -1;
static int hf_nasdaq_itch_price = -1;
static int hf_nasdaq_itch_attribution = -1;
static int hf_nasdaq_itch_executed = -1;
static int hf_nasdaq_itch_match = -1;
@ -147,52 +147,15 @@ static int hf_nasdaq_itch_cross = -1;
#define PINFO_COL(a) (check_col((a)->cinfo, COL_INFO))
/* atou(ll) like functions for NOT 0 terminated string
assume it doesn't overflow
*/
static guint32 nasdaq_itch_atou(const char *str_value, int size)
{
int i;
const char *ptr = str_value;
guint32 value = 0;
for (i = 0; i < size && *ptr == ' '; i++, ptr++) {
continue;
}
for (; i < size; i++, ptr++) {
value = value*10 + *ptr - '0';
}
return value;
}
/* ---------------------- */
static guint64 nasdaq_itch_atoull(const char *str_value, int size)
{
int i;
const char *ptr = str_value;
guint64 value = 0;
for (i = 0; i < size && *ptr == ' '; i++, ptr++) {
continue;
}
for (; i < size; i++, ptr++) {
value = value*10 + *ptr - '0';
}
return value;
}
/* ---------------------- */
static int
order_ref_number(tvbuff_t *tvb, packet_info *pinfo, proto_tree *nasdaq_itch_tree, int offset)
{
gint col_info = PINFO_COL(pinfo);
const char *str_value = tvb_get_ptr(tvb, offset, 9);
if (nasdaq_itch_tree || col_info) {
guint32 value = nasdaq_itch_atou(str_value, 9);
const char *str_value = tvb_get_ephemeral_string(tvb, offset, 9);
guint32 value = strtoul(str_value, NULL, 10);
proto_tree_add_uint(nasdaq_itch_tree, hf_nasdaq_itch_order_reference, tvb, offset, 9, value);
if (col_info) {
@ -206,13 +169,13 @@ order_ref_number(tvbuff_t *tvb, packet_info *pinfo, proto_tree *nasdaq_itch_tree
static int
time_stamp(tvbuff_t *tvb, proto_tree *nasdaq_itch_tree, int id, int offset, int size)
{
const char *str_value = tvb_get_ptr(tvb, offset, size);
if (nasdaq_itch_tree) {
guint32 ms, val;
const char *display = "";
const char *str_value = tvb_get_ephemeral_string(tvb, offset, size);
ms = val = nasdaq_itch_atou(str_value, size);
ms = val = strtoul(str_value, NULL, 10);
switch (size) {
case 3:
display = ep_strdup_printf(" %03u" , val);
@ -235,10 +198,10 @@ number_of_shares(tvbuff_t *tvb, packet_info *pinfo, proto_tree *nasdaq_itch_tree
{
gint col_info = PINFO_COL(pinfo);
gint size = (big)?10:6;
const char *str_value = tvb_get_ptr(tvb, offset, size);
if (nasdaq_itch_tree || col_info) {
guint32 value = nasdaq_itch_atou(str_value, size);
const char *str_value = tvb_get_ephemeral_string(tvb, offset, size);
guint32 value = strtoul(str_value, NULL, 10);
proto_tree_add_uint(nasdaq_itch_tree, id, tvb, offset, size, value);
if (col_info) {
@ -256,8 +219,8 @@ price(tvbuff_t *tvb, packet_info *pinfo, proto_tree *nasdaq_itch_tree, int id, i
gint size = (big)?19:10;
if (nasdaq_itch_tree || col_info) {
const char *str_value = tvb_get_ptr(tvb, offset, size);
gdouble value = guint64_to_gdouble(nasdaq_itch_atoull(str_value, size))/((big)?1000000.0:10000.0);
const char *str_value = tvb_get_ephemeral_string(tvb, offset, size);
gdouble value = guint64_to_gdouble(strtoull(str_value, NULL, 10))/((big)?1000000.0:10000.0);
proto_tree_add_double(nasdaq_itch_tree, id, tvb, offset, size, value);
if (col_info) {
@ -273,7 +236,7 @@ stock(tvbuff_t *tvb, packet_info *pinfo, proto_tree *nasdaq_itch_tree, int offse
{
gint col_info = PINFO_COL(pinfo);
if (nasdaq_itch_tree || col_info) {
char *stock_p = tvb_get_ephemeral_string(tvb, offset, 6);
char *stock_p = tvb_get_ephemeral_string(tvb, offset, 6);
proto_tree_add_item(nasdaq_itch_tree, hf_nasdaq_itch_stock, tvb, offset, 6, FALSE);
if (col_info) {