[{"id":33102,"web_url":"https://patchwork.libcamera.org/comment/33102/","msgid":"<J_jJYqXDYBQi1qsDVcj--zJ9teT4IoT2G7cX4-mpLzY4ebXQlJX3hRu9LKqZD1fQiiI3n10CtutPrbCQzg0M5AssxiwP4HPacMjWSv7chrI=@protonmail.com>","date":"2025-01-20T13:59:47","subject":"Re: [PATCH] libcamera: log: Match whole category in\n\tLIBCAMERA_LOG_LEVELS","submitter":{"id":133,"url":"https://patchwork.libcamera.org/api/people/133/","name":"Pőcze Barnabás","email":"pobrn@protonmail.com"},"content":"Hi\n\n\n2025. január 20., hétfő 14:30 keltezéssel, Stefan Klug <stefan.klug@ideasonboard.com> írta:\n\n> A LIBCAMERA_LOG_LEVELS value of \"RkISP1:0\" also applies to RkISP1Ccm and\n> RkISP1Awb. This behavior is unexpected as it automatically enables all\n> algorithm log categories when the intent is only to increase the log\n> level of the upper category. Fix that by ensuring that the full name\n> gets matched.  The * wildcard is still supported, so RkISP1* matches\n> RkISP1 and RkISP1Awb.\n> \n> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> ---\n>  src/libcamera/base/log.cpp | 12 ++++++++++--\n>  1 file changed, 10 insertions(+), 2 deletions(-)\n> \n> diff --git a/src/libcamera/base/log.cpp b/src/libcamera/base/log.cpp\n> index 3a656b8f099f..36e57d6017ab 100644\n> --- a/src/libcamera/base/log.cpp\n> +++ b/src/libcamera/base/log.cpp\n> @@ -718,11 +718,15 @@ void Logger::registerCategory(LogCategory *category)\n> \n>  \tconst std::string &name = category->name();\n>  \tfor (const std::pair<std::string, LogSeverity> &level : levels_) {\n> +\t\tunsigned int i;\n> +\t\tbool wildcard = false;\n>  \t\tbool match = true;\n> \n> -\t\tfor (unsigned int i = 0; i < level.first.size(); ++i) {\n> -\t\t\tif (level.first[i] == '*')\n> +\t\tfor (i = 0; i < level.first.size(); ++i) {\n> +\t\t\tif (level.first[i] == '*') {\n> +\t\t\t\twildcard = true;\n>  \t\t\t\tbreak;\n> +\t\t\t}\n> \n>  \t\t\tif (i >= name.size() ||\n>  \t\t\t    name[i] != level.first[i]) {\n> @@ -731,6 +735,10 @@ void Logger::registerCategory(LogCategory *category)\n>  \t\t\t}\n>  \t\t}\n> \n> +\t\t/* Ensure the full name got matched */\n> +\t\tif (!(wildcard || i == name.size()))\n> +\t\t\tcontinue;\n> +\n\nWould `fnmatch()` work? If so, then I think that would simplify the code while\nallowing a greater set of wildcards.\n\n\nRegards,\nBarnabás Pőcze\n\n\n>  \t\tif (match) {\n>  \t\t\tcategory->setSeverity(level.second);\n>  \t\t\tbreak;\n> --\n> 2.43.0\n> \n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id BE30DC327D\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 20 Jan 2025 13:59:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id EAF406854B;\n\tMon, 20 Jan 2025 14:59:54 +0100 (CET)","from mail-10631.protonmail.ch (mail-10631.protonmail.ch\n\t[79.135.106.31])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E6CD760354\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 20 Jan 2025 14:59:52 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=protonmail.com header.i=@protonmail.com\n\theader.b=\"NbKm4FM2\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;\n\ts=protonmail3; t=1737381591; x=1737640791;\n\tbh=fuS5sGFqXcw8isH1FWqgGaK5z/gDfxM6jHaojpp/hXk=;\n\th=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:\n\tFeedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:\n\tMessage-ID:BIMI-Selector:List-Unsubscribe:List-Unsubscribe-Post;\n\tb=NbKm4FM20dk4KnBnXLSJqf7bEnyydAdSPvL94pG3Yg1jMrPkgda5N1fU3j4CvtFVf\n\tC6FKRbMqfZjt+2GYXD6sPxx7MBv1VGpBzqquK5bQhbnHhWEsaS3iIF+Ev0bkRz+DyX\n\tZcH4SRJdktvrmHpBH6raeuepnDF2vCzRi73269HE8J44/vCzr0EslkE4I1LwA6hTQY\n\tZeQTYziEo1nn/bZloARSkwuXAl8hENO0tsNOfyW6gwrx5+dFcMFUhU1PqlQKQtfr+5\n\t7LspweafVoRfRfF/GVWbjzudt0z2xF/utbkpRpdX2KTzhAgjc8ELlnBhRrYzMd62il\n\tI4fP7Ym8p4RiQ==","Date":"Mon, 20 Jan 2025 13:59:47 +0000","To":"Stefan Klug <stefan.klug@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] libcamera: log: Match whole category in\n\tLIBCAMERA_LOG_LEVELS","Message-ID":"<J_jJYqXDYBQi1qsDVcj--zJ9teT4IoT2G7cX4-mpLzY4ebXQlJX3hRu9LKqZD1fQiiI3n10CtutPrbCQzg0M5AssxiwP4HPacMjWSv7chrI=@protonmail.com>","In-Reply-To":"<20250120133038.817550-1-stefan.klug@ideasonboard.com>","References":"<20250120133038.817550-1-stefan.klug@ideasonboard.com>","Feedback-ID":"20568564:user:proton","X-Pm-Message-ID":"113e92da5afcdc78a65bc81505baa70edde21f62","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":33116,"web_url":"https://patchwork.libcamera.org/comment/33116/","msgid":"<20250121113007.GL9249@pendragon.ideasonboard.com>","date":"2025-01-21T11:30:07","subject":"Re: [PATCH] libcamera: log: Match whole category in\n\tLIBCAMERA_LOG_LEVELS","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Jan 20, 2025 at 01:59:47PM +0000, Barnabás Pőcze wrote:\n> 2025. január 20., hétfő 14:30 keltezéssel, Stefan Klug írta:\n> \n> > A LIBCAMERA_LOG_LEVELS value of \"RkISP1:0\" also applies to RkISP1Ccm and\n> > RkISP1Awb. This behavior is unexpected as it automatically enables all\n> > algorithm log categories when the intent is only to increase the log\n> > level of the upper category. Fix that by ensuring that the full name\n> > gets matched.  The * wildcard is still supported, so RkISP1* matches\n> > RkISP1 and RkISP1Awb.\n> > \n> > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> > ---\n> >  src/libcamera/base/log.cpp | 12 ++++++++++--\n> >  1 file changed, 10 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/src/libcamera/base/log.cpp b/src/libcamera/base/log.cpp\n> > index 3a656b8f099f..36e57d6017ab 100644\n> > --- a/src/libcamera/base/log.cpp\n> > +++ b/src/libcamera/base/log.cpp\n> > @@ -718,11 +718,15 @@ void Logger::registerCategory(LogCategory *category)\n> > \n> >  \tconst std::string &name = category->name();\n> >  \tfor (const std::pair<std::string, LogSeverity> &level : levels_) {\n> > +\t\tunsigned int i;\n> > +\t\tbool wildcard = false;\n> >  \t\tbool match = true;\n> > \n> > -\t\tfor (unsigned int i = 0; i < level.first.size(); ++i) {\n> > -\t\t\tif (level.first[i] == '*')\n> > +\t\tfor (i = 0; i < level.first.size(); ++i) {\n> > +\t\t\tif (level.first[i] == '*') {\n> > +\t\t\t\twildcard = true;\n> >  \t\t\t\tbreak;\n> > +\t\t\t}\n> > \n> >  \t\t\tif (i >= name.size() ||\n> >  \t\t\t    name[i] != level.first[i]) {\n> > @@ -731,6 +735,10 @@ void Logger::registerCategory(LogCategory *category)\n> >  \t\t\t}\n> >  \t\t}\n> > \n> > +\t\t/* Ensure the full name got matched */\n> > +\t\tif (!(wildcard || i == name.size()))\n> > +\t\t\tcontinue;\n> > +\n> \n> Would `fnmatch()` work? If so, then I think that would simplify the code while\n> allowing a greater set of wildcards.\n\nThat would probably work, and the function is available in all the\nstandard libraries we support as far as I can tell. Supporting wildcards\nin other locations than the end of the string seems useful. The\ndocumentation at the beginning of the file should be updated, it\ncurrently states that the wildcard character can only be at the end.\n\nI would prefer not advertising support for '?' and '[...]' for now, but\nI'm fine if they are supported as a side effect.\n\nCould we maybe address https://bugs.libcamera.org/show_bug.cgi?id=243\nwhile at it ? Barnabás, would you like to volunteer ? :-)\n\n> >  \t\tif (match) {\n> >  \t\t\tcategory->setSeverity(level.second);\n> >  \t\t\tbreak;","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id D5BFABD160\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Jan 2025 11:30:18 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 014496851D;\n\tTue, 21 Jan 2025 12:30:17 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9A66460380\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Jan 2025 12:30:16 +0100 (CET)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 24332BDB;\n\tTue, 21 Jan 2025 12:29:13 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"uBThLnjO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1737458954;\n\tbh=MzDOVh2j8iWG+mlfG0dPZtt+iTkv1jI4TUJz+7eIkCk=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=uBThLnjOXhRq59x7tWtmLbJHlZFYs85OnSNJ28eM+9zTYAPGipS+nJ/Z91gBAseKe\n\tl/gmuhzm6MVMkqJHmLaEyP1sYAyb++PIxJ9e5h0SGjRJvsjvhmpKgbWDDZppxOXC0F\n\tZPLg78t0S5UIMhGEvy6C2sAsflhcQ2w485VnYb3E=","Date":"Tue, 21 Jan 2025 13:30:07 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] libcamera: log: Match whole category in\n\tLIBCAMERA_LOG_LEVELS","Message-ID":"<20250121113007.GL9249@pendragon.ideasonboard.com>","References":"<20250120133038.817550-1-stefan.klug@ideasonboard.com>\n\t<J_jJYqXDYBQi1qsDVcj--zJ9teT4IoT2G7cX4-mpLzY4ebXQlJX3hRu9LKqZD1fQiiI3n10CtutPrbCQzg0M5AssxiwP4HPacMjWSv7chrI=@protonmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<J_jJYqXDYBQi1qsDVcj--zJ9teT4IoT2G7cX4-mpLzY4ebXQlJX3hRu9LKqZD1fQiiI3n10CtutPrbCQzg0M5AssxiwP4HPacMjWSv7chrI=@protonmail.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":33117,"web_url":"https://patchwork.libcamera.org/comment/33117/","msgid":"<_pGPN7x7utyU61D3Xahhe1ebHwyB9Gbn_7vWgs_SbcfrqVU73KwTOk2OEAXtK1HWr4XyDonk2CqAXRGvux7hgfgFivPm9oMvxRdSNKxTCYY=@protonmail.com>","date":"2025-01-21T11:42:15","subject":"Re: [PATCH] libcamera: log: Match whole category in\n\tLIBCAMERA_LOG_LEVELS","submitter":{"id":133,"url":"https://patchwork.libcamera.org/api/people/133/","name":"Pőcze Barnabás","email":"pobrn@protonmail.com"},"content":"2025. január 21., kedd 12:30 keltezéssel, Laurent Pinchart <laurent.pinchart@ideasonboard.com> írta:\n\n> On Mon, Jan 20, 2025 at 01:59:47PM +0000, Barnabás Pőcze wrote:\n> > 2025. január 20., hétfő 14:30 keltezéssel, Stefan Klug írta:\n> >\n> > > A LIBCAMERA_LOG_LEVELS value of \"RkISP1:0\" also applies to RkISP1Ccm and\n> > > RkISP1Awb. This behavior is unexpected as it automatically enables all\n> > > algorithm log categories when the intent is only to increase the log\n> > > level of the upper category. Fix that by ensuring that the full name\n> > > gets matched.  The * wildcard is still supported, so RkISP1* matches\n> > > RkISP1 and RkISP1Awb.\n> > >\n> > > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> > > ---\n> > >  src/libcamera/base/log.cpp | 12 ++++++++++--\n> > >  1 file changed, 10 insertions(+), 2 deletions(-)\n> > >\n> > > diff --git a/src/libcamera/base/log.cpp b/src/libcamera/base/log.cpp\n> > > index 3a656b8f099f..36e57d6017ab 100644\n> > > --- a/src/libcamera/base/log.cpp\n> > > +++ b/src/libcamera/base/log.cpp\n> > > @@ -718,11 +718,15 @@ void Logger::registerCategory(LogCategory *category)\n> > >\n> > >  \tconst std::string &name = category->name();\n> > >  \tfor (const std::pair<std::string, LogSeverity> &level : levels_) {\n> > > +\t\tunsigned int i;\n> > > +\t\tbool wildcard = false;\n> > >  \t\tbool match = true;\n> > >\n> > > -\t\tfor (unsigned int i = 0; i < level.first.size(); ++i) {\n> > > -\t\t\tif (level.first[i] == '*')\n> > > +\t\tfor (i = 0; i < level.first.size(); ++i) {\n> > > +\t\t\tif (level.first[i] == '*') {\n> > > +\t\t\t\twildcard = true;\n> > >  \t\t\t\tbreak;\n> > > +\t\t\t}\n> > >\n> > >  \t\t\tif (i >= name.size() ||\n> > >  \t\t\t    name[i] != level.first[i]) {\n> > > @@ -731,6 +735,10 @@ void Logger::registerCategory(LogCategory *category)\n> > >  \t\t\t}\n> > >  \t\t}\n> > >\n> > > +\t\t/* Ensure the full name got matched */\n> > > +\t\tif (!(wildcard || i == name.size()))\n> > > +\t\t\tcontinue;\n> > > +\n> >\n> > Would `fnmatch()` work? If so, then I think that would simplify the code while\n> > allowing a greater set of wildcards.\n> \n> That would probably work, and the function is available in all the\n> standard libraries we support as far as I can tell. Supporting wildcards\n> in other locations than the end of the string seems useful. The\n> documentation at the beginning of the file should be updated, it\n> currently states that the wildcard character can only be at the end.\n> \n> I would prefer not advertising support for '?' and '[...]' for now, but\n> I'm fine if they are supported as a side effect.\n\nI agree.\n\n\n> \n> Could we maybe address https://bugs.libcamera.org/show_bug.cgi?id=243\n> while at it ? Barnabás, would you like to volunteer ? :-)\n\nI'll take a look.\n\n\nRegards,\nBarnabás Pőcze\n\n\n> \n> > >  \t\tif (match) {\n> > >  \t\t\tcategory->setSeverity(level.second);\n> > >  \t\t\tbreak;\n> \n> --\n> Regards,\n> \n> Laurent Pinchart","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 4F728BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 21 Jan 2025 11:42:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 61CB46851D;\n\tTue, 21 Jan 2025 12:42:21 +0100 (CET)","from mail-10628.protonmail.ch (mail-10628.protonmail.ch\n\t[79.135.106.28])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D8BBE60380\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 21 Jan 2025 12:42:19 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=protonmail.com header.i=@protonmail.com\n\theader.b=\"oQRmpfNN\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;\n\ts=protonmail3; t=1737459738; x=1737718938;\n\tbh=b8PpVeKUHbmWeKElYdkOJ4z9UItC+MOw9IDqA/N6L/w=;\n\th=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:\n\tFeedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:\n\tMessage-ID:BIMI-Selector:List-Unsubscribe:List-Unsubscribe-Post;\n\tb=oQRmpfNNWP3Ge5iuEX5n0I4nqHmTP9tcsBP3qk8LkGhfJ1IK/Tus0Gs04Jtlmflw8\n\tul4KhlcIaDdmCPGveda7iAIAXGDAtetnQn7cN9YcqUr70SthI9JZDpvOh3ngjGBphg\n\tDHR3IBSvcCuclY4Oq5TJMU3ZGyzJds39bqbPoQ64uVo12qYRBb9l+VNpD0zyAABapP\n\tkxPsjVKt/LEuYrat3TEckyK0LMZ16rK0B947/sk8eqqgposD+Q5++EC8xD2N50blCp\n\twLzr60CDvcuhSexwDWFvYBJdQMHLTaC73vLFvbJ1vZFnlHa/jXAcw3xML/WUjyyYYF\n\t9g5kQ6vj+XELQ==","Date":"Tue, 21 Jan 2025 11:42:15 +0000","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <pobrn@protonmail.com>","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH] libcamera: log: Match whole category in\n\tLIBCAMERA_LOG_LEVELS","Message-ID":"<_pGPN7x7utyU61D3Xahhe1ebHwyB9Gbn_7vWgs_SbcfrqVU73KwTOk2OEAXtK1HWr4XyDonk2CqAXRGvux7hgfgFivPm9oMvxRdSNKxTCYY=@protonmail.com>","In-Reply-To":"<20250121113007.GL9249@pendragon.ideasonboard.com>","References":"<20250120133038.817550-1-stefan.klug@ideasonboard.com>\n\t<J_jJYqXDYBQi1qsDVcj--zJ9teT4IoT2G7cX4-mpLzY4ebXQlJX3hRu9LKqZD1fQiiI3n10CtutPrbCQzg0M5AssxiwP4HPacMjWSv7chrI=@protonmail.com>\n\t<20250121113007.GL9249@pendragon.ideasonboard.com>","Feedback-ID":"20568564:user:proton","X-Pm-Message-ID":"ce4d638e51071ff991ca9fb52b064ddba2238796","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]