aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Fink <sphink@gmail.com>2006-08-07 05:56:56 +0200
committerIan Wienand <ianw@debian.org>2006-08-07 05:56:56 +0200
commit6fa27c330f9e07c5be553614b9c6e2f08461780f (patch)
tree76e6b80a916b6f14099072de5cd7fb07e33a8d68
parent6a3e24dc1709530e59dd6ae3e91ced1c221fe1b9 (diff)
downloadltrace-6fa27c330f9e07c5be553614b9c6e2f08461780f.tar.gz
short, ushort and float types
-rw-r--r--ChangeLog8
-rw-r--r--display_args.c9
-rw-r--r--etc/ltrace.conf6
-rw-r--r--ltrace.h3
-rw-r--r--read_config_file.c6
-rw-r--r--testsuite/ltrace.main/parameters-lib.c15
-rw-r--r--testsuite/ltrace.main/parameters.c9
-rw-r--r--testsuite/ltrace.main/parameters.conf3
-rw-r--r--testsuite/ltrace.main/parameters.exp8
9 files changed, 65 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index ce911b4..9c64122 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,14 @@
testsuite/ltrace.main/parameters-lib.c,
testsuite/ltrace.main/parameters.c,
testsuite/ltrace.main/parameters.conf,
+ testsuite/ltrace.main/parameters.exp: short, ushort and float types
+
+2006-08-07 Steve Fink <sphink@gmail.com>
+
+ * display_args.c, etc/ltrace.conf, ltrace.h, read_config_file.c,
+ testsuite/ltrace.main/parameters-lib.c,
+ testsuite/ltrace.main/parameters.c,
+ testsuite/ltrace.main/parameters.conf,
testsuite/ltrace.main/parameters.exp: implement enumerated parameters
2006-08-07 Steve Fink <sphink@gmail.com>
diff --git a/display_args.c b/display_args.c
index 2a6b34f..bb0bca0 100644
--- a/display_args.c
+++ b/display_args.c
@@ -91,6 +91,15 @@ int display_value(enum tof type, struct process *proc,
tmp += display_char(value == -1 ? value : (char) value);
tmp += fprintf(output, "'");
return tmp;
+ case ARGTYPE_SHORT:
+ return fprintf(output, "%hd", (short) value);
+ case ARGTYPE_USHORT:
+ return fprintf(output, "%hu", (unsigned short) value);
+ case ARGTYPE_FLOAT: {
+ union { long l; float f; } cvt;
+ cvt.l = value;
+ return fprintf(output, "%f", cvt.f);
+ }
case ARGTYPE_ADDR:
if (!value)
return fprintf(output, "NULL");
diff --git a/etc/ltrace.conf b/etc/ltrace.conf
index bff45fa..66db092 100644
--- a/etc/ltrace.conf
+++ b/etc/ltrace.conf
@@ -14,6 +14,8 @@
; ulong == (unsigned long)
; octal == (unsigned) [written in octal]
; char
+; short == (short)
+; ushort == (unsigned short)
; addr == (void *) [unsigned, written in hexa]
; file == (FILE *) [TODO]
; format == ((const char *), ...) [printf() like] [TODO]
@@ -154,8 +156,8 @@ addr getservbyport(int, string);
addr getservent(void);
void herror(string);
string hstrerror(int);
-;int rcmd(addr, ushort, string, string, string, addr); FIXME implement ushort
-;int rcmd_af(addr, ushort, string, string, string, addr, int); FIXME implement ushort
+int rcmd(addr, ushort, string, string, string, addr);
+int rcmd_af(addr, ushort, string, string, string, addr, int);
int rexec(addr, int, string, string, string, addr);
int rexec_af(addr, int, string, string, string, addr, int);
int rresvport (addr);
diff --git a/ltrace.h b/ltrace.h
index 3b40cb3..2b34476 100644
--- a/ltrace.h
+++ b/ltrace.h
@@ -37,6 +37,9 @@ enum arg_type {
ARGTYPE_ULONG,
ARGTYPE_OCTAL,
ARGTYPE_CHAR,
+ ARGTYPE_SHORT,
+ ARGTYPE_USHORT,
+ ARGTYPE_FLOAT,
ARGTYPE_ADDR,
ARGTYPE_FILE,
ARGTYPE_FORMAT, /* printf-like format */
diff --git a/read_config_file.c b/read_config_file.c
index 5b114de..dab66b3 100644
--- a/read_config_file.c
+++ b/read_config_file.c
@@ -29,6 +29,9 @@ static struct list_of_pt_t {
"ulong", ARGTYPE_ULONG}, {
"octal", ARGTYPE_OCTAL}, {
"char", ARGTYPE_CHAR}, {
+ "short", ARGTYPE_SHORT}, {
+ "ushort", ARGTYPE_USHORT}, {
+ "float", ARGTYPE_FLOAT}, {
"addr", ARGTYPE_ADDR}, {
"file", ARGTYPE_FILE}, {
"format", ARGTYPE_FORMAT}, {
@@ -46,6 +49,9 @@ static arg_type_info arg_type_singletons[] = {
{ ARGTYPE_ULONG },
{ ARGTYPE_OCTAL },
{ ARGTYPE_CHAR },
+ { ARGTYPE_SHORT },
+ { ARGTYPE_USHORT },
+ { ARGTYPE_FLOAT },
{ ARGTYPE_ADDR },
{ ARGTYPE_FILE },
{ ARGTYPE_FORMAT },
diff --git a/testsuite/ltrace.main/parameters-lib.c b/testsuite/ltrace.main/parameters-lib.c
index b43de08..870809d 100644
--- a/testsuite/ltrace.main/parameters-lib.c
+++ b/testsuite/ltrace.main/parameters-lib.c
@@ -41,3 +41,18 @@ void func_enum(int x)
{
printf("enum: %d\n", x);
}
+
+void func_short(short x1, short x2)
+{
+ printf("short: %hd %hd\n", x1, x2);
+}
+
+void func_ushort(unsigned short x1, unsigned short x2)
+{
+ printf("ushort: %hu %hu\n", x1, x2);
+}
+
+void func_float(float f1, float f2)
+{
+ printf("%f %f\n", f1, f2);
+}
diff --git a/testsuite/ltrace.main/parameters.c b/testsuite/ltrace.main/parameters.c
index d7c225f..93811c1 100644
--- a/testsuite/ltrace.main/parameters.c
+++ b/testsuite/ltrace.main/parameters.c
@@ -19,6 +19,9 @@ int func_strlen(char*);
void func_strfixed(char*);
void func_ppp(int***);
void func_stringp(char**);
+void func_short(short, short);
+void func_ushort(unsigned short, unsigned short);
+void func_float(float, float);
typedef enum {
RED,
@@ -59,4 +62,10 @@ main ()
func_stringp(&s);
func_enum(BLUE);
+
+ func_short(-8, -9);
+ func_ushort(33, 34);
+ func_float(3.4, -3.4);
+
+ return 0;
}
diff --git a/testsuite/ltrace.main/parameters.conf b/testsuite/ltrace.main/parameters.conf
index debb1dc..394919b 100644
--- a/testsuite/ltrace.main/parameters.conf
+++ b/testsuite/ltrace.main/parameters.conf
@@ -6,3 +6,6 @@ void func_strfixed(string[4])
void func_ppp(int***)
void func_stringp(string*)
void func_enum(enum (RED=0,GREEN=1,BLUE=2,CHARTREUSE=3,PETUNIA=4))
+void func_short(short,short)
+void func_ushort(ushort, ushort)
+void func_float(float,float)
diff --git a/testsuite/ltrace.main/parameters.exp b/testsuite/ltrace.main/parameters.exp
index 024c3f3..e47dc0d 100644
--- a/testsuite/ltrace.main/parameters.exp
+++ b/testsuite/ltrace.main/parameters.exp
@@ -52,3 +52,11 @@ set pattern "func_stringp(\\\"Dude\\\")"
ltrace_verify_output ${srcdir}/${subdir}/${testfile}.ltrace $pattern 1
set pattern "func_enum(BLUE)"
ltrace_verify_output ${srcdir}/${subdir}/${testfile}.ltrace $pattern 1
+set pattern "func_short(-8, -9)"
+ltrace_verify_output ${srcdir}/${subdir}/${testfile}.ltrace $pattern 1
+set pattern "func_ushort(33, 34)"
+ltrace_verify_output ${srcdir}/${subdir}/${testfile}.ltrace $pattern 1
+set pattern "func_float(3.40*, -3.40*)"
+ltrace_verify_output ${srcdir}/${subdir}/${testfile}.ltrace $pattern 1
+set pattern "exited (status 0)"
+ltrace_verify_output ${srcdir}/${subdir}/${testfile}.ltrace $pattern 1