Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
L
LabComm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Anders Blomdell
LabComm
Commits
4aa92861
Commit
4aa92861
authored
12 years ago
by
Sven Robertz
Browse files
Options
Downloads
Patches
Plain Diff
cleaned up debug and info output
parent
5aba36c4
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
lib/c/experimental/labcomm_sig_parser.c
+58
-40
58 additions, 40 deletions
lib/c/experimental/labcomm_sig_parser.c
with
58 additions
and
40 deletions
lib/c/experimental/labcomm_sig_parser.c
+
58
−
40
View file @
4aa92861
...
@@ -11,10 +11,28 @@
...
@@ -11,10 +11,28 @@
#include
"../labcomm_private.h"
#include
"../labcomm_private.h"
#def
ine
DEBUG
#
un
def DEBUG
#undef DEBUG_STACK
#undef DEBUG_STACK
#undef DEBUG_READ
#undef DEBUG_READ
#undef QUIET //just print type and size when skipping data
#undef VERBOSE // print in great detail
#ifdef QUIET
#define INFO_PRINTF(format, args...)
#undef VERBOSE
#else
#define INFO_PRINTF(format, args...) \
printf (format , ## args)
#endif
#ifdef VERBOSE
#define VERBOSE_PRINTF(format, args...) \
printf (format , ## args)
#else
#define VERBOSE_PRINTF(format, args...)
#endif
#undef EXIT_WHEN_RECEIVING_DATA
#undef EXIT_WHEN_RECEIVING_DATA
#define RETURN_STRINGS // highly experimental, and not used
#define RETURN_STRINGS // highly experimental, and not used
...
@@ -203,7 +221,7 @@ void dump_signature(unsigned int uid){
...
@@ -203,7 +221,7 @@ void dump_signature(unsigned int uid){
unsigned
char
*
sig
=
get_signature
(
uid
);
unsigned
char
*
sig
=
get_signature
(
uid
);
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
printf
(
"%2.2x "
,
sig
[
i
]);
printf
(
"%2.2x "
,
sig
[
i
]);
if
(
(
i
+
1
)
%
8
==
0
)
printf
(
"
\n
"
);
if
(
i
<
len
-
1
&&
(
i
+
1
)
%
8
==
0
)
printf
(
"
\n
"
);
}
}
printf
(
"
\n
"
);
printf
(
"
\n
"
);
}
}
...
@@ -274,27 +292,27 @@ int do_parse(buffer *d) {
...
@@ -274,27 +292,27 @@ int do_parse(buffer *d) {
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
accept_user_id
(
d
);
accept_user_id
(
d
);
unsigned
int
uid
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
unsigned
int
uid
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
printf
(
", name = "
);
VERBOSE_PRINTF
(
", name = "
);
accept_string
(
d
);
accept_string
(
d
);
pop
(
d
);
// ignore, for now.
pop
(
d
);
// ignore, for now.
#ifdef RETURN_STRINGS
#ifdef RETURN_STRINGS
char
*
str
=
(
char
*
)
pop
(
d
);
char
*
str
=
(
char
*
)
pop
(
d
);
free
(
str
);
free
(
str
);
#endif
#endif
printf
(
" : "
);
VERBOSE_PRINTF
(
" : "
);
accept_type
(
d
);
accept_type
(
d
);
unsigned
int
type
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
unsigned
int
type
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
//push(d, type);
//push(d, type);
printf
(
"
\n
"
);
VERBOSE_PRINTF
(
"
\n
"
);
return
TRUE
;
return
TRUE
;
}
else
if
(
type
==
SAMPLE_DECL
)
{
}
else
if
(
type
==
SAMPLE_DECL
)
{
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
printf
(
"sample_decl "
);
VERBOSE_PRINTF
(
"sample_decl "
);
accept_user_id
(
d
);
accept_user_id
(
d
);
unsigned
int
nstart
=
d
->
idx
;
unsigned
int
nstart
=
d
->
idx
;
unsigned
int
uid
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
unsigned
int
uid
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
printf
(
", name = "
);
VERBOSE_PRINTF
(
", name = "
);
accept_string
(
d
);
accept_string
(
d
);
unsigned
int
start
=
d
->
idx
;
unsigned
int
start
=
d
->
idx
;
unsigned
int
nlen
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
unsigned
int
nlen
=
(
unsigned
int
)
(
unsigned
long
)
pop
(
d
);
...
@@ -323,7 +341,7 @@ int do_parse(buffer *d) {
...
@@ -323,7 +341,7 @@ int do_parse(buffer *d) {
}
else
{
}
else
{
error
(
"sig name longer than max length (this ought to be dynamic..."
);
error
(
"sig name longer than max length (this ought to be dynamic..."
);
}
}
printf
(
"signature for uid %x: %s (start=%x,end=%x, nlen=%d,len=%d)
\n
"
,
uid
,
get_signature_name
(
uid
),
start
,
end
,
nlen
,
len
);
VERBOSE_PRINTF
(
"signature for uid %x: %s (start=%x,end=%x, nlen=%d,len=%d)
\n
"
,
uid
,
get_signature_name
(
uid
),
start
,
end
,
nlen
,
len
);
}
else
{
}
else
{
#ifdef EXIT_WHEN_RECEIVING_DATA
#ifdef EXIT_WHEN_RECEIVING_DATA
printf
(
"*** got sample data, exiting
\n
"
);
printf
(
"*** got sample data, exiting
\n
"
);
...
@@ -339,7 +357,7 @@ int accept_user_id(buffer *d){
...
@@ -339,7 +357,7 @@ int accept_user_id(buffer *d){
unsigned
int
uid
=
peek_varint
(
d
,
&
nbytes
);
unsigned
int
uid
=
peek_varint
(
d
,
&
nbytes
);
if
(
uid
>=
LABCOMM_USER
)
{
if
(
uid
>=
LABCOMM_USER
)
{
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
printf
(
"uid = %x "
,
uid
);
VERBOSE_PRINTF
(
"uid = %x "
,
uid
);
push
(
d
,
(
void
*
)
(
unsigned
long
)
uid
);
push
(
d
,
(
void
*
)
(
unsigned
long
)
uid
);
return
TRUE
;
return
TRUE
;
}
else
{
}
else
{
...
@@ -351,7 +369,7 @@ int accept_string(buffer *d){
...
@@ -351,7 +369,7 @@ int accept_string(buffer *d){
unsigned
int
len
=
get_varint
(
d
);
unsigned
int
len
=
get_varint
(
d
);
char
*
str
=
malloc
(
len
);
char
*
str
=
malloc
(
len
);
getStr
(
d
,
str
,
len
);
getStr
(
d
,
str
,
len
);
printf
(
"%s"
,
str
);
VERBOSE_PRINTF
(
"%s"
,
str
);
#ifdef RETURN_STRINGS
#ifdef RETURN_STRINGS
push
(
d
,
str
);
push
(
d
,
str
);
#else
#else
...
@@ -365,35 +383,35 @@ int accept_type(buffer *d){
...
@@ -365,35 +383,35 @@ int accept_type(buffer *d){
unsigned
int
type
=
peek_varint
(
d
,
&
nbytes
)
;
unsigned
int
type
=
peek_varint
(
d
,
&
nbytes
)
;
switch
(
type
)
{
switch
(
type
)
{
case
TYPE_BOOLEAN
:
case
TYPE_BOOLEAN
:
printf
(
"boolean"
);
VERBOSE_PRINTF
(
"boolean"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
TYPE_BYTE
:
case
TYPE_BYTE
:
printf
(
"byte"
);
VERBOSE_PRINTF
(
"byte"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
TYPE_SHORT
:
case
TYPE_SHORT
:
printf
(
"short"
);
VERBOSE_PRINTF
(
"short"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
TYPE_INTEGER
:
case
TYPE_INTEGER
:
printf
(
"integer"
);
VERBOSE_PRINTF
(
"integer"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
TYPE_LONG
:
case
TYPE_LONG
:
printf
(
"long"
);
VERBOSE_PRINTF
(
"long"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
TYPE_FLOAT
:
case
TYPE_FLOAT
:
printf
(
"float"
);
VERBOSE_PRINTF
(
"float"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
TYPE_DOUBLE
:
case
TYPE_DOUBLE
:
printf
(
"double"
);
VERBOSE_PRINTF
(
"double"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
TYPE_STRING
:
case
TYPE_STRING
:
printf
(
"string"
);
VERBOSE_PRINTF
(
"string"
);
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
break
;
break
;
case
ARRAY_DECL
:
case
ARRAY_DECL
:
...
@@ -416,7 +434,7 @@ int accept_array_decl(buffer *d){
...
@@ -416,7 +434,7 @@ int accept_array_decl(buffer *d){
if
(
tid
==
ARRAY_DECL
)
{
if
(
tid
==
ARRAY_DECL
)
{
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
unsigned
int
nidx
=
get_varint
(
d
);
unsigned
int
nidx
=
get_varint
(
d
);
printf
(
"%d dim array"
,
nidx
);
VERBOSE_PRINTF
(
"%d dim array"
,
nidx
);
int
i
;
int
i
;
unsigned
int
numVar
=
0
;
unsigned
int
numVar
=
0
;
unsigned
int
size
=
1
;
unsigned
int
size
=
1
;
...
@@ -424,13 +442,13 @@ int accept_array_decl(buffer *d){
...
@@ -424,13 +442,13 @@ int accept_array_decl(buffer *d){
unsigned
int
idx
=
get_varint
(
d
);
unsigned
int
idx
=
get_varint
(
d
);
if
(
idx
==
0
)
{
if
(
idx
==
0
)
{
numVar
++
;
numVar
++
;
printf
(
"[_] "
);
VERBOSE_PRINTF
(
"[_] "
);
}
else
{
}
else
{
printf
(
"[%d] "
,
idx
);
VERBOSE_PRINTF
(
"[%d] "
,
idx
);
size
*=
idx
;
size
*=
idx
;
}
}
}
}
printf
(
" of "
);
VERBOSE_PRINTF
(
" of "
);
unsigned
int
et
=
accept_type
(
d
);
unsigned
int
et
=
accept_type
(
d
);
//pop(d);
//pop(d);
//push(d,tid);
//push(d,tid);
...
@@ -446,12 +464,12 @@ int accept_struct_decl(buffer *d){
...
@@ -446,12 +464,12 @@ int accept_struct_decl(buffer *d){
if
(
tid
==
STRUCT_DECL
)
{
if
(
tid
==
STRUCT_DECL
)
{
advancen
(
d
,
nbytes
);
advancen
(
d
,
nbytes
);
unsigned
int
nf
=
get_varint
(
d
);
unsigned
int
nf
=
get_varint
(
d
);
printf
(
", %d field struct:
\n
"
,
nf
);
VERBOSE_PRINTF
(
", %d field struct:
\n
"
,
nf
);
int
i
;
int
i
;
int
numVar
=
0
;
int
numVar
=
0
;
int
size
=
0
;
int
size
=
0
;
for
(
i
=
0
;
i
<
nf
;
i
++
)
{
for
(
i
=
0
;
i
<
nf
;
i
++
)
{
printf
(
"
\t
"
);
VERBOSE_PRINTF
(
"
\t
"
);
accept_field
(
d
);
accept_field
(
d
);
}
}
// push(d,tid);
// push(d,tid);
...
@@ -462,16 +480,16 @@ int accept_struct_decl(buffer *d){
...
@@ -462,16 +480,16 @@ int accept_struct_decl(buffer *d){
}
}
}
}
int
accept_field
(
buffer
*
d
){
int
accept_field
(
buffer
*
d
){
printf
(
"field "
);
VERBOSE_PRINTF
(
"field "
);
accept_string
(
d
);
accept_string
(
d
);
pop
(
d
);
// ignore, for now
pop
(
d
);
// ignore, for now
#ifdef RETURN_STRINGS
#ifdef RETURN_STRINGS
char
*
str
=
(
char
*
)
pop
(
d
);
char
*
str
=
(
char
*
)
pop
(
d
);
free
(
str
);
free
(
str
);
#endif
#endif
printf
(
" : "
);
VERBOSE_PRINTF
(
" : "
);
accept_type
(
d
);
accept_type
(
d
);
printf
(
"
\n
"
);
VERBOSE_PRINTF
(
"
\n
"
);
}
}
int
accept_sample_data
(
buffer
*
d
){
int
accept_sample_data
(
buffer
*
d
){
accept_user_id
(
d
);
accept_user_id
(
d
);
...
@@ -494,7 +512,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
...
@@ -494,7 +512,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
unsigned
int
tot_nbr_elem_tmp
=
1
;
unsigned
int
tot_nbr_elem_tmp
=
1
;
unsigned
char
nbytes
;
unsigned
char
nbytes
;
unsigned
int
nIdx
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
unsigned
int
nIdx
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
printf
(
"skip_array: nIdx = %d (from sig)
\n
"
,
nIdx
);
VERBOSE_PRINTF
(
"skip_array: nIdx = %d (from sig)
\n
"
,
nIdx
);
*
pos
+=
nbytes
;
*
pos
+=
nbytes
;
unsigned
int
idx
[
nIdx
];
unsigned
int
idx
[
nIdx
];
unsigned
int
nVar
=
0
;
unsigned
int
nVar
=
0
;
...
@@ -504,7 +522,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
...
@@ -504,7 +522,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
for
(
i
=
0
;
i
<
nIdx
;
i
++
)
{
for
(
i
=
0
;
i
<
nIdx
;
i
++
)
{
idx
[
i
]
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
idx
[
i
]
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
*
pos
+=
nbytes
;
*
pos
+=
nbytes
;
printf
(
"skip_array: idx[%d]=%d (from sig)
\n
"
,
i
,
idx
[
i
]);
VERBOSE_PRINTF
(
"skip_array: idx[%d]=%d (from sig)
\n
"
,
i
,
idx
[
i
]);
if
(
idx
[
i
]
==
0
)
{
if
(
idx
[
i
]
==
0
)
{
nVar
++
;
nVar
++
;
}
else
{
}
else
{
...
@@ -517,7 +535,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
...
@@ -517,7 +535,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
for
(
i
=
0
;
i
<
nVar
;
i
++
)
{
for
(
i
=
0
;
i
<
nVar
;
i
++
)
{
var
[
i
]
=
get_varint_size
(
d
,
&
nbytes
);
var
[
i
]
=
get_varint_size
(
d
,
&
nbytes
);
varSize
+=
nbytes
;
varSize
+=
nbytes
;
printf
(
"skip_array: var[%d]=%d (from sample)
\n
"
,
i
,
var
[
i
]);
VERBOSE_PRINTF
(
"skip_array: var[%d]=%d (from sample)
\n
"
,
i
,
var
[
i
]);
tot_nbr_elem_tmp
*=
var
[
i
];
tot_nbr_elem_tmp
*=
var
[
i
];
}
}
...
@@ -528,7 +546,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
...
@@ -528,7 +546,7 @@ int skip_array(buffer *d, unsigned char *sig, unsigned int len, unsigned int *po
skip
=
elemSize
*
tot_nbr_elem_tmp
;
skip
=
elemSize
*
tot_nbr_elem_tmp
;
printf
(
"skip_array: skip: %d * %d = %d
\n
"
,
tot_nbr_elem_tmp
,
elemSize
,
skip
);
VERBOSE_PRINTF
(
"skip_array: skip: %d * %d = %d
\n
"
,
tot_nbr_elem_tmp
,
elemSize
,
skip
);
advancen
(
d
,
skip
);
advancen
(
d
,
skip
);
...
@@ -542,23 +560,23 @@ int skip_struct(buffer *d, unsigned char *sig, unsigned int len, unsigned int *p
...
@@ -542,23 +560,23 @@ int skip_struct(buffer *d, unsigned char *sig, unsigned int len, unsigned int *p
*
pos
+=
nbytes
;
*
pos
+=
nbytes
;
unsigned
int
i
;
unsigned
int
i
;
unsigned
int
skipped
=
0
;
unsigned
int
skipped
=
0
;
printf
(
"skip_struct (%d fields)
\n
"
,
nFields
);
VERBOSE_PRINTF
(
"skip_struct (%d fields)
\n
"
,
nFields
);
for
(
i
=
0
;
i
<
nFields
;
i
++
)
{
for
(
i
=
0
;
i
<
nFields
;
i
++
)
{
//skip name
//skip name
unsigned
int
namelen
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
unsigned
int
namelen
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
#ifdef DEBUG
#ifdef DEBUG
printf
(
"namelen==%d"
,
namelen
);
VERBOSE_PRINTF
(
"namelen==%d"
,
namelen
);
char
name
[
namelen
+
1
];
char
name
[
namelen
+
1
];
name
[
namelen
]
=
0
;
strncpy
(
name
,
sig
+*
pos
+
nbytes
,
namelen
);
strncpy
(
name
,
sig
+*
pos
+
nbytes
,
namelen
);
printf
(
", name = %s"
,
name
);
name
[
namelen
]
=
0
;
VERBOSE_PRINTF
(
", name = %s"
,
name
);
#endif
#endif
*
pos
+=
(
nbytes
+
namelen
);
// 32bit len + actual string
*
pos
+=
(
nbytes
+
namelen
);
// 32bit len + actual string
unsigned
int
type
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
unsigned
int
type
=
unpack_varint
(
sig
,
*
pos
,
&
nbytes
);
*
pos
+=
nbytes
;
*
pos
+=
nbytes
;
#ifdef DEBUG
#ifdef DEBUG
printf
(
": type == %x
\n
"
,
type
);
VERBOSE_PRINTF
(
": type == %x
\n
"
,
type
);
#endif
#endif
skipped
+=
skip_type
(
type
,
d
,
sig
,
len
,
pos
);
skipped
+=
skip_type
(
type
,
d
,
sig
,
len
,
pos
);
}
}
...
@@ -630,7 +648,7 @@ int skip_type(unsigned int type, buffer *d,
...
@@ -630,7 +648,7 @@ int skip_type(unsigned int type, buffer *d,
unsigned
char
*
sig
,
unsigned
int
len
,
unsigned
int
*
pos
)
unsigned
char
*
sig
,
unsigned
int
len
,
unsigned
int
*
pos
)
{
{
int
skipped
=
0
;
int
skipped
=
0
;
printf
(
"skip_type %x
\n
"
,
type
);
VERBOSE_PRINTF
(
"skip_type %x
\n
"
,
type
);
switch
(
type
)
{
switch
(
type
)
{
case
TYPE_BOOLEAN
:
case
TYPE_BOOLEAN
:
case
TYPE_BYTE
:
case
TYPE_BYTE
:
...
@@ -725,9 +743,9 @@ int main() {
...
@@ -725,9 +743,9 @@ int main() {
}
}
test_read
(
&
buf
);
test_read
(
&
buf
);
do
{
do
{
printf
(
"------------
\n
"
);
printf
(
"------------
--------------------------------- new packet:
\n
"
);
}
while
(
more
(
&
buf
)
&&
do_parse
(
&
buf
));
}
while
(
more
(
&
buf
)
&&
do_parse
(
&
buf
));
printf
(
"
done
\n
"
);
printf
(
"
EOF
\n
"
);
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment