162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/// Make sure (of/i2c/platform)_device_id tables are NULL terminated 362306a36Sopenharmony_ci// 462306a36Sopenharmony_ci// Keywords: of_table i2c_table platform_table 562306a36Sopenharmony_ci// Confidence: Medium 662306a36Sopenharmony_ci// Options: --include-headers 762306a36Sopenharmony_ci 862306a36Sopenharmony_civirtual patch 962306a36Sopenharmony_civirtual context 1062306a36Sopenharmony_civirtual org 1162306a36Sopenharmony_civirtual report 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci@depends on context@ 1462306a36Sopenharmony_ciidentifier var, arr; 1562306a36Sopenharmony_ciexpression E; 1662306a36Sopenharmony_ci@@ 1762306a36Sopenharmony_ci( 1862306a36Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 1962306a36Sopenharmony_ci ..., 2062306a36Sopenharmony_ci { 2162306a36Sopenharmony_ci .var = E, 2262306a36Sopenharmony_ci* } 2362306a36Sopenharmony_ci}; 2462306a36Sopenharmony_ci| 2562306a36Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 2662306a36Sopenharmony_ci ..., 2762306a36Sopenharmony_ci* { ..., E, ... }, 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci) 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci@depends on patch@ 3262306a36Sopenharmony_ciidentifier var, arr; 3362306a36Sopenharmony_ciexpression E; 3462306a36Sopenharmony_ci@@ 3562306a36Sopenharmony_ci( 3662306a36Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 3762306a36Sopenharmony_ci ..., 3862306a36Sopenharmony_ci { 3962306a36Sopenharmony_ci .var = E, 4062306a36Sopenharmony_ci- } 4162306a36Sopenharmony_ci+ }, 4262306a36Sopenharmony_ci+ { } 4362306a36Sopenharmony_ci}; 4462306a36Sopenharmony_ci| 4562306a36Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 4662306a36Sopenharmony_ci ..., 4762306a36Sopenharmony_ci { ..., E, ... }, 4862306a36Sopenharmony_ci+ { }, 4962306a36Sopenharmony_ci}; 5062306a36Sopenharmony_ci) 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci@r depends on org || report@ 5362306a36Sopenharmony_ciposition p1; 5462306a36Sopenharmony_ciidentifier var, arr; 5562306a36Sopenharmony_ciexpression E; 5662306a36Sopenharmony_ci@@ 5762306a36Sopenharmony_ci( 5862306a36Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 5962306a36Sopenharmony_ci ..., 6062306a36Sopenharmony_ci { 6162306a36Sopenharmony_ci .var = E, 6262306a36Sopenharmony_ci } 6362306a36Sopenharmony_ci @p1 6462306a36Sopenharmony_ci}; 6562306a36Sopenharmony_ci| 6662306a36Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 6762306a36Sopenharmony_ci ..., 6862306a36Sopenharmony_ci { ..., E, ... } 6962306a36Sopenharmony_ci @p1 7062306a36Sopenharmony_ci}; 7162306a36Sopenharmony_ci) 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci@script:python depends on org@ 7462306a36Sopenharmony_cip1 << r.p1; 7562306a36Sopenharmony_ciarr << r.arr; 7662306a36Sopenharmony_ci@@ 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_cicocci.print_main(arr,p1) 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci@script:python depends on report@ 8162306a36Sopenharmony_cip1 << r.p1; 8262306a36Sopenharmony_ciarr << r.arr; 8362306a36Sopenharmony_ci@@ 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cimsg = "%s is not NULL terminated at line %s" % (arr, p1[0].line) 8662306a36Sopenharmony_cicoccilib.report.print_report(p1[0],msg) 87