// SPDX-License-Identifier: GPL-2.0
/*
* Generate devlist.h from the Zorro ID file.
*
* (c) 2000 Geert Uytterhoeven <geert@linux-m68k.org>
*
* Based on the PCI version:
*
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
*/
#include <stdio.h>
#include <string.h>
#define MAX_NAME_SIZE 63
static void
pq(FILE *f, const char *c)
{
while (*c) {
if (*c == '"' )
fprintf(f, "\\\" ");
else
fputc(*c, f);
c++;
}
}
int
main(void )
{
char line[1024 ], *c, *bra, manuf[8 ];
int manufs = 0 ;
int mode = 0 ;
int lino = 0 ;
int manuf_len = 0 ;
FILE *devf;
devf = fopen("devlist.h" , "w" );
if (!devf) {
fprintf(stderr, "Cannot create output file!\n" );
return 1 ;
}
while (fgets(line, sizeof (line)-1 , stdin)) {
lino++;
if ((c = strchr(line, '\n' )))
*c = 0 ;
if (!line[0 ] || line[0 ] == '#' )
continue ;
if (line[0 ] == '\t' ) {
switch (mode) {
case 1 :
if (strlen(line) > 5 && line[5 ] == ' ' ) {
c = line + 5 ;
while (*c == ' ' )
*c++ = 0 ;
if (manuf_len + strlen(c) + 1 > MAX_NAME_SIZE) {
/* Too long, try cutting off long description */
bra = strchr(c, '[' );
if (bra && bra > c && bra[-1 ] == ' ' )
bra[-1 ] = 0 ;
if (manuf_len + strlen(c) + 1 > MAX_NAME_SIZE) {
fprintf(stderr, "Line %d: Product name too long\n" , lino);
return 1 ;
}
}
fprintf(devf, "\tPRODUCT(%s,%s,\" ", manuf, line+1);
pq(devf, c);
fputs("\" )\n", devf);
} else goto err;
break ;
default :
goto err;
}
} else if (strlen(line) > 4 && line[4 ] == ' ' ) {
c = line + 4 ;
while (*c == ' ' )
*c++ = 0 ;
if (manufs)
fputs("ENDMANUF()\n\n" , devf);
manufs++;
strcpy(manuf, line);
manuf_len = strlen(c);
if (manuf_len + 24 > MAX_NAME_SIZE) {
fprintf(stderr, "Line %d: manufacturer name too long\n" , lino);
return 1 ;
}
fprintf(devf, "MANUF(%s,\" ", manuf);
pq(devf, c);
fputs("\" )\n", devf);
mode = 1 ;
} else {
err:
fprintf(stderr, "Line %d: Syntax error in mode %d: %s\n" , lino, mode, line);
return 1 ;
}
}
fputs("ENDMANUF()\n\
\n\
#undef MANUF\n\
#undef PRODUCT\n\
#undef ENDMANUF\n", devf);
fclose(devf);
return 0 ;
}
Messung V0.5 in Prozent C=96 H=93 G=94
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland