Changed Lookup() to LookupFull() in all the LEF and DEF read routines.

Lookup() is used for command-line parsing in magic and accepts any
unique string that matches a partial keyword.  LEF and DEF do not
allow partial keywords, so only LookupFull() is appropriate to use
for LEF and DEF file parsing.  This fixes issue #263 from Christian
Haufe.
This commit is contained in:
Tim Edwards 2023-08-25 09:48:24 -04:00
parent 71e6bc5dd5
commit f4d7646c1e
3 changed files with 30 additions and 30 deletions

View File

@ -1 +1 @@
8.3.424
8.3.425

View File

@ -213,7 +213,7 @@ DefAddRoutes(rootDef, f, oscale, special, netname, ruleset, defLayerMap, annotat
/* Check for SHAPE, STYLE, or USE keywords */
token = LefNextToken(f, TRUE);
keyword = Lookup(token, specnet_keys);
keyword = LookupFull(token, specnet_keys);
if (keyword < 0)
{
LefError(DEF_INFO, "Unknown keyword \"%s\" in SPECIALNET "
@ -236,7 +236,7 @@ DefAddRoutes(rootDef, f, oscale, special, netname, ruleset, defLayerMap, annotat
case DEF_SPECNET_SHAPE:
token = LefNextToken(f, TRUE);
keyword = Lookup(token, specnet_shape_keys);
keyword = LookupFull(token, specnet_shape_keys);
if (keyword < 0)
{
LefError(DEF_INFO, "Unknown SHAPE \"%s\" in SPECIALNET "
@ -788,7 +788,7 @@ DefReadNonDefaultRules(f, rootDef, sname, oscale, total)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, nondef_keys);
keyword = LookupFull(token, nondef_keys);
if (keyword < 0)
{
LefError(DEF_INFO, "Unknown keyword \"%s\" in NONDEFAULTRULES "
@ -829,7 +829,7 @@ DefReadNonDefaultRules(f, rootDef, sname, oscale, total)
token = LefNextToken(f, TRUE);
}
subkey = Lookup(token, nondef_property_keys);
subkey = LookupFull(token, nondef_property_keys);
if (subkey < 0)
{
LefError(DEF_INFO, "Unknown non-default rule property \"%s\" "
@ -1054,7 +1054,7 @@ DefReadNets(f, rootDef, sname, oscale, special, dolabels, annotate, total)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, net_keys);
keyword = LookupFull(token, net_keys);
if (keyword < 0)
{
LefError(DEF_INFO, "Unknown keyword \"%s\" in NET "
@ -1148,7 +1148,7 @@ DefReadNets(f, rootDef, sname, oscale, special, dolabels, annotate, total)
else
token = LefNextToken(f, TRUE);
subkey = Lookup(token, net_property_keys);
subkey = LookupFull(token, net_property_keys);
if (subkey < 0)
{
LefError(DEF_INFO, "Unknown net property \"%s\" in "
@ -1294,7 +1294,7 @@ DefReadLocation(use, f, oscale, tptr, noplace)
if (*token != ')') goto parse_error;
token = LefNextToken(f, TRUE);
keyword = Lookup(token, orientations);
keyword = LookupFull(token, orientations);
if (keyword < 0)
{
LefError(DEF_ERROR, "Unknown macro orientation \"%s\".\n", token);
@ -1484,7 +1484,7 @@ DefReadPins(f, rootDef, sname, oscale, total, annotate)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, pin_keys);
keyword = LookupFull(token, pin_keys);
if (keyword < 0)
{
@ -1531,7 +1531,7 @@ DefReadPins(f, rootDef, sname, oscale, total, annotate)
if (*token != '+') continue;
token = LefNextToken(f, TRUE);
subkey = Lookup(token, pin_property_keys);
subkey = LookupFull(token, pin_property_keys);
if (subkey < 0)
{
LefError(DEF_INFO, "Unknown pin property \"%s\" in "
@ -1554,7 +1554,7 @@ DefReadPins(f, rootDef, sname, oscale, total, annotate)
break;
case DEF_PINS_PROP_USE:
token = LefNextToken(f, TRUE);
subkey = Lookup(token, pin_uses);
subkey = LookupFull(token, pin_uses);
if (subkey < 0)
LefError(DEF_ERROR, "Unknown pin use \"%s\"\n", token);
else
@ -1566,7 +1566,7 @@ DefReadPins(f, rootDef, sname, oscale, total, annotate)
break;
case DEF_PINS_PROP_DIR:
token = LefNextToken(f, TRUE);
subkey = Lookup(token, pin_classes);
subkey = LookupFull(token, pin_classes);
if (subkey < 0)
LefError(DEF_ERROR, "Unknown pin class \"%s\"\n", token);
else
@ -1753,7 +1753,7 @@ DefReadBlockages(f, rootDef, sname, oscale, total)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, block_keys);
keyword = LookupFull(token, block_keys);
if (keyword < 0)
{
@ -1776,7 +1776,7 @@ DefReadBlockages(f, rootDef, sname, oscale, total)
if (*token == ';')
break;
subkey = Lookup(token, block_property_keys);
subkey = LookupFull(token, block_property_keys);
if (subkey < 0)
{
LefError(DEF_INFO, "Unknown blockage property \"%s\" in "
@ -1883,7 +1883,7 @@ DefReadVias(f, sname, oscale, total)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, via_keys);
keyword = LookupFull(token, via_keys);
if (keyword < 0)
{
@ -1951,7 +1951,7 @@ DefReadVias(f, sname, oscale, total)
if (*token != '+') continue;
token = LefNextToken(f, TRUE);
subkey = Lookup(token, via_property_keys);
subkey = LookupFull(token, via_property_keys);
if (subkey < 0)
{
LefError(DEF_INFO, "Unknown via property \"%s\" in "
@ -2163,7 +2163,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, component_keys);
keyword = LookupFull(token, component_keys);
if (keyword < 0)
{
@ -2252,7 +2252,7 @@ DefReadComponents(f, rootDef, sname, oscale, total)
if (*token != '+') continue;
token = LefNextToken(f, TRUE);
subkey = Lookup(token, property_keys);
subkey = LookupFull(token, property_keys);
if (subkey < 0)
{
LefError(DEF_INFO, "Unknown component property \"%s\" in "
@ -2431,7 +2431,7 @@ DefRead(inName, dolabels, annotate, noblockage)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, sections);
keyword = LookupFull(token, sections);
if (keyword < 0)
{
LefError(DEF_INFO, "Unknown keyword \"%s\" in DEF file; ignoring.\n", token);

View File

@ -532,7 +532,7 @@ LefSkipSection(f, section)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
if ((keyword = Lookup(token, end_section)) == 0)
if ((keyword = LookupFull(token, end_section)) == 0)
{
result = -1;
while (result == -1)
@ -1213,7 +1213,7 @@ LefReadGeometry(lefMacro, f, oscale, do_list, is_imported)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, geometry_keys);
keyword = LookupFull(token, geometry_keys);
if (keyword < 0)
{
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
@ -1645,7 +1645,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, pin_keys);
keyword = LookupFull(token, pin_keys);
if (keyword < 0)
{
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
@ -1657,7 +1657,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
{
case LEF_DIRECTION:
token = LefNextToken(f, TRUE);
subkey = Lookup(token, pin_classes);
subkey = LookupFull(token, pin_classes);
if (subkey < 0)
LefError(LEF_ERROR, "Improper DIRECTION statement\n");
else
@ -1666,7 +1666,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
break;
case LEF_USE:
token = LefNextToken(f, TRUE);
subkey = Lookup(token, pin_uses);
subkey = LookupFull(token, pin_uses);
if (subkey < 0)
LefError(LEF_ERROR, "Improper USE statement\n");
else
@ -1675,7 +1675,7 @@ LefReadPin(lefMacro, f, pinname, pinNum, oscale, is_imported)
break;
case LEF_SHAPE:
token = LefNextToken(f, TRUE);
subkey = Lookup(token, pin_shapes);
subkey = LookupFull(token, pin_shapes);
if (subkey < 0)
LefError(LEF_ERROR, "Improper SHAPE statement\n");
else
@ -1896,7 +1896,7 @@ LefReadNonDefaultRule(f, rname, oscale)
inlayer = FALSE;
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, nondef_property_keys);
keyword = LookupFull(token, nondef_property_keys);
if (keyword < 0)
{
LefError(LEF_INFO, "Unknown keyword \"%s\" in NONDEFAULTRULES "
@ -2149,7 +2149,7 @@ LefReadMacro(f, mname, oscale, importForeign, doAnnotate, lefTimestamp)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, macro_keys);
keyword = LookupFull(token, macro_keys);
if (keyword < 0)
{
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
@ -2693,7 +2693,7 @@ LefReadLayerSection(f, lname, mode, lefl)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, layer_keys);
keyword = LookupFull(token, layer_keys);
if (keyword < 0)
{
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",
@ -2707,7 +2707,7 @@ LefReadLayerSection(f, lname, mode, lefl)
token = LefNextToken(f, TRUE);
if (*token != '\n')
{
typekey = Lookup(token, layer_type_keys);
typekey = LookupFull(token, layer_type_keys);
if (typekey < 0)
LefError(LEF_WARNING, "Unknown layer type \"%s\" in LEF file; "
"ignoring.\n", token);
@ -2934,7 +2934,7 @@ LefRead(inName, importForeign, doAnnotate, lefTimestamp)
while ((token = LefNextToken(f, TRUE)) != NULL)
{
keyword = Lookup(token, sections);
keyword = LookupFull(token, sections);
if (keyword < 0)
{
LefError(LEF_INFO, "Unknown keyword \"%s\" in LEF file; ignoring.\n",