From nobody Wed Nov 5 10:42:40 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533732615760845.5735142255758; Wed, 8 Aug 2018 05:50:15 -0700 (PDT) Received: from localhost ([::1]:43464 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fnNuo-0004hL-NQ for importer@patchew.org; Wed, 08 Aug 2018 08:50:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52667) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fnNBt-0006on-T7 for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:03:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fnNBm-000097-3U for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:03:49 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:37304 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fnNBl-00006d-Jr for qemu-devel@nongnu.org; Wed, 08 Aug 2018 08:03:41 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D3C2040216FA; Wed, 8 Aug 2018 12:03:40 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-117-62.ams2.redhat.com [10.36.117.62]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7CCAB2156897; Wed, 8 Aug 2018 12:03:40 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id DA45411386DC; Wed, 8 Aug 2018 14:03:34 +0200 (CEST) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Wed, 8 Aug 2018 14:03:18 +0200 Message-Id: <20180808120334.10970-41-armbru@redhat.com> In-Reply-To: <20180808120334.10970-1-armbru@redhat.com> References: <20180808120334.10970-1-armbru@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Wed, 08 Aug 2018 12:03:40 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Wed, 08 Aug 2018 12:03:40 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'armbru@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH 40/56] json: Replace %I64d, %I64u by %PRId64, %PRIu64 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com, mdroth@linux.vnet.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RDMRC_1 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Support for %I64d got addded in commit 2c0d4b36e7f "json: fix PRId64 on Win32". We had to hard-code I64d because we used the lexer's finite state machine to check interpolations. No more, so clean this up. Additional conversion specifications would be easy enough to implement when needed. Signed-off-by: Markus Armbruster --- qobject/json-parser.c | 10 ++++++---- tests/check-qjson.c | 10 ++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/qobject/json-parser.c b/qobject/json-parser.c index bd137399e5..350a9d267b 100644 --- a/qobject/json-parser.c +++ b/qobject/json-parser.c @@ -433,16 +433,18 @@ static QObject *parse_interpolation(JSONParserContext= *ctxt, va_list *ap) return QOBJECT(qnum_from_int(va_arg(*ap, int))); } else if (!strcmp(token->str, "%ld")) { return QOBJECT(qnum_from_int(va_arg(*ap, long))); - } else if (!strcmp(token->str, "%lld") || - !strcmp(token->str, "%I64d")) { + } else if (!strcmp(token->str, "%lld")) { return QOBJECT(qnum_from_int(va_arg(*ap, long long))); + } else if (!strcmp(token->str, "%" PRId64)) { + return QOBJECT(qnum_from_int(va_arg(*ap, int64_t))); } else if (!strcmp(token->str, "%u")) { return QOBJECT(qnum_from_uint(va_arg(*ap, unsigned int))); } else if (!strcmp(token->str, "%lu")) { return QOBJECT(qnum_from_uint(va_arg(*ap, unsigned long))); - } else if (!strcmp(token->str, "%llu") || - !strcmp(token->str, "%I64u")) { + } else if (!strcmp(token->str, "%llu")) { return QOBJECT(qnum_from_uint(va_arg(*ap, unsigned long long))); + } else if (!strcmp(token->str, "%" PRIu64)) { + return QOBJECT(qnum_from_uint(va_arg(*ap, uint64_t))); } else if (!strcmp(token->str, "%s")) { return QOBJECT(qstring_from_str(va_arg(*ap, const char *))); } else if (!strcmp(token->str, "%f")) { diff --git a/tests/check-qjson.c b/tests/check-qjson.c index 895be489b3..fbb607c227 100644 --- a/tests/check-qjson.c +++ b/tests/check-qjson.c @@ -919,9 +919,11 @@ static void keyword_literal(void) static void interpolation(void) { long long value_lld =3D 0x123456789abcdefLL; + int64_t value_d64 =3D value_lld; long value_ld =3D (long)value_lld; int value_d =3D (int)value_lld; unsigned long long value_llu =3D 0xfedcba9876543210ULL; + uint64_t value_u64 =3D value_llu; unsigned long value_lu =3D (unsigned long)value_llu; unsigned value_u =3D (unsigned)value_llu; double value_f =3D 2.323423423; @@ -959,6 +961,10 @@ static void interpolation(void) g_assert_cmpint(qnum_get_int(qnum), =3D=3D, value_lld); qobject_unref(qnum); =20 + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%" PRId64, value_= d64)); + g_assert_cmpint(qnum_get_int(qnum), =3D=3D, value_lld); + qobject_unref(qnum); + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%u", value_u)); g_assert_cmpuint(qnum_get_uint(qnum), =3D=3D, value_u); qobject_unref(qnum); @@ -971,6 +977,10 @@ static void interpolation(void) g_assert_cmpuint(qnum_get_uint(qnum), =3D=3D, value_llu); qobject_unref(qnum); =20 + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%" PRIu64, value_= u64)); + g_assert_cmpuint(qnum_get_uint(qnum), =3D=3D, value_llu); + qobject_unref(qnum); + qnum =3D qobject_to(QNum, qobject_from_jsonf_nofail("%f", value_f)); g_assert(qnum_get_double(qnum) =3D=3D value_f); qobject_unref(qnum); --=20 2.17.1