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