[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