From: Christian Ludwig Subject: btrace: Fix '%c' format string specifier To: Date: Thu, 5 Sep 2024 21:28:33 +0200 Hi, the '%c' format string specifier handles integer literals, not strings. So long, - Christian --- regress/usr.sbin/btrace/Makefile | 4 ++-- regress/usr.sbin/btrace/multismts.bt | 2 +- regress/usr.sbin/btrace/printf.bt | 4 ++++ regress/usr.sbin/btrace/printf.ok | 1 + usr.sbin/btrace/printf.c | 2 +- 5 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 regress/usr.sbin/btrace/printf.bt create mode 100644 regress/usr.sbin/btrace/printf.ok diff --git a/regress/usr.sbin/btrace/Makefile b/regress/usr.sbin/btrace/Makefile index fb0a37bfc4e9..a7350fb94b72 100644 --- a/regress/usr.sbin/btrace/Makefile +++ b/regress/usr.sbin/btrace/Makefile @@ -8,8 +8,8 @@ BT_LANG_SCRIPTS= arithm beginend beginend-argn boolean comments \ delete exit histempty if \ map mapclear mapempty mapsyntax mapzero map-unnamed \ maxoperand min+max+sum multismts nsecs+var \ - precedence print read-map-after-clear staticv-empty \ - syntaxerror tuple tupleeval vareval + precedence print printf read-map-after-clear \ + staticv-empty syntaxerror tuple tupleeval vareval BT_ARG_LANG_SCRIPTS= staticv str diff --git a/regress/usr.sbin/btrace/multismts.bt b/regress/usr.sbin/btrace/multismts.bt index 74eaa4986763..67fbf7befa1b 100644 --- a/regress/usr.sbin/btrace/multismts.bt +++ b/regress/usr.sbin/btrace/multismts.bt @@ -1,5 +1,5 @@ // Test multiple statements inside a single block; BEGIN { printf("One"); printf(", %d", "2"); - printf(" %s three%c\n", "and", "!"); + printf(" %s three!\n", "and"); } diff --git a/regress/usr.sbin/btrace/printf.bt b/regress/usr.sbin/btrace/printf.bt new file mode 100644 index 000000000000..f025d0bbc27a --- /dev/null +++ b/regress/usr.sbin/btrace/printf.bt @@ -0,0 +1,4 @@ +BEGIN { + $c = 0x41; // 'A' + printf("%c%c%c\n", $c, 0x41, 65); +} diff --git a/regress/usr.sbin/btrace/printf.ok b/regress/usr.sbin/btrace/printf.ok new file mode 100644 index 000000000000..43d5a8ed6ef6 --- /dev/null +++ b/regress/usr.sbin/btrace/printf.ok @@ -0,0 +1 @@ +AAA diff --git a/usr.sbin/btrace/printf.c b/usr.sbin/btrace/printf.c index d7a9424dce61..3914b577b8fb 100644 --- a/usr.sbin/btrace/printf.c +++ b/usr.sbin/btrace/printf.c @@ -400,7 +400,7 @@ getchr(void) if (gargv == NULL) return((int)'\0'); - c = (int)*ba2str(gargv, gdevt); + c = ba2long(gargv, gdevt); gargv = SLIST_NEXT(gargv, ba_next); return c; } -- 2.34.1