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:
parent
71e6bc5dd5
commit
f4d7646c1e
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue