[ofa-general] Re: [PATCH] osm: handle first syntax error in policy file
Yevgeny Kliteynik
kliteyn at dev.mellanox.co.il
Thu Nov 15 07:30:11 PST 2007
Sasha Khapyorsky wrote:
> On 16:46 Thu 15 Nov , Yevgeny Kliteynik wrote:
>> Yevgeny Kliteynik wrote:
>>> Sasha Khapyorsky wrote:
>>>> Hi Yevgeny,
>>>>
>>>> On 14:03 Thu 15 Nov , Yevgeny Kliteynik wrote:
>>>>> When parsing QoS policy file for the first time, print
>>>>> first syntax error to stdout and to the osm log.
>>>>>
>>>>> Signed-off-by: Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
>>>>> ---
>>>>> opensm/opensm/osm_qos_parser.y | 11 ++++++++++-
>>>>> 1 files changed, 10 insertions(+), 1 deletions(-)
>>>>>
>>>>> diff --git a/opensm/opensm/osm_qos_parser.y
>>>>> b/opensm/opensm/osm_qos_parser.y
>>>>> index 4738831..71f41fe 100644
>>>>> --- a/opensm/opensm/osm_qos_parser.y
>>>>> +++ b/opensm/opensm/osm_qos_parser.y
>>>>> @@ -1873,12 +1873,21 @@ int __qos_parser_wrap()
>>>>>
>>>>> void __qos_parser_error (char *s)
>>>>> {
>>>>> + static boolean_t first_time = TRUE;
>>>> Could we avoid using static variables?
>>> Would you prefer global flags instead?
>>> Is there any other way? Nothing comes to mind right now...
>> I can also remove the flag and have the error message printed
>> to stderr with every sweep, until the syntax error is fixed.
>> Sounds better?
>
> Perhaps. If there are no "false alarm" or "just warnings" it may be
> useful to have it permanently on.
No false alarms - syntax error means that policy file won't be used at all.
I'll repost the patch.
-- Yevgeny
> Sasha
>
>> -- Yevgeny
>>
>>>> (But seems __qos_parser_error() function itself should be declared as
>>>> static).
>>> Sorry, can't do - it's defined by yacc, and
>>> it's even declared as extern in this file.
>>> -- Yevgeny
>>>> Sasha
>>>>
>>>>
>>>>> + char * last_text_read = __parser_strip_white(__qos_parser_text);
>>>>> OSM_LOG_ENTER(p_qos_parser_osm_log, __qos_parser_error);
>>>>> osm_log(p_qos_parser_osm_log, OSM_LOG_ERROR,
>>>>> "__qos_parser_error: ERR AC05: "
>>>>> "Syntax error (line %d:%d): %s. "
>>>>> "Last text read: \"%s\"\n",
>>>>> - line_num, column_num, s,
>>>>> __parser_strip_white(__qos_parser_text));
>>>>> + line_num, column_num, s, last_text_read);
>>>>> + if (first_time)
>>>>> + {
>>>>> + first_time = FALSE;
>>>>> + printf("Error parsing QoS Policy File (line %d:%d): \"%s\". "
>>>>> + "Last text read: \"%s\".\n",
>>>>> + line_num, column_num, s, last_text_read);
>>>>> + }
>>>>> OSM_LOG_EXIT(p_qos_parser_osm_log);
>>>>> }
>>>>>
>>>>> --
>>>>> 1.5.1.4
>>>>>
>>>>>
>>> _______________________________________________
>>> general mailing list
>>> general at lists.openfabrics.org
>>> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
>>> To unsubscribe, please visit
>>> http://openib.org/mailman/listinfo/openib-general
>
More information about the general
mailing list