[ofa-general] Re: [PATCH] osm: handle first syntax error in policy file
Sasha Khapyorsky
sashak at voltaire.com
Thu Nov 15 07:19:33 PST 2007
On 15:56 Thu 15 Nov , 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?
Not really.
> Is there any other way? Nothing comes to mind right now...
Could you pass parameters to parser, then this flag could be kept as
part of the structure.
>
> > (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.
Isn't it hand made part?
This works for me:
diff --git a/opensm/opensm/osm_qos_parser.y b/opensm/opensm/osm_qos_parser.y
index 4738831..d9e1567 100644
--- a/opensm/opensm/osm_qos_parser.y
+++ b/opensm/opensm/osm_qos_parser.y
@@ -124,9 +124,9 @@ static void __parser_add_partition_list_to_port_map(
static void __parser_add_map_to_port_map(
cl_qmap_t * p_dmap,
cl_map_t * p_smap);
+static void __qos_parser_error (char *s);
extern char * __qos_parser_text;
-extern void __qos_parser_error (char *s);
extern int __qos_parser_lex (void);
extern FILE * __qos_parser_in;
extern int errno;
@@ -1871,7 +1871,7 @@ int __qos_parser_wrap()
/***************************************************
***************************************************/
-void __qos_parser_error (char *s)
+static void __qos_parser_error (char *s)
{
OSM_LOG_ENTER(p_qos_parser_osm_log, __qos_parser_error);
osm_log(p_qos_parser_osm_log, OSM_LOG_ERROR,
Sasha
More information about the general
mailing list