[ofa-general] Re: [PATCH] osm: handle first syntax error in policy file
Sasha Khapyorsky
sashak at voltaire.com
Thu Nov 15 07:23:17 PST 2007
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.
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