/[monit]/monit/l.l
ViewVC logotype

Diff of /monit/l.l

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.80 by hauk, Sun Dec 12 23:45:08 2004 UTC revision 1.81 by hauk, Mon Dec 20 05:39:34 2004 UTC
# Line 77  Line 77 
77    static char *handle_quoted_string(char *);    static char *handle_quoted_string(char *);
78    static void push_buffer_state(YY_BUFFER_STATE, char*);    static void push_buffer_state(YY_BUFFER_STATE, char*);
79    static int  pop_buffer_state(void);    static int  pop_buffer_state(void);
80      static URL_T create_URL(char *proto);
81        
82  %}  %}
83    
84  ws          [ \r\t]+  ws          [ \r\t]+
85  wws         [ \r\t=;,()]+  wws         [ \r\t;,()]+
86  number      [0-9]+  number      [0-9]+
87  real        [0-9]+([.][0-9]+)?  real        [0-9]+([.][0-9]+)?
88  str         [^\000-\041@:{}"';(),%]+  str         [^\000-\041@:{}"';(),%]+
89  hostname    {str}(\.{str})*  hostname    {str}(\.{str})*
90  greater     ("greater"|"gt"|">")  greater     ("greater"|"gt"|">")
91  less        ("less"|"lt"|"<")  less        ("less"|"lt"|"<")
92  equal       ("equal"|"eq"|"==")  equal       ("equal"|"eq"|"=="|"=")
93  notequal    ("notequal"|"ne"|"!=")  notequal    ("notequal"|"ne"|"!=")
94  loadavg1    load(avg)[ ]*(\([ ]*1[ ]*(m|min)?[ ]*\))?  loadavg1    load(avg)[ ]*(\([ ]*1[ ]*(m|min)?[ ]*\))?
95  loadavg5    load(avg)[ ]*\([ ]*5[ ]*(m|min)?[ ]*\)  loadavg5    load(avg)[ ]*\([ ]*5[ ]*(m|min)?[ ]*\)
96  loadavg15   load(avg)[ ]*\([ ]*15[ ]*(m|min)?[ ]*\)  loadavg15   load(avg)[ ]*\([ ]*15[ ]*(m|min)?[ ]*\)
97  startarg    start{wws}?(program)?{wws}?["]  startarg    start{ws}?(program)?{ws}?([=]{ws})?["]
98  stoparg     stop{wws}?(program)?{wws}?["]  stoparg     stop{ws}?(program)?{ws}?([=]{ws})?["]
99  execarg     exec(ute)?{wws}?["]  execarg     exec(ute)?{ws}?["]
100  percent     ("percent"|"%")  percent     ("percent"|"%")
101  byte        ("byte"|"b")  byte        ("byte"|"b")
102  kilobyte    ("kilobyte"|"kb")  kilobyte    ("kilobyte"|"kb")
103  megabyte    ("megabyte"|"mb")  megabyte    ("megabyte"|"mb")
104  gigabyte    ("gigabyte"|"gb")  gigabyte    ("gigabyte"|"gb")
105    
106  %x ARGUMENT_COND DEPEND_COND SERVICE_COND INCLUDE  %x ARGUMENT_COND DEPEND_COND SERVICE_COND URL_COND INCLUDE
107    
108  %%  %%
109    
# Line 244  data              { return DATA; } Line 245  data              { return DATA; }
245  recovered         { return RECOVERED; }  recovered         { return RECOVERED; }
246  else              { return ELSE; }  else              { return ELSE; }
247  collector         { return COLLECTOR; }  collector         { return COLLECTOR; }
248  include           { BEGIN(INCLUDE); }  url               { return URL; }
249    content           { return CONTENT; }
250  {byte}            { return BYTE; }  {byte}            { return BYTE; }
251  {kilobyte}        { return KILOBYTE; }  {kilobyte}        { return KILOBYTE; }
252  {megabyte}        { return MEGABYTE; }  {megabyte}        { return MEGABYTE; }
253  {gigabyte}        { return GIGABYTE; }  {gigabyte}        { return GIGABYTE; }
   
254  {loadavg1}        { return LOADAVG1; }  {loadavg1}        { return LOADAVG1; }
255  {loadavg5}        { return LOADAVG5; }  {loadavg5}        { return LOADAVG5; }
256  {loadavg15}       { return LOADAVG15; }  {loadavg15}       { return LOADAVG15; }
   
257  {greater}         { return GREATER; }  {greater}         { return GREATER; }
258  {less}            { return LESS; }  {less}            { return LESS; }
259  {equal}           { return EQUAL; }  {equal}           { return EQUAL; }
260  {notequal}        { return NOTEQUAL; }  {notequal}        { return NOTEQUAL; }
261    
262    include           { BEGIN(INCLUDE); }
263    
264    
265  depend(s)?[ \t]+(on[ \t]*)?  {  depend(s)?[ \t]+(on[ \t]*)?  {
266                      BEGIN(DEPEND_COND);                      BEGIN(DEPEND_COND);
267                      return DEPENDS;                      return DEPENDS;
# Line 290  check[ \t]+host   { Line 292  check[ \t]+host   {
292                      return CHECKHOST;                      return CHECKHOST;
293                    }                    }
294    
295    [a-zA-Z0-9]+"://" {
296                        yylval.url=
297                          create_URL(xstrndup(yytext, strlen(yytext)-3));
298                        BEGIN(URL_COND);
299                      }
300    
301  {number}          {  {number}          {
302                      yylval.number= atoi(yytext);                      yylval.number= atoi(yytext);
303                      save_arg(); return NUMBER;                      save_arg(); return NUMBER;
# Line 456  check[ \t]+host   { Line 464  check[ \t]+host   {
464    
465  }  }
466    
467    <URL_COND>{
468    
469      {ws}            {
470    exit_url_scan:
471                          BEGIN(INITIAL);
472                          if(!yylval.url->path)
473                                  yylval.url->path= xstrdup("/");
474                          if(!yylval.url->hostname)
475                                  yyerror("missing hostname in URL");
476                          save_arg(); return URLOBJECT;
477                      }
478    
479      [\n]            {
480                          /* Do not count line number here, it mess up the
481                           * overall count */
482                          goto exit_url_scan;
483                      }
484    
485    
486      [^:@ ]+/[:][^@: ]+[@] {
487                          yylval.url->user= xstrdup(yytext);
488                      }
489    
490      [:][^@ ]+[@]    {
491                          yytext++;
492                          yylval.url->password= xstrndup(yytext, strlen(yytext)-1);
493                      }
494    
495      [^/?:#\r\n ]+   {
496                          yylval.url->hostname= xstrdup(yytext);
497                      }
498    
499      [:]{number}     {
500                          yylval.url->port= atoi(++yytext);
501                      }
502    
503      [/][^?#\r\n ]*  {
504                          yylval.url->path= xstrdup(yytext);
505                      }
506    
507      [?][^#\r\n ]*   {
508                          /* The separator char ? is included on purpose
509                           * so it's easy to recreate the full url request */
510                          yylval.url->query= xstrdup(yytext);
511                      }
512    
513      [#][^\r\n ]*    {
514                          /* EMPTY */
515                      }
516    
517    }
518    
519  <INITIAL,ARGUMENT_COND,SERVICE_COND,DEPEND_COND>. {  <INITIAL,ARGUMENT_COND,SERVICE_COND,DEPEND_COND>. {
520                        return yytext[0];                        return yytext[0];
521                    }                      }  
# Line 572  static void include_file(char *pattern) Line 632  static void include_file(char *pattern)
632    globfree(&globbuf);    globfree(&globbuf);
633  }  }
634    
635    
636  static void push_buffer_state(YY_BUFFER_STATE buffer, char *filename) {  static void push_buffer_state(YY_BUFFER_STATE buffer, char *filename) {
637    
638    if ( buffer_stack_ptr >= MAX_STACK_DEPTH )    if ( buffer_stack_ptr >= MAX_STACK_DEPTH )
639    {    {
640    
641      yyerror( "include files are nested too deeply" );      yyerror("include files are nested too deeply" );
642      exit( 1 );      exit( 1 );
643            
644    }    }
# Line 597  static void push_buffer_state(YY_BUFFER_ Line 658  static void push_buffer_state(YY_BUFFER_
658        
659  }  }
660    
661    
662  static int pop_buffer_state(void) {  static int pop_buffer_state(void) {
663    
664    if ( --buffer_stack_ptr < 0 ) {    if ( --buffer_stack_ptr < 0 ) {
# Line 619  static int pop_buffer_state(void) { Line 681  static int pop_buffer_state(void) {
681    
682  }  }
683    
684    
685  static void save_arg(void) {  static void save_arg(void) {
686        
687    arglineno=lineno;    arglineno=lineno;
# Line 627  static void save_arg(void) { Line 690  static void save_arg(void) {
690    argyytext=xstrdup(yytext);    argyytext=xstrdup(yytext);
691        
692  }  }
693    
694    
695    static URL_T create_URL(char *proto) {
696      ASSERT(proto);
697      URL_T url;
698      NEW(url);
699      url->protocol= proto;
700      if(IS(url->protocol, "https")) {
701        url->port= 443;
702        if(!have_ssl())
703          yyerror("HTTPS protocol not supported -- SSL support disabled" );
704      } else if(IS(url->protocol, "http")) {
705        url->port= 80;
706      }
707      return url;
708    }

Legend:
Removed from v.1.80  
changed lines
  Added in v.1.81

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26