From nobody Wed May 8 18:52:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1588855621; cv=none; d=zohomail.com; s=zohoarc; b=Qq7JAy3dsknzVu458Tqrtj988T+IsBH7mXVqsqb9MskOlu4Xv9iTK8GLN0RJSlVP/VE/p6W0YLkDSiPLOIbo70yCT+GhmKyfDCCz8NrfSAet1kd+fDSZxt/dY768WvNSmKuwepRL2dFtLmKHyhHZjlxa0LUK1jEMgh1O4PSt28Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588855621; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LLp5KUkuISSHIxSdF1InSxkvcdgkIOPVqaiXNlo3J7A=; b=SiAOuNr86LsZaMUYJpCjdYjQosMSb/glReWEDlMcFyP0hSnSiE9rZUi6Tpub2WHawfBZugwJ51MhH7PzAEOsSYKNcGeSKKcaI8qt+f1z9alrAk4SykXBNtXKEzCRECFDR+7QZAYcbwk0z0stSFqr8zxpcjs5QL2YCj+S0c2qba8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1588855621768291.6582142983492; Thu, 7 May 2020 05:47:01 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-371-QiG8JH2RMQKARoY2FxFQww-1; Thu, 07 May 2020 08:46:58 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CD46D1005510; Thu, 7 May 2020 12:46:51 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A110963F9D; Thu, 7 May 2020 12:46:51 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 247351809542; Thu, 7 May 2020 12:46:50 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 047CkmgO019069 for ; Thu, 7 May 2020 08:46:48 -0400 Received: by smtp.corp.redhat.com (Postfix) id D9FD425277; Thu, 7 May 2020 12:46:48 +0000 (UTC) Received: from kinshicho.usersys.redhat.com (unknown [10.40.194.140]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 12D052B4B6 for ; Thu, 7 May 2020 12:46:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588855620; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=LLp5KUkuISSHIxSdF1InSxkvcdgkIOPVqaiXNlo3J7A=; b=HFtDTv4F+Mv2WxVFGYYq4SvhyUVGcj29rbMsg5pXcY/MsUQae/qhhOp3yMQI5LJBY93/iU l/7f6+05xndKB5xOACmhw6agntLDNPJBXxJyJnHusoxpvXNwgbyu1e5cqWel74LIgcp7FF 16cjVSk+opQjO/8NQi43Oqij0nr5Fvw= X-MC-Unique: QiG8JH2RMQKARoY2FxFQww-1 From: Andrea Bolognani To: libvir-list@redhat.com Subject: [libvirt PATCH 1/2] docs: Convert existing tables to list-table Date: Thu, 7 May 2020 14:46:38 +0200 Message-Id: <20200507124639.839453-2-abologna@redhat.com> In-Reply-To: <20200507124639.839453-1-abologna@redhat.com> References: <20200507124639.839453-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Andrea Bolognani --- docs/coding-style.rst | 53 +++++++++++------- docs/glib-adoption.rst | 123 +++++++++++++++++++++++++++-------------- 2 files changed, 114 insertions(+), 62 deletions(-) diff --git a/docs/coding-style.rst b/docs/coding-style.rst index 151ea87b6a..15c3a0b22d 100644 --- a/docs/coding-style.rst +++ b/docs/coding-style.rst @@ -547,27 +547,38 @@ Attribute annotations Use the following annotations to help the compiler and/or static analysis tools understand the code better: =20 -+-------------------------------+-----------------------------------------= -------------------+ -| Macro | Meaning = | -+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ -| ``ATTRIBUTE_NONNULL`` | passing NULL for this parameter is not a= llowed | -+-------------------------------+-----------------------------------------= -------------------+ -| ``ATTRIBUTE_PACKED`` | force a structure to be packed = | -+-------------------------------+-----------------------------------------= -------------------+ -| ``G_GNUC_FALLTHROUGH`` | allow code reuse by multiple switch case= s | -+-------------------------------+-----------------------------------------= -------------------+ -| ``G_GNUC_NO_INLINE`` | the function is mocked in the test suite= | -+-------------------------------+-----------------------------------------= -------------------+ -| ``G_GNUC_NORETURN`` | the function never returns = | -+-------------------------------+-----------------------------------------= -------------------+ -| ``G_GNUC_NULL_TERMINATED`` | last parameter must be NULL = | -+-------------------------------+-----------------------------------------= -------------------+ -| ``G_GNUC_PRINTF`` | validate that the formatting string matc= hes parameters | -+-------------------------------+-----------------------------------------= -------------------+ -| ``G_GNUC_UNUSED`` | parameter is unused in this implementati= on of the function | -+-------------------------------+-----------------------------------------= -------------------+ -| ``G_GNUC_WARN_UNUSED_RESULT`` | the return value must be checked = | -+-------------------------------+-----------------------------------------= -------------------+ +.. list-table:: + :header-rows: 1 + + * - Macro + - Meaning + + * - ``ATTRIBUTE_NONNULL`` + - passing NULL for this parameter is not allowed + + * - ``ATTRIBUTE_PACKED`` + - force a structure to be packed + + * - ``G_GNUC_FALLTHROUGH`` + - allow code reuse by multiple switch cases + + * - ``G_GNUC_NO_INLINE`` + - the function is mocked in the test suite + + * - ``G_GNUC_NORETURN`` + - the function never returns + + * - ``G_GNUC_NULL_TERMINATED`` + - last parameter must be NULL + + * - ``G_GNUC_PRINTF`` + - validate that the formatting string matches parameters + + * - ``G_GNUC_UNUSED`` + - parameter is unused in this implementation of the function + + * - ``G_GNUC_WARN_UNUSED_RESULT`` + - the return value must be checked =20 File handling ------------- diff --git a/docs/glib-adoption.rst b/docs/glib-adoption.rst index 62ddd7c61d..a5dca47f5e 100644 --- a/docs/glib-adoption.rst +++ b/docs/glib-adoption.rst @@ -53,44 +53,85 @@ The following libvirt APIs have been deleted already: ``VIR_STRDUP``, ``VIR_STRNDUP`` Prefer the GLib APIs ``g_strdup`` and ``g_strndup``. =20 -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| deleted version | GLib version | N= otes | -+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ -| ``VIR_AUTOPTR`` | ``g_autoptr`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_AUTOCLEAN`` | ``g_auto`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_AUTOFREE`` | ``g_autofree`` | T= he GLib version does not use parentheses | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_AUTOUNREF`` | ``g_autoptr`` | T= he cleanup function needs to be defined | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_DEFINE_AUTOPTR_FUNC`` | ``G_DEFINE_AUTOPTR_CLEANUP_FUNC`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_DEFINE_AUTOCLEAN_FUNC`` | ``G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_STEAL_PTR`` | ``g_steal_pointer`` | `= `a =3D f(&b)`` instead of ``f(a, b)`` | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_RETURN_PTR`` | ``return g_steal_pointer`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ARRAY_CARDINALITY`` | ``G_N_ELEMENTS`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ATTRIBUTE_FALLTHROUGH`` | ``G_GNUC_FALLTHROUGH`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ATTRIBUTE_FMT_PRINTF`` | ``G_GNUC_PRINTF`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ATTRIBUTE_NOINLINE`` | ``G_GNUC_NO_INLINE`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ATTRIBUTE_NORETURN`` | ``G_GNUC_NORETURN`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ATTRIBUTE_RETURN_CHECK`` | ``G_GNUC_WARN_UNUSED_RESULT`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ATTRIBUTE_SENTINEL`` | ``G_GNUC_NULL_TERMINATED`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``ATTRIBUTE_UNUSED`` | ``G_GNUC_UNUSED`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_STRDUP`` | ``g_strdup`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``VIR_STRNDUP`` | ``g_strndup`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ -| ``virStrerror`` | ``g_strerror`` | = | -+-------------------------------+--------------------------------------+--= -----------------------------------------+ +.. list-table:: + :header-rows: 1 + + * - deleted version + - GLib version + - Notes + + * - ``VIR_AUTOPTR`` + - ``g_autoptr`` + - + + * - ``VIR_AUTOCLEAN`` + - ``g_auto`` + - + + * - ``VIR_AUTOFREE`` + - ``g_autofree`` + - The GLib version does not use parentheses + + * - ``VIR_AUTOUNREF`` + - ``g_autoptr`` + - The cleanup function needs to be defined + + * - ``VIR_DEFINE_AUTOPTR_FUNC`` + - ``G_DEFINE_AUTOPTR_CLEANUP_FUNC`` + - + + * - ``VIR_DEFINE_AUTOCLEAN_FUNC`` + - ``G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC`` + - + + * - ``VIR_STEAL_PTR`` + - ``g_steal_pointer`` + - ``a =3D f(&b)`` instead of ``f(a, b)`` + + * - ``VIR_RETURN_PTR`` + - ``return g_steal_pointer`` + - + + * - ``ARRAY_CARDINALITY`` + - ``G_N_ELEMENTS`` + - + + * - ``ATTRIBUTE_FALLTHROUGH`` + - ``G_GNUC_FALLTHROUGH`` + - + + * - ``ATTRIBUTE_FMT_PRINTF`` + - ``G_GNUC_PRINTF`` + - + + * - ``ATTRIBUTE_NOINLINE`` + - ``G_GNUC_NO_INLINE`` + - + + * - ``ATTRIBUTE_NORETURN`` + - ``G_GNUC_NORETURN`` + - + + * - ``ATTRIBUTE_RETURN_CHECK`` + - ``G_GNUC_WARN_UNUSED_RESULT`` + - + + * - ``ATTRIBUTE_SENTINEL`` + - ``G_GNUC_NULL_TERMINATED`` + - + + * - ``ATTRIBUTE_UNUSED`` + - ``G_GNUC_UNUSED`` + - + + * - ``VIR_STRDUP`` + - ``g_strdup`` + - + + * - ``VIR_STRNDUP`` + - ``g_strndup`` + - + + * - ``virStrerror`` + - ``g_strerror`` + - --=20 2.25.4 From nobody Wed May 8 18:52:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1588855633; cv=none; d=zohomail.com; s=zohoarc; b=asps//MrDL3WFLjIAt87ylZzqy4zF0h1cgKicbCjZmncrdfyrWpklgsiNkAwInJy3xX5ylMcWUea4mIoMW6sktTJAoPnvcBrFiJBqO2600Zkb4THqfdcFtdXBcq8URrWdbyYl+8sh/flgt7qiWpZzXVHbbXWKfTwKQamA2gNGY4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1588855633; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oBdxQ/T4mtFGWXbyHEwvWaZYw1tBV5S8+lbf2nwkTL4=; b=T33Fzv/bqbFmGgczwpxV8bS6c1fIe8pZTBWPaONeaBayfI8fUGPpxqOdjMBWZXDbTrshn0PvhYL7LFgYie8g1GZUWKAiF3sGkb0icD9MkiIqbrtBHZSoPwElwA9EoRyfWOLYE4ZgzzXTfs3xlQdDyg3AZvJPGHIZcr/xSoP1MTg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1588855633781104.89140626624544; Thu, 7 May 2020 05:47:13 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-438-99ZzL0vnMFWsq23W6627pQ-1; Thu, 07 May 2020 08:47:10 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E51C3EC1A0; Thu, 7 May 2020 12:47:04 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BA19162A9F; Thu, 7 May 2020 12:47:04 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6D4594CAA8; Thu, 7 May 2020 12:47:04 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 047Ckn0s019075 for ; Thu, 7 May 2020 08:46:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id E07A025278; Thu, 7 May 2020 12:46:49 +0000 (UTC) Received: from kinshicho.usersys.redhat.com (unknown [10.40.194.140]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4323F25277 for ; Thu, 7 May 2020 12:46:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588855632; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=oBdxQ/T4mtFGWXbyHEwvWaZYw1tBV5S8+lbf2nwkTL4=; b=faIlN+i+xC7vUz7d3D/OK291P+V0XiAY9vGB7y34eLL131YG9xQz04uN7DAYeYQCxpE6o7 P6O46GddzNzdzsTomG9G4zt0uK2N+GP82KRm0w5ysbwHRDkqBq+oD4oT1xPEvooH9N/6v7 TakfqsUwKOPmkUXZwBvK0W9OPKGXLNQ= X-MC-Unique: 99ZzL0vnMFWsq23W6627pQ-1 From: Andrea Bolognani To: libvir-list@redhat.com Subject: [libvirt PATCH 2/2] docs: Document list-tables as recommended Date: Thu, 7 May 2020 14:46:39 +0200 Message-Id: <20200507124639.839453-3-abologna@redhat.com> In-Reply-To: <20200507124639.839453-1-abologna@redhat.com> References: <20200507124639.839453-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" Signed-off-by: Andrea Bolognani --- docs/styleguide.rst | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/styleguide.rst b/docs/styleguide.rst index 3162868fb7..34c5b1573a 100644 --- a/docs/styleguide.rst +++ b/docs/styleguide.rst @@ -77,6 +77,26 @@ which allows for 6 levels of headings Heading 6 ^^^^^^^^^ =20 +Tables +=3D=3D=3D=3D=3D=3D + +Tables should be created using the ``list-table`` directive whenever +possible, as in + +:: + + .. list-table:: + :header-rows: 1 + + * - Option + - Description + + * - ``foo_enabled`` + - Whether or not ``foo`` should be enabled + + * - ``bar_user`` + - Which user to run ``bar`` as + Manual pages =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 --=20 2.25.4