{"id":2235257,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2235257/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/20260508213217.3807786-4-aristo.chen@canonical.com/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.2/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260508213217.3807786-4-aristo.chen@canonical.com>","list_archive_url":null,"date":"2026-05-08T21:32:01","name":"[v1,3/3] boot/fit: use fdt_for_each_subnode() in image-fit.c","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"3f9d264de902ddd1ca03ce7ee664c0b744f86d4c","submitter":{"id":92721,"url":"http://patchwork.ozlabs.org/api/1.2/people/92721/?format=json","name":"Aristo Chen","email":"aristo.chen@canonical.com"},"delegate":{"id":3651,"url":"http://patchwork.ozlabs.org/api/1.2/users/3651/?format=json","username":"trini","first_name":"Tom","last_name":"Rini","email":"trini@ti.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260508213217.3807786-4-aristo.chen@canonical.com/mbox/","series":[{"id":503465,"url":"http://patchwork.ozlabs.org/api/1.2/series/503465/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=503465","date":"2026-05-08T21:31:58","name":"boot/fit: use fdt_for_each_subnode() in image-fit.c","version":1,"mbox":"http://patchwork.ozlabs.org/series/503465/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2235257/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2235257/checks/","tags":{},"related":[],"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (4096-bit key;\n unprotected) header.d=canonical.com header.i=@canonical.com\n header.a=rsa-sha256 header.s=20251003 header.b=g01fC99C;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=canonical.com","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (4096-bit key;\n unprotected) header.d=canonical.com header.i=@canonical.com\n header.b=\"g01fC99C\";\n\tdkim-atps=neutral","phobos.denx.de; dmarc=pass (p=reject dis=none)\n header.from=canonical.com","phobos.denx.de;\n spf=pass smtp.mailfrom=aristo.chen@canonical.com"],"Received":["from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gC6fC2wZzz1yCg\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 09 May 2026 10:42:59 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 82D5A84E5C;\n\tSat,  9 May 2026 02:40:21 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 6880884D1A; Fri,  8 May 2026 23:32:44 +0200 (CEST)","from smtp-relay-internal-1.canonical.com\n (smtp-relay-internal-1.canonical.com [185.125.188.123])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 6A77884CEF\n for <u-boot@lists.denx.de>; Fri,  8 May 2026 23:32:42 +0200 (CEST)","from mail-pf1-f198.google.com (mail-pf1-f198.google.com\n [209.85.210.198])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 27E293F9C1\n for <u-boot@lists.denx.de>; Fri,  8 May 2026 21:32:42 +0000 (UTC)","by mail-pf1-f198.google.com with SMTP id\n d2e1a72fcca58-82f756ebd0dso1647648b3a.1\n for <u-boot@lists.denx.de>; Fri, 08 May 2026 14:32:42 -0700 (PDT)","from noble-uboot.tail872496.ts.net\n (124-218-37-86.cm.dynamic.apol.com.tw. [124.218.37.86])\n by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-83962e7e3fcsm16196751b3a.0.2026.05.08.14.32.37\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 08 May 2026 14:32:39 -0700 (PDT)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com;\n s=20251003; t=1778275962;\n bh=ZcdxGsH+z5nGD+j7GS29ZPoAxjLJdcvRr+ttuG0s2lY=;\n h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n MIME-Version;\n b=g01fC99CjlpT2YcU64hP8qTwyDFmKJjeujBfbw/z97akpDRz9WQlSBBrkDD1gCq7T\n 58kjp94pqWabf2r8IiTttcEjwKdBaLFrOnsSi/kJrOuvr7GhdVhBO7AST0cXvQlE/E\n GjzOKpGFlwv5GMC9Mw4jV6sD5ZgoGTnyCOjNyNVC7KApS4REqtkE0npALXo4xqURgx\n 5GeJIIhBsjbxRg1TH67FRqtAW3dChnqjjSTogux2zPCCYur8UgRmV40qr1HjhVerNh\n ocPV1269OCSo5PuZwSGzoWlJsDhp8PSomV/wgIMcPHHsQbWDFWldQezJEeihDmR264\n mAN08tYbfci6mLdK4KidLigOmrvdd5j1bJ85B71dXzUD9e0aOX4hnrSPq1W6/7A5Ji\n 9SQcpB3cv1lxiGuIKsxvuB1ukW2Gv2EBVy8cOcE/1RSPXxehQq4Os/7UPTzgZuaN3S\n HbOzgQPrkkFjXu9rFuLY48tqBSwnrrw5+rB4y9g7kBTdccVNdsOrkvq+x/eir87NkE\n +oVRZA/qgxJLQFM0GbDINbNMjQNiQj37plQ7U2ATA9nP6/WUFgjKVclxW8FJEJZSRH\n eZcHCaxkJ+GQzg+oQ87NHXx20M29kcgW+RrlhXW52bWSvA5loUmPB8Xg6KTJ/KgqeW\n t1e++um+1+RyYB8n8KNqmXK4=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1778275960; x=1778880760;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=ZcdxGsH+z5nGD+j7GS29ZPoAxjLJdcvRr+ttuG0s2lY=;\n b=e35T6OAwngrXebhQdAgskNlnEioNULbg+o9CYuZrfkc8+EY2DWfacSHxrLsG8ZSgj1\n nFEzcNsRZ3/mrIkNfsOgEekrusbUG6/V+YcZHX1YwcaWw5cuYYMyIkrIwjlhIezTgqqj\n 32Wcslc2DZ2DaA7SL76kflx2HZ/tTljHnnZ5R+hkmzA3bEF1OK6p4veHim365KDak051\n fkR3RgCP+EsxNQsDerRUpdkO5cshYBSzNjAPfU6IMtX6qfywTOrkOPpQMZPHqyu4E3mL\n A5aBTbxbgVQzlr7k4KhaqtdlGadHl/az55R0EE1ohqsBd+qYALpUDfzzl7Cx7tH5NOH1\n CSKw==","X-Gm-Message-State":"AOJu0YzUYcm/sspL6mkdZwngCW9C08Q6yGM/RD6g+zCv27QUvOb9BUUa\n LUdPcjVldgU7sMjbqokh2KE6WW182soGkmbMYUofAI/NS34L6N7EVLlY7CI3nFZNHUp5yO/ftrZ\n u84lx4VdoxgHQShUvAHYt4fox9MEeo7ZBOs0dICBzQT6zm14uTHTb0sLzR9vC4G84TxOPy9PzJ/\n p8VLmGvxH6uJg=","X-Gm-Gg":"Acq92OGuQ3xkWE9ky1Zo/zSL1CRkB+pF4aqs/bR6p7NRrWaWed4LPx1sI+tOMglK6nv\n VfTaKf1DMgbDXHPtuIO6w9u8s19lSHo+eDfqtR2bSJTbvCcAodZKTYP1Rqvg+84AAr5LudiwiIt\n fLnwVfpUPQcn7rY7aDsyg2+FrmU2gzWyNhJdsBXsloBzgbXgQxLt2HiKI2UrnJ3gL6GkaQxguuY\n o/VdyWae0XRpY7cuIGPUALEk1gldAx7E4VG7Om6DOTW4Ln3/hfEHU5MbFvhceD9lNIJV0b891g7\n rhZ1Z+HxQUmya7s0J6gsfkkCub8YSH3Tjs/0coGr7OBLPd+LCXTg9AWP6ebA/tuN7pTUpgqolNA\n r0Lj5p3rwVXLYJgXmjLVllyGOD1sYRfk5B6bUhfULCzkdxkhc/cSA8p89K0IO4HEu1sX1dNBaXI\n TKmyx3aLlc7c6ZANM=","X-Received":["by 2002:a05:6a00:1796:b0:82f:5726:be23 with SMTP id\n d2e1a72fcca58-83cf7755867mr4855259b3a.49.1778275960164;\n Fri, 08 May 2026 14:32:40 -0700 (PDT)","by 2002:a05:6a00:1796:b0:82f:5726:be23 with SMTP id\n d2e1a72fcca58-83cf7755867mr4855245b3a.49.1778275959766;\n Fri, 08 May 2026 14:32:39 -0700 (PDT)"],"From":"Aristo Chen <aristo.chen@canonical.com>","To":"u-boot@lists.denx.de","Cc":"Aristo Chen <aristo.chen@canonical.com>, Tom Rini <trini@konsulko.com>,\n Quentin Schulz <quentin.schulz@cherry.de>,\n Marek Vasut <marek.vasut+renesas@mailbox.org>,\n James Hilliard <james.hilliard1@gmail.com>,\n Heinrich Schuchardt <xypron.glpk@gmx.de>,\n David Lechner <dlechner@baylibre.com>","Subject":"[PATCH v1 3/3] boot/fit: use fdt_for_each_subnode() in image-fit.c","Date":"Fri,  8 May 2026 21:32:01 +0000","Message-ID":"<20260508213217.3807786-4-aristo.chen@canonical.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260508213217.3807786-1-aristo.chen@canonical.com>","References":"<20260508213217.3807786-1-aristo.chen@canonical.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-Mailman-Approved-At":"Sat, 09 May 2026 02:40:19 +0200","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"Replace the verbose fdt_next_node() + ndepth pattern with the\nfdt_for_each_subnode() macro at all seven sites in boot/image-fit.c\nwhere the loop only ever processes direct children. The macro is\nalready defined in <linux/libfdt.h> and used in boot/image-fit-sig.c,\nso this brings image-fit.c in line with the rest of the FIT code.\n\nThe conversions are equivalence-preserving:\n\n  - fit_get_subimage_count(): the depth-1 filter and the macro are\n    both restricted to direct children.\n  - fit_conf_print(): the parameter is named noffset, so the loop\n    now uses sub_noffset to keep the parent reference stable.\n  - fit_print_contents(): the count reset that lived inside the for\n    initialiser is moved out as an explicit assignment before each\n    loop, so the second loop still starts from zero.\n  - fit_image_print(): straightforward replacement.\n  - fit_all_image_verify(): same shape as the print loops, with the\n    count reset moved out as an explicit assignment before the loop.\n  - fit_conf_find_compat(): the body's \"if (ndepth > 1) continue\"\n    guard is redundant once the macro is in use, and is dropped.\n\nNo behaviour changes outside of these mechanical reductions. Local\nndepth declarations that are no longer referenced are removed.\n\nSigned-off-by: Aristo Chen <aristo.chen@canonical.com>\n---\n boot/image-fit.c | 107 ++++++++++++-----------------------------------\n 1 file changed, 27 insertions(+), 80 deletions(-)","diff":"diff --git a/boot/image-fit.c b/boot/image-fit.c\nindex 5a502e93106..dddc0d97928 100644\n--- a/boot/image-fit.c\n+++ b/boot/image-fit.c\n@@ -156,18 +156,10 @@ static void fit_get_debug(const void *fit, int noffset,\n int fit_get_subimage_count(const void *fit, int images_noffset)\n {\n \tint noffset;\n-\tint ndepth;\n \tint count = 0;\n \n-\t/* Process its subnodes, print out component images details */\n-\tfor (ndepth = 0, count = 0,\n-\t\tnoffset = fdt_next_node(fit, images_noffset, &ndepth);\n-\t     (noffset >= 0) && (ndepth > 0);\n-\t     noffset = fdt_next_node(fit, noffset, &ndepth)) {\n-\t\tif (ndepth == 1) {\n-\t\t\tcount++;\n-\t\t}\n-\t}\n+\tfdt_for_each_subnode(noffset, fit, images_noffset)\n+\t\tcount++;\n \n \treturn count;\n }\n@@ -291,7 +283,7 @@ static void fit_conf_print(const void *fit, int noffset, const char *p)\n \tconst char *uname;\n \tint ret;\n \tint fdt_index, loadables_index;\n-\tint ndepth;\n+\tint sub_noffset;\n \n \t/* Mandatory properties */\n \tret = fit_get_desc(fit, noffset, &desc);\n@@ -357,14 +349,8 @@ static void fit_conf_print(const void *fit, int noffset, const char *p)\n \t}\n \n \t/* Process all hash subnodes of the component configuration node */\n-\tfor (ndepth = 0, noffset = fdt_next_node(fit, noffset, &ndepth);\n-\t     (noffset >= 0) && (ndepth > 0);\n-\t     noffset = fdt_next_node(fit, noffset, &ndepth)) {\n-\t\tif (ndepth == 1) {\n-\t\t\t/* Direct child node of the component configuration node */\n-\t\t\tfit_image_print_verification_data(fit, noffset, p);\n-\t\t}\n-\t}\n+\tfdt_for_each_subnode(sub_noffset, fit, noffset)\n+\t\tfit_image_print_verification_data(fit, sub_noffset, p);\n }\n \n /**\n@@ -386,8 +372,7 @@ void fit_print_contents(const void *fit)\n \tint images_noffset;\n \tint confs_noffset;\n \tint noffset;\n-\tint ndepth;\n-\tint count = 0;\n+\tint count;\n \tint ret;\n \tconst char *p;\n \ttime_t timestamp;\n@@ -424,20 +409,12 @@ void fit_print_contents(const void *fit)\n \t}\n \n \t/* Process its subnodes, print out component images details */\n-\tfor (ndepth = 0, count = 0,\n-\t\tnoffset = fdt_next_node(fit, images_noffset, &ndepth);\n-\t     (noffset >= 0) && (ndepth > 0);\n-\t     noffset = fdt_next_node(fit, noffset, &ndepth)) {\n-\t\tif (ndepth == 1) {\n-\t\t\t/*\n-\t\t\t * Direct child node of the images parent node,\n-\t\t\t * i.e. component image node.\n-\t\t\t */\n-\t\t\tprintf(\"%s Image %u (%s)\\n\", p, count++,\n-\t\t\t       fit_get_name(fit, noffset, NULL));\n+\tcount = 0;\n+\tfdt_for_each_subnode(noffset, fit, images_noffset) {\n+\t\tprintf(\"%s Image %u (%s)\\n\", p, count++,\n+\t\t       fit_get_name(fit, noffset, NULL));\n \n-\t\t\tfit_image_print(fit, noffset, p);\n-\t\t}\n+\t\tfit_image_print(fit, noffset, p);\n \t}\n \n \t/* Find configurations parent node offset */\n@@ -454,20 +431,12 @@ void fit_print_contents(const void *fit)\n \t\tprintf(\"%s Default Configuration: '%s'\\n\", p, uname);\n \n \t/* Process its subnodes, print out configurations details */\n-\tfor (ndepth = 0, count = 0,\n-\t\tnoffset = fdt_next_node(fit, confs_noffset, &ndepth);\n-\t     (noffset >= 0) && (ndepth > 0);\n-\t     noffset = fdt_next_node(fit, noffset, &ndepth)) {\n-\t\tif (ndepth == 1) {\n-\t\t\t/*\n-\t\t\t * Direct child node of the configurations parent node,\n-\t\t\t * i.e. configuration node.\n-\t\t\t */\n-\t\t\tprintf(\"%s Configuration %u (%s)\\n\", p, count++,\n-\t\t\t       fit_get_name(fit, noffset, NULL));\n+\tcount = 0;\n+\tfdt_for_each_subnode(noffset, fit, confs_noffset) {\n+\t\tprintf(\"%s Configuration %u (%s)\\n\", p, count++,\n+\t\t       fit_get_name(fit, noffset, NULL));\n \n-\t\t\tfit_conf_print(fit, noffset, p);\n-\t\t}\n+\t\tfit_conf_print(fit, noffset, p);\n \t}\n }\n \n@@ -494,7 +463,6 @@ void fit_image_print(const void *fit, int image_noffset, const char *p)\n \tulong load, entry;\n \tconst void *data;\n \tint noffset;\n-\tint ndepth;\n \tint ret;\n \n \tif (!CONFIG_IS_ENABLED(FIT_PRINT))\n@@ -584,14 +552,8 @@ void fit_image_print(const void *fit, int image_noffset, const char *p)\n \t}\n \n \t/* Process all hash subnodes of the component image node */\n-\tfor (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth);\n-\t     (noffset >= 0) && (ndepth > 0);\n-\t     noffset = fdt_next_node(fit, noffset, &ndepth)) {\n-\t\tif (ndepth == 1) {\n-\t\t\t/* Direct child node of the component image node */\n-\t\t\tfit_image_print_verification_data(fit, noffset, p);\n-\t\t}\n-\t}\n+\tfdt_for_each_subnode(noffset, fit, image_noffset)\n+\t\tfit_image_print_verification_data(fit, noffset, p);\n }\n \n /**\n@@ -1477,7 +1439,6 @@ int fit_all_image_verify(const void *fit)\n {\n \tint images_noffset;\n \tint noffset;\n-\tint ndepth;\n \tint count;\n \n \t/* Find images parent node offset */\n@@ -1491,23 +1452,15 @@ int fit_all_image_verify(const void *fit)\n \t/* Process all image subnodes, check hashes for each */\n \tprintf(\"## Checking hash(es) for FIT Image at %08lx ...\\n\",\n \t       (ulong)fit);\n-\tfor (ndepth = 0, count = 0,\n-\t     noffset = fdt_next_node(fit, images_noffset, &ndepth);\n-\t\t\t(noffset >= 0) && (ndepth > 0);\n-\t\t\tnoffset = fdt_next_node(fit, noffset, &ndepth)) {\n-\t\tif (ndepth == 1) {\n-\t\t\t/*\n-\t\t\t * Direct child node of the images parent node,\n-\t\t\t * i.e. component image node.\n-\t\t\t */\n-\t\t\tprintf(\"   Hash(es) for Image %u (%s): \", count,\n-\t\t\t       fit_get_name(fit, noffset, NULL));\n-\t\t\tcount++;\n+\tcount = 0;\n+\tfdt_for_each_subnode(noffset, fit, images_noffset) {\n+\t\tprintf(\"   Hash(es) for Image %u (%s): \", count,\n+\t\t       fit_get_name(fit, noffset, NULL));\n+\t\tcount++;\n \n-\t\t\tif (!fit_image_verify(fit, noffset))\n-\t\t\t\treturn 0;\n-\t\t\tprintf(\"\\n\");\n-\t\t}\n+\t\tif (!fit_image_verify(fit, noffset))\n+\t\t\treturn 0;\n+\t\tprintf(\"\\n\");\n \t}\n \treturn 1;\n }\n@@ -1734,7 +1687,6 @@ int fit_check_format(const void *fit, ulong size)\n \n int fit_conf_find_compat(const void *fit, const void *fdt)\n {\n-\tint ndepth = 0;\n \tint noffset, confs_noffset, images_noffset;\n \tconst void *fdt_compat;\n \tint fdt_compat_len;\n@@ -1757,9 +1709,7 @@ int fit_conf_find_compat(const void *fit, const void *fdt)\n \t/*\n \t * Loop over the configurations in the FIT image.\n \t */\n-\tfor (noffset = fdt_next_node(fit, confs_noffset, &ndepth);\n-\t\t\t(noffset >= 0) && (ndepth > 0);\n-\t\t\tnoffset = fdt_next_node(fit, noffset, &ndepth)) {\n+\tfdt_for_each_subnode(noffset, fit, confs_noffset) {\n \t\tconst void *fdt;\n \t\tconst char *kfdt_name;\n \t\tint kfdt_noffset, compat_noffset;\n@@ -1768,9 +1718,6 @@ int fit_conf_find_compat(const void *fit, const void *fdt)\n \t\tsize_t sz;\n \t\tint i;\n \n-\t\tif (ndepth > 1)\n-\t\t\tcontinue;\n-\n \t\t/* If there's a compat property in the config node, use that. */\n \t\tif (fdt_getprop(fit, noffset, FIT_COMPAT_PROP, NULL)) {\n \t\t\tfdt = fit;\t\t  /* search in FIT image */\n","prefixes":["v1","3/3"]}