build system: prevent duplicate applet names

The embedded script feature makes it easier to create applets with
duplicate names.  Currently in such cases the build succeeds but
the resulting executable doesn't work as the developer intended.

Catch duplicate names when the applet tables are being generated
and make the build fail.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2018-11-25 11:46:39 +00:00 committed by Denys Vlasenko
parent 7b42f8fc76
commit 2d217799e8

View File

@ -84,7 +84,15 @@ int main(int argc, char **argv)
qsort(applets, NUM_APPLETS, sizeof(applets[0]), cmp_name); qsort(applets, NUM_APPLETS, sizeof(applets[0]), cmp_name);
if (!argv[1]) for (i = j = 0; i < NUM_APPLETS-1; ++i) {
if (cmp_name(applets+i, applets+i+1) == 0) {
fprintf(stderr, "%s: duplicate applet name '%s'\n", argv[0],
applets[i].name);
j = 1;
}
}
if (j != 0 || !argv[1])
return 1; return 1;
snprintf(tmp1, PATH_MAX, "%s.%u.new", argv[1], (int) getpid()); snprintf(tmp1, PATH_MAX, "%s.%u.new", argv[1], (int) getpid());
i = open(tmp1, O_WRONLY | O_TRUNC | O_CREAT, 0666); i = open(tmp1, O_WRONLY | O_TRUNC | O_CREAT, 0666);