"Fossies" - the Fresh Open Source Software Archive

Member "nmh-1.7.1/sbr/dtimep.c" (6 Mar 2018, 78857 Bytes) of package /linux/misc/nmh-1.7.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "dtimep.c" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes reports: 1.7.1-RC3_vs_1.7.1 or 1.7_vs_1.7.1.

    1 
    2 #line 3 "sbr/dtimep.c"
    3 
    4 #define  YY_INT_ALIGNED short int
    5 
    6 /* A lexical scanner generated by flex */
    7 
    8 #define FLEX_SCANNER
    9 #define YY_FLEX_MAJOR_VERSION 2
   10 #define YY_FLEX_MINOR_VERSION 5
   11 #define YY_FLEX_SUBMINOR_VERSION 35
   12 #if YY_FLEX_SUBMINOR_VERSION > 0
   13 #define FLEX_BETA
   14 #endif
   15 
   16 /* First, we deal with  platform-specific or compiler-specific issues. */
   17 
   18 /* begin standard C headers. */
   19 #include <stdio.h>
   20 #include <string.h>
   21 #include <errno.h>
   22 #include <stdlib.h>
   23 
   24 /* end standard C headers. */
   25 
   26 /* flex integer type definitions */
   27 
   28 #ifndef FLEXINT_H
   29 #define FLEXINT_H
   30 
   31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
   32 
   33 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
   34 
   35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
   36  * if you want the limit (max/min) macros for int types. 
   37  */
   38 #ifndef __STDC_LIMIT_MACROS
   39 #define __STDC_LIMIT_MACROS 1
   40 #endif
   41 
   42 #include <inttypes.h>
   43 typedef int8_t flex_int8_t;
   44 typedef uint8_t flex_uint8_t;
   45 typedef int16_t flex_int16_t;
   46 typedef uint16_t flex_uint16_t;
   47 typedef int32_t flex_int32_t;
   48 typedef uint32_t flex_uint32_t;
   49 typedef uint64_t flex_uint64_t;
   50 #else
   51 typedef signed char flex_int8_t;
   52 typedef short int flex_int16_t;
   53 typedef int flex_int32_t;
   54 typedef unsigned char flex_uint8_t; 
   55 typedef unsigned short int flex_uint16_t;
   56 typedef unsigned int flex_uint32_t;
   57 #endif /* ! C99 */
   58 
   59 /* Limits of integral types. */
   60 #ifndef INT8_MIN
   61 #define INT8_MIN               (-128)
   62 #endif
   63 #ifndef INT16_MIN
   64 #define INT16_MIN              (-32767-1)
   65 #endif
   66 #ifndef INT32_MIN
   67 #define INT32_MIN              (-2147483647-1)
   68 #endif
   69 #ifndef INT8_MAX
   70 #define INT8_MAX               (127)
   71 #endif
   72 #ifndef INT16_MAX
   73 #define INT16_MAX              (32767)
   74 #endif
   75 #ifndef INT32_MAX
   76 #define INT32_MAX              (2147483647)
   77 #endif
   78 #ifndef UINT8_MAX
   79 #define UINT8_MAX              (255U)
   80 #endif
   81 #ifndef UINT16_MAX
   82 #define UINT16_MAX             (65535U)
   83 #endif
   84 #ifndef UINT32_MAX
   85 #define UINT32_MAX             (4294967295U)
   86 #endif
   87 
   88 #endif /* ! FLEXINT_H */
   89 
   90 #ifdef __cplusplus
   91 
   92 /* The "const" storage-class-modifier is valid. */
   93 #define YY_USE_CONST
   94 
   95 #else   /* ! __cplusplus */
   96 
   97 /* C99 requires __STDC__ to be defined as 1. */
   98 #if defined (__STDC__)
   99 
  100 #define YY_USE_CONST
  101 
  102 #endif  /* defined (__STDC__) */
  103 #endif  /* ! __cplusplus */
  104 
  105 #ifdef YY_USE_CONST
  106 #define yyconst const
  107 #else
  108 #define yyconst
  109 #endif
  110 
  111 /* Returned upon end-of-file. */
  112 #define YY_NULL 0
  113 
  114 /* Promotes a possibly negative, possibly signed char to an unsigned
  115  * integer for use as an array index.  If the signed char is negative,
  116  * we want to instead treat it as an 8-bit unsigned char, hence the
  117  * double cast.
  118  */
  119 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
  120 
  121 /* Enter a start condition.  This macro really ought to take a parameter,
  122  * but we do it the disgusting crufty way forced on us by the ()-less
  123  * definition of BEGIN.
  124  */
  125 #define BEGIN (yy_start) = 1 + 2 *
  126 
  127 /* Translate the current start state into a value that can be later handed
  128  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  129  * compatibility.
  130  */
  131 #define YY_START (((yy_start) - 1) / 2)
  132 #define YYSTATE YY_START
  133 
  134 /* Action number for EOF rule of a given start state. */
  135 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  136 
  137 /* Special action meaning "start processing a new file". */
  138 #define YY_NEW_FILE yyrestart(yyin  )
  139 
  140 #define YY_END_OF_BUFFER_CHAR 0
  141 
  142 /* Size of default input buffer. */
  143 #ifndef YY_BUF_SIZE
  144 #define YY_BUF_SIZE 16384
  145 #endif
  146 
  147 /* The state buf must be large enough to hold one state per character in the main buffer.
  148  */
  149 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
  150 
  151 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
  152 #define YY_TYPEDEF_YY_BUFFER_STATE
  153 typedef struct yy_buffer_state *YY_BUFFER_STATE;
  154 #endif
  155 
  156 #ifndef YY_TYPEDEF_YY_SIZE_T
  157 #define YY_TYPEDEF_YY_SIZE_T
  158 typedef size_t yy_size_t;
  159 #endif
  160 
  161 extern yy_size_t yyleng;
  162 
  163 extern FILE *yyin, *yyout;
  164 
  165 #define EOB_ACT_CONTINUE_SCAN 0
  166 #define EOB_ACT_END_OF_FILE 1
  167 #define EOB_ACT_LAST_MATCH 2
  168 
  169     #define YY_LESS_LINENO(n)
  170     
  171 /* Return all but the first "n" matched characters back to the input stream. */
  172 #define yyless(n) \
  173     do \
  174         { \
  175         /* Undo effects of setting up yytext. */ \
  176         int yyless_macro_arg = (n); \
  177         YY_LESS_LINENO(yyless_macro_arg);\
  178         *yy_cp = (yy_hold_char); \
  179         YY_RESTORE_YY_MORE_OFFSET \
  180         (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
  181         YY_DO_BEFORE_ACTION; /* set up yytext again */ \
  182         } \
  183     while ( 0 )
  184 
  185 #define unput(c) yyunput( c, (yytext_ptr)  )
  186 
  187 #ifndef YY_STRUCT_YY_BUFFER_STATE
  188 #define YY_STRUCT_YY_BUFFER_STATE
  189 struct yy_buffer_state
  190     {
  191     FILE *yy_input_file;
  192 
  193     char *yy_ch_buf;        /* input buffer */
  194     char *yy_buf_pos;       /* current position in input buffer */
  195 
  196     /* Size of input buffer in bytes, not including room for EOB
  197      * characters.
  198      */
  199     yy_size_t yy_buf_size;
  200 
  201     /* Number of characters read into yy_ch_buf, not including EOB
  202      * characters.
  203      */
  204     yy_size_t yy_n_chars;
  205 
  206     /* Whether we "own" the buffer - i.e., we know we created it,
  207      * and can realloc() it to grow it, and should free() it to
  208      * delete it.
  209      */
  210     int yy_is_our_buffer;
  211 
  212     /* Whether this is an "interactive" input source; if so, and
  213      * if we're using stdio for input, then we want to use getc()
  214      * instead of fread(), to make sure we stop fetching input after
  215      * each newline.
  216      */
  217     int yy_is_interactive;
  218 
  219     /* Whether we're considered to be at the beginning of a line.
  220      * If so, '^' rules will be active on the next match, otherwise
  221      * not.
  222      */
  223     int yy_at_bol;
  224 
  225     int yy_bs_lineno; /**< The line count. */
  226     int yy_bs_column; /**< The column count. */
  227     
  228     /* Whether to try to fill the input buffer when we reach the
  229      * end of it.
  230      */
  231     int yy_fill_buffer;
  232 
  233     int yy_buffer_status;
  234 
  235 #define YY_BUFFER_NEW 0
  236 #define YY_BUFFER_NORMAL 1
  237     /* When an EOF's been seen but there's still some text to process
  238      * then we mark the buffer as YY_EOF_PENDING, to indicate that we
  239      * shouldn't try reading from the input source any more.  We might
  240      * still have a bunch of tokens to match, though, because of
  241      * possible backing-up.
  242      *
  243      * When we actually see the EOF, we change the status to "new"
  244      * (via yyrestart()), so that the user can continue scanning by
  245      * just pointing yyin at a new input file.
  246      */
  247 #define YY_BUFFER_EOF_PENDING 2
  248 
  249     };
  250 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
  251 
  252 /* Stack of input buffers. */
  253 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
  254 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
  255 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
  256 
  257 /* We provide macros for accessing buffer states in case in the
  258  * future we want to put the buffer states in a more general
  259  * "scanner state".
  260  *
  261  * Returns the top of the stack, or NULL.
  262  */
  263 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
  264                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
  265                           : NULL)
  266 
  267 /* Same as previous macro, but useful when we know that the buffer stack is not
  268  * NULL or when we need an lvalue. For internal use only.
  269  */
  270 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
  271 
  272 /* yy_hold_char holds the character lost when yytext is formed. */
  273 static char yy_hold_char;
  274 static yy_size_t yy_n_chars;        /* number of characters read into yy_ch_buf */
  275 yy_size_t yyleng;
  276 
  277 /* Points to current character in buffer. */
  278 static char *yy_c_buf_p = (char *) 0;
  279 static int yy_init = 0;     /* whether we need to initialize */
  280 static int yy_start = 0;    /* start state number */
  281 
  282 /* Flag which is used to allow yywrap()'s to do buffer switches
  283  * instead of setting up a fresh yyin.  A bit of a hack ...
  284  */
  285 static int yy_did_buffer_switch_on_eof;
  286 
  287 void yyrestart (FILE *input_file  );
  288 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
  289 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
  290 void yy_delete_buffer (YY_BUFFER_STATE b  );
  291 void yy_flush_buffer (YY_BUFFER_STATE b  );
  292 void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
  293 void yypop_buffer_state (void );
  294 
  295 static void yyensure_buffer_stack (void );
  296 static void yy_load_buffer_state (void );
  297 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
  298 
  299 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
  300 
  301 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
  302 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
  303 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
  304 
  305 void *yyalloc (yy_size_t  );
  306 void *yyrealloc (void *,yy_size_t  );
  307 void yyfree (void *  );
  308 
  309 #define yy_new_buffer yy_create_buffer
  310 
  311 #define yy_set_interactive(is_interactive) \
  312     { \
  313     if ( ! YY_CURRENT_BUFFER ){ \
  314         yyensure_buffer_stack (); \
  315         YY_CURRENT_BUFFER_LVALUE =    \
  316             yy_create_buffer(yyin,YY_BUF_SIZE ); \
  317     } \
  318     YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
  319     }
  320 
  321 #define yy_set_bol(at_bol) \
  322     { \
  323     if ( ! YY_CURRENT_BUFFER ){\
  324         yyensure_buffer_stack (); \
  325         YY_CURRENT_BUFFER_LVALUE =    \
  326             yy_create_buffer(yyin,YY_BUF_SIZE ); \
  327     } \
  328     YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
  329     }
  330 
  331 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
  332 
  333 /* Begin user sect3 */
  334 
  335 typedef unsigned char YY_CHAR;
  336 
  337 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
  338 
  339 typedef int yy_state_type;
  340 
  341 extern int yylineno;
  342 
  343 int yylineno = 1;
  344 
  345 extern char *yytext;
  346 #define yytext_ptr yytext
  347 
  348 static yy_state_type yy_get_previous_state (void );
  349 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
  350 static int yy_get_next_buffer (void );
  351 static void yy_fatal_error (yyconst char msg[]  );
  352 
  353 /* Done after the current pattern has been matched and before the
  354  * corresponding action - sets up yytext.
  355  */
  356 #define YY_DO_BEFORE_ACTION \
  357     (yytext_ptr) = yy_bp; \
  358     yyleng = (yy_size_t) (yy_cp - yy_bp); \
  359     (yy_hold_char) = *yy_cp; \
  360     *yy_cp = '\0'; \
  361     (yy_c_buf_p) = yy_cp;
  362 
  363 #define YY_NUM_RULES 30
  364 #define YY_END_OF_BUFFER 31
  365 /* This struct is not used in this scanner,
  366    but its presence is necessary. */
  367 struct yy_trans_info
  368     {
  369     flex_int32_t yy_verify;
  370     flex_int32_t yy_nxt;
  371     };
  372 static yyconst flex_int16_t yy_accept[571] =
  373     {   0,
  374         0,    0,   31,   29,   29,   29,   29,   29,   29,   29,
  375        29,   29,   29,   29,   29,   29,   29,   29,   29,    0,
  376         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  377         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  378         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  379         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  380         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  381         0,    0,    0,    0,    0,   14,    0,    0,    0,    0,
  382         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  383         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  384 
  385         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  386         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  387         0,    0,   26,   25,   19,   18,   17,   16,   15,   28,
  388        27,   21,   20,   24,   23,   22,   12,   13,    0,    0,
  389         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  390         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  391         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  392         0,    0,    0,   12,   13,    0,    0,    0,    0,    0,
  393         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  394         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  395 
  396         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  397         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  398         0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
  399         9,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  400         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  401         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  402         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  403         0,    0,    0,    0,    0,    9,    0,    0,    0,    0,
  404         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  405         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  406 
  407         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  408         0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
  409         7,    7,    0,    0,    0,    0,    0,    0,    0,    0,
  410         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  411         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  412         0,   10,   11,    0,    0,    0,    0,    0,    0,    0,
  413         0,    0,    0,    0,    0,    0,    7,    0,    0,    0,
  414         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  415         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  416         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  417 
  418         0,    0,    0,    7,    0,    0,    0,    0,    0,    0,
  419         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  420         0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
  421         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  422         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  423         0,    0,    0,    0,    0,    0,    0,    0,    6,    6,
  424         6,    6,    6,    6,    6,    0,    0,    0,    0,    0,
  425         0,    0,    0,    0,    5,    0,    5,    0,    0,    0,
  426         0,    0,    0,    3,    0,    0,    0,    0,    0,    0,
  427         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  428 
  429         0,    0,    0,    0,    5,    5,    5,    0,    0,    8,
  430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  431         0,    0,    0,    0,    5,    0,    0,    6,    6,    0,
  432         6,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  433         0,    3,    0,    0,    6,    0,    0,    0,    0,    0,
  434         0,    6,    6,    0,    2,    4,    1,    1,    0,    6,
  435         0,    0,    0,    1,    0,    0,    1,    2,    4,    0
  436     } ;
  437 
  438 static yyconst flex_int32_t yy_ec[256] =
  439     {   0,
  440         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  441         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  442         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  443         1,    2,    1,    1,    1,    1,    1,    1,    1,    4,
  444         4,    1,    5,    6,    7,    1,    8,    9,   10,    9,
  445         9,    9,    9,    9,    9,    9,    9,   11,    1,    1,
  446         1,    1,    1,    1,   12,    1,   13,   14,   15,   16,
  447        17,   18,    1,   19,    1,    1,   20,   21,   22,   23,
  448         1,    1,   24,   25,   26,    1,   27,    1,    1,    1,
  449        28,    1,   29,    1,    1,    1,   30,   31,   32,   33,
  450 
  451        34,   16,   35,   36,   37,   19,    1,   38,   39,   40,
  452        41,   42,    1,   43,   44,   45,   46,   47,   27,    1,
  453        48,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  454         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  455         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  456         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  457         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  458         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  459         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  460         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  461 
  462         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  463         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  464         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  465         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  466         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  467         1,    1,    1,    1,    1
  468     } ;
  469 
  470 static yyconst flex_int32_t yy_meta[49] =
  471     {   0,
  472         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  473         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  474         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  475         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  476         1,    1,    1,    1,    1,    1,    1,    1
  477     } ;
  478 
  479 static yyconst flex_int16_t yy_base[571] =
  480     {   0,
  481         0,    0,  907,  908,   37,   52,   55,   78,   24,  872,
  482        25,   44,   48,  864,  872,   61,   46,  869,   81,   70,
  483        82,   84,  882,   85,   86,  877,   87,  875,   69,   70,
  484        72,  860,   79,   82,  854,   84,  852,  109,  111,  127,
  485       115,  125,  853,  860,  862,  862,  855,  851,   13,   87,
  486       850,  842,  843,  842,  844,  845,  838,  849,  849,  851,
  487       838,  854,  853,  852,  851,  850,  849,  848,  847,  846,
  488       845,  844,  843,  842,  841,  908,  820,  819,  818,  817,
  489       816,  815,  814,  813,  812,  811,  810,  809,  808,  807,
  490       127,  135,   92,  817,  816,   51,  819,  807,  815,  812,
  491 
  492       145,  138,  140,  129,  148,  156,  154,  157,  159,  162,
  493       843,  163,  168,  170,  171,  174,  176,  177,  178,  186,
  494       815,  814,  908,  908,  908,  908,  908,  908,  908,  908,
  495       908,  908,  908,  908,  908,  908,  188,  194,  799,  806,
  496       808,  808,  798,  147,  147,  790,  791,  793,  197,  205,
  497       206,  796,  789,  793,  785,  225,  828,  799,  798,  825,
  498       824,  789,  794,  784,  791,  778,  786,  789,  774,  784,
  499       782,  787,  786,  908,  908,  199,  172,  197,  208,  179,
  500       212,  219,  222,  811,  227,  221,  226,  223,  233,  266,
  501       810,  766,  779,  779,  268,  206,  774,  773,  210,  776,
  502 
  503       764,  772,  769,  754,  758,  798,  751,  767,  763,  763,
  504       756,  746,  760,  762,  747,  770,  769,  271,  750,  743,
  505       747,  739,  754,  781,  780,  745,  741,  748,  744,  277,
  506       280,  282,  775,  257,  774,  741,  731,  291,  771,  729,
  507       736,  738,  738,  728,  245,  251,  720,  721,  723,  294,
  508       716,  295,  729,  719,  731,  729,  296,  729,  710,  724,
  509       717,  716,  299,  307,  752,  708,  721,  721,  707,  747,
  510       717,  713,  707,  316,  310,  327,  313,  318,  702,  696,
  511       292,  709,  708,  258,  711,  699,  707,  704,  304,  228,
  512       312,  331,  293,  338,  341,  340,  735,  342,  343,  345,
  513 
  514       693,  733,  686,  699,  684,  346,  701,  701,  700,  347,
  515       349,  726,  693,  683,  677,  690,  680,  691,  344,  719,
  516       358,  360,  718,  717,  675,  682,  684,  684,  674,  323,
  517       330,  666,  667,  669,  378,  672,  665,  669,  661,  676,
  518       703,  702,  667,  663,  670,  666,  697,  375,  655,  377,
  519       649,  908,  908,  383,  385,  387,  653,  647,  651,  691,
  520       658,  680,  389,  398,  688,  392,  401,  369,  363,  348,
  521       389,  402,  403,  406,  413,  687,  410,  411,  414,  418,
  522       686,  642,  655,  655,  641,  681,  651,  647,  641,  677,
  523       415,  420,  676,  675,  674,  673,  631,  424,  630,  631,
  524 
  525       389,  221,  637,  444,  445,  632,  625,  629,  621,  636,
  526       663,  662,  627,  623,  630,  626,  447,  657,  456,  656,
  527       623,  613,  607,  620,  610,  621,  640,  429,  648,  638,
  528       611,  607,  601,  605,  598,  609,  609,  451,  454,  639,
  529       595,  608,  608,  594,  634,  604,  600,  594,  456,  459,
  530       469,  589,  583,  587,  627,  594,  463,  465,  594,  593,
  531       579,  591,  580,  578,  581,  474,  478,  618,  585,  575,
  532       569,  582,  572,  583,  480,  483,  492,  486,  490,  611,
  533       610,  609,  567,  598,  495,  578,  577,  563,  575,  560,
  534       570,  568,  504,  498,  507,  558,  552,  556,  596,  563,
  535 
  536       509,  594,  511,  513,  522,  524,  533,  593,  527,  908,
  537       546,  545,  559,  543,  557,  559,  544,  535,  585,  584,
  538       583,  525,  482,  538,  475,  527,  531,  908,  908,  485,
  539       908,  482,  462,  464,  474,  541,  451,  430,  543,  552,
  540       546,  908,  388,  378,  908,  220,  548,  550,  554,  556,
  541       558,  908,  908,  190,  111,   64,  560,  562,   54,  908,
  542       564,  566,  568,  570,  572,  574,  908,  908,  908,  908
  543     } ;
  544 
  545 static yyconst flex_int16_t yy_def[571] =
  546     {   0,
  547       570,    1,  570,  570,  570,  570,  570,  570,  570,  570,
  548       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  549       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  550       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  551       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  552       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  553       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  554       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  555       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  556       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  557 
  558       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  559       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  560       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  561       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  562       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  563       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  564       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  565       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  566       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  567       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  568 
  569       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  570       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  571       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  572       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  573       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  574       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  575       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  576       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  577       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  578       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  579 
  580       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  581       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  582       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  583       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  584       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  585       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  586       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  587       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  588       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  589       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  590 
  591       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  592       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  593       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  594       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  595       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  596       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  597       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  598       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  599       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  600       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  601 
  602       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  603       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  604       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  605       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  606       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  607       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  608       570,  570,  570,  570,  570,  570,  570,  570,  570,    0
  609     } ;
  610 
  611 static yyconst flex_int16_t yy_nxt[957] =
  612     {   0,
  613         4,    5,    5,    5,    6,    4,    7,    4,    8,    8,
  614         4,    9,    4,   10,    4,   11,    4,    4,   12,   13,
  615        14,   15,    4,   16,   17,    4,   18,   19,    4,    9,
  616         4,    4,   10,    4,    4,    4,    4,    4,   13,   14,
  617        15,    4,    4,   16,   17,    4,    4,    4,   20,   21,
  618       108,   22,  109,   23,   24,  540,   25,   26,   46,   27,
  619        38,   38,   28,   39,   39,   43,   29,   47,   30,   44,
  620        31,   32,   33,   48,  562,   34,   35,   50,   36,   40,
  621       143,   57,   37,   62,   41,   41,   42,   42,   51,   49,
  622        54,   58,   60,   63,   55,   64,  144,   66,   69,   71,
  623 
  624        74,   77,   79,   61,   81,   65,   56,   67,   70,   72,
  625        75,   84,   78,   80,   86,   82,   89,   91,   91,   92,
  626        92,  561,   85,  101,  101,   87,   40,   90,   40,  110,
  627       151,   41,   41,  139,  111,  137,  137,  140,   93,  151,
  628        94,  151,   95,  138,  138,   96,   97,   98,   99,  151,
  629       100,  149,  149,  150,  150,  151,   93,  156,  151,   94,
  630       151,  157,  154,  151,  156,   97,   98,   99,  157,  151,
  631       100,  151,  156,  218,  152,  151,  157,  156,  156,  156,
  632       218,  157,  157,  157,  181,  153,  182,  156,  158,  183,
  633       155,  157,  161,  162,  184,  163,  174,  174,  218,  159,
  634 
  635       218,  164,  175,  175,  160,  188,  189,  151,  168,  218,
  636       165,  149,  149,  218,  190,  190,  166,  220,  167,  169,
  637       218,  170,  218,  218,  223,  171,  156,  218,  218,  335,
  638       221,  230,  230,  195,  195,  219,  196,  560,  197,  244,
  639       198,  231,  231,  199,  200,  201,  202,  240,  203,  554,
  640       222,  241,  225,  226,  196,  245,  435,  197,  232,  224,
  641       227,  228,  233,  200,  201,  202,  436,  232,  203,  238,
  642       229,  233,  218,  337,  234,  234,  239,  239,  274,  263,
  643       264,  274,  294,  232,  295,  275,  275,  329,  276,  276,
  644       277,  278,  238,  296,  335,  156,  156,  156,  297,  157,
  645 
  646       157,  157,  281,  330,  282,  335,  283,  310,  310,  284,
  647       285,  286,  287,  335,  288,  311,  311,  274,  320,  320,
  648       281,  321,  321,  282,  319,  319,  322,  322,  274,  285,
  649       286,  287,  335,  325,  288,  320,  320,  326,  340,  335,
  650       336,  335,  335,  335,  335,  338,  335,  156,  354,  405,
  651       354,  157,  362,  362,  363,  355,  355,  356,  356,  364,
  652       373,  364,  374,  365,  405,  365,  366,  366,  367,  367,
  653       405,  343,  375,  339,  342,  344,  156,  376,  156,  335,
  654       157,  408,  157,  345,  354,  341,  380,  380,  354,  346,
  655       405,  392,  392,  393,  393,  393,  393,  398,  398,  364,
  656 
  657       404,  404,  364,  405,  405,  406,  365,  405,  407,  404,
  658       404,  405,  405,  399,  405,  405,  156,  400,  433,  417,
  659       157,  401,  402,  418,  403,  553,  419,  419,  427,  427,
  660       428,  409,  430,  430,  434,  552,  400,  457,  457,  412,
  661       539,  401,  402,  414,  413,  364,  405,  410,  417,  365,
  662       411,  415,  405,  438,  439,  449,  450,  417,  416,  466,
  663       466,  418,  467,  467,  475,  475,  476,  477,  477,  476,
  664       451,  484,  484,  485,  485,  493,  501,  478,  479,  493,
  665       502,  501,  494,  494,  536,  502,  495,  495,  503,  503,
  666       476,  504,  504,  501,  506,  506,  546,  502,  507,  507,
  667 
  668       505,  505,  476,  510,  510,  493,  519,  519,  493,  545,
  669       501,  544,  518,  518,  543,  519,  519,  524,  524,  525,
  670       525,  526,  526,  501,  537,  501,  405,  502,  540,  502,
  671       525,  525,  503,  503,  501,  527,  527,  541,  502,  542,
  672       542,  505,  505,  535,  535,  536,  538,  538,  539,  547,
  673       547,  548,  548,  540,  551,  551,  555,  555,  556,  556,
  674       549,  550,  557,  557,  558,  558,  559,  559,  563,  563,
  675       564,  564,  565,  565,  566,  566,  567,  567,  567,  567,
  676       568,  568,  569,  569,  405,  405,  493,  534,  533,  532,
  677       531,  530,  529,  528,  335,  501,  523,  405,  522,  521,
  678 
  679       520,  517,  516,  515,  514,  513,  512,  511,  509,  508,
  680       335,  335,  335,  500,  499,  498,  376,  497,  496,  405,
  681       492,  491,  490,  489,  488,  487,  486,  483,  335,  482,
  682       481,  480,  474,  473,  472,  405,  471,  470,  469,  468,
  683       405,  465,  464,  463,  462,  461,  460,  459,  458,  218,
  684       428,  456,  455,  454,  297,  453,  452,  335,  451,  448,
  685       447,  446,  445,  405,  405,  444,  443,  442,  441,  440,
  686       437,  432,  431,  429,  218,  218,  218,  354,  151,  426,
  687       425,  424,  335,  423,  422,  421,  420,  335,  405,  364,
  688       363,  397,  218,  396,  395,  394,  391,  390,  151,  389,
  689 
  690       388,  387,  386,  335,  335,  385,  384,  383,  382,  381,
  691       379,  378,  377,  372,  371,  370,  369,  368,  151,  151,
  692       274,  361,  360,  359,  184,  358,  357,  218,  353,  352,
  693       351,  350,  349,  348,  151,  347,  335,  334,  333,  332,
  694       331,  328,  327,  324,  323,  318,  317,  316,  218,  315,
  695       314,  313,  312,  218,  309,  308,  307,  306,  305,  304,
  696       303,  302,  301,  111,  300,  299,  298,  293,  292,  291,
  697       290,  289,  238,  280,  279,  151,  232,  273,  272,  271,
  698       270,  218,  218,  269,  268,  267,  266,  265,  262,  261,
  699       260,  259,  258,  257,  256,  255,  254,  253,  252,  151,
  700 
  701       251,  250,  249,  248,  247,  246,  243,  242,  237,  236,
  702       235,  151,  218,  217,  216,  215,  214,  213,  212,  211,
  703       210,  209,  208,  207,  206,  151,  151,  205,  204,  156,
  704       194,  193,  192,  191,  187,  186,  185,  180,  179,  178,
  705       177,  176,  173,  172,  151,  148,  147,  146,  145,  142,
  706       141,  136,  135,  134,  133,  132,  131,  130,  129,  128,
  707       127,  126,  125,  124,  123,  136,  135,  134,  133,  132,
  708       131,  130,  129,  128,  127,  126,  125,  124,  123,  122,
  709       121,  120,  119,  118,  117,  116,  115,  114,  113,  112,
  710       107,  106,  105,  104,  103,  102,   76,   88,   83,   76,
  711 
  712        73,   68,   59,   53,   52,   45,  570,    3,  570,  570,
  713       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  714       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  715       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  716       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  717       570,  570,  570,  570,  570,  570
  718     } ;
  719 
  720 static yyconst flex_int16_t yy_chk[957] =
  721     {   0,
  722         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  723         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  724         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  725         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  726         1,    1,    1,    1,    1,    1,    1,    1,    5,    5,
  727        49,    5,   49,    5,    5,  559,    5,    5,   11,    5,
  728         6,    6,    5,    7,    7,    9,    5,   11,    5,    9,
  729         5,    5,    5,   12,  556,    5,    5,   13,    5,    8,
  730        96,   17,    5,   20,    8,    8,    8,    8,   13,   12,
  731        16,   17,   19,   20,   16,   21,   96,   22,   24,   25,
  732 
  733        27,   29,   30,   19,   31,   21,   16,   22,   24,   25,
  734        27,   33,   29,   30,   34,   31,   36,   38,   38,   39,
  735        39,  555,   33,   41,   41,   34,   42,   36,   40,   50,
  736       104,   42,   42,   93,   50,   91,   91,   93,   40,  102,
  737        40,  103,   40,   92,   92,   40,   40,   40,   40,  105,
  738        40,  101,  101,  101,  101,  107,   40,  106,  108,   40,
  739       109,  106,  104,  110,  112,   40,   40,   40,  112,  113,
  740        40,  114,  115,  177,  102,  116,  115,  117,  118,  119,
  741       180,  117,  118,  119,  144,  103,  144,  120,  106,  145,
  742       105,  120,  109,  110,  145,  112,  137,  137,  178,  107,
  743 
  744       176,  113,  138,  138,  108,  149,  149,  151,  117,  179,
  745       114,  150,  150,  181,  151,  151,  115,  177,  116,  118,
  746       182,  119,  186,  183,  180,  120,  156,  187,  185,  290,
  747       178,  188,  188,  156,  156,  176,  156,  554,  156,  199,
  748       156,  189,  189,  156,  156,  156,  156,  196,  156,  546,
  749       179,  196,  182,  183,  156,  199,  402,  156,  234,  181,
  750       185,  186,  234,  156,  156,  156,  402,  190,  156,  195,
  751       187,  190,  218,  290,  190,  190,  195,  195,  230,  218,
  752       218,  231,  245,  232,  245,  230,  230,  284,  231,  231,
  753       232,  232,  238,  246,  293,  250,  252,  257,  246,  250,
  754 
  755       252,  257,  238,  284,  238,  289,  238,  263,  263,  238,
  756       238,  238,  238,  291,  238,  264,  264,  274,  275,  275,
  757       238,  277,  277,  238,  274,  274,  278,  278,  276,  238,
  758       238,  238,  292,  281,  238,  276,  276,  281,  293,  294,
  759       289,  296,  295,  298,  299,  291,  300,  306,  310,  370,
  760       311,  306,  319,  319,  319,  310,  310,  311,  311,  321,
  761       330,  322,  330,  321,  369,  322,  321,  321,  322,  322,
  762       368,  296,  331,  292,  295,  298,  348,  331,  350,  335,
  763       348,  370,  350,  299,  354,  294,  335,  335,  356,  300,
  764       371,  354,  354,  355,  355,  356,  356,  363,  363,  364,
  765 
  766       366,  366,  367,  372,  373,  368,  367,  374,  369,  367,
  767       367,  377,  378,  364,  375,  379,  391,  364,  401,  380,
  768       391,  364,  364,  380,  364,  544,  380,  380,  392,  392,
  769       392,  371,  398,  398,  401,  543,  364,  428,  428,  374,
  770       538,  364,  364,  377,  375,  404,  405,  372,  417,  404,
  771       373,  378,  537,  405,  405,  417,  417,  419,  379,  438,
  772       438,  419,  439,  439,  449,  449,  449,  450,  450,  450,
  773       451,  457,  457,  458,  458,  466,  525,  451,  451,  467,
  774       525,  475,  466,  466,  535,  475,  467,  467,  475,  475,
  775       475,  476,  476,  477,  478,  478,  534,  477,  479,  479,
  776 
  777       477,  477,  477,  485,  485,  493,  494,  494,  495,  533,
  778       501,  532,  493,  493,  530,  495,  495,  501,  501,  503,
  779       503,  504,  504,  505,  523,  506,  522,  505,  526,  506,
  780       505,  505,  506,  506,  507,  509,  509,  526,  507,  527,
  781       527,  507,  507,  518,  518,  518,  524,  524,  524,  536,
  782       536,  539,  539,  540,  541,  541,  547,  547,  548,  548,
  783       540,  540,  549,  549,  550,  550,  551,  551,  557,  557,
  784       558,  558,  561,  561,  562,  562,  563,  563,  564,  564,
  785       565,  565,  566,  566,  521,  520,  519,  517,  516,  515,
  786       514,  513,  512,  511,  508,  502,  500,  499,  498,  497,
  787 
  788       496,  492,  491,  490,  489,  488,  487,  486,  484,  483,
  789       482,  481,  480,  474,  473,  472,  471,  470,  469,  468,
  790       465,  464,  463,  462,  461,  460,  459,  456,  455,  454,
  791       453,  452,  448,  447,  446,  445,  444,  443,  442,  441,
  792       440,  437,  436,  435,  434,  433,  432,  431,  430,  429,
  793       427,  426,  425,  424,  423,  422,  421,  420,  418,  416,
  794       415,  414,  413,  412,  411,  410,  409,  408,  407,  406,
  795       403,  400,  399,  397,  396,  395,  394,  393,  390,  389,
  796       388,  387,  386,  385,  384,  383,  382,  381,  376,  365,
  797       362,  361,  360,  359,  358,  357,  351,  349,  347,  346,
  798 
  799       345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
  800       334,  333,  332,  329,  328,  327,  326,  325,  324,  323,
  801       320,  318,  317,  316,  315,  314,  313,  312,  309,  308,
  802       307,  305,  304,  303,  302,  301,  297,  288,  287,  286,
  803       285,  283,  282,  280,  279,  273,  272,  271,  270,  269,
  804       268,  267,  266,  265,  262,  261,  260,  259,  258,  256,
  805       255,  254,  253,  251,  249,  248,  247,  244,  243,  242,
  806       241,  240,  239,  237,  236,  235,  233,  229,  228,  227,
  807       226,  225,  224,  223,  222,  221,  220,  219,  217,  216,
  808       215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
  809 
  810       205,  204,  203,  202,  201,  200,  198,  197,  194,  193,
  811       192,  191,  184,  173,  172,  171,  170,  169,  168,  167,
  812       166,  165,  164,  163,  162,  161,  160,  159,  158,  157,
  813       155,  154,  153,  152,  148,  147,  146,  143,  142,  141,
  814       140,  139,  122,  121,  111,  100,   99,   98,   97,   95,
  815        94,   90,   89,   88,   87,   86,   85,   84,   83,   82,
  816        81,   80,   79,   78,   77,   75,   74,   73,   72,   71,
  817        70,   69,   68,   67,   66,   65,   64,   63,   62,   61,
  818        60,   59,   58,   57,   56,   55,   54,   53,   52,   51,
  819        48,   47,   46,   45,   44,   43,   37,   35,   32,   28,
  820 
  821        26,   23,   18,   15,   14,   10,    3,  570,  570,  570,
  822       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  823       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  824       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  825       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
  826       570,  570,  570,  570,  570,  570
  827     } ;
  828 
  829 static yy_state_type yy_last_accepting_state;
  830 static char *yy_last_accepting_cpos;
  831 
  832 extern int yy_flex_debug;
  833 int yy_flex_debug = 0;
  834 
  835 /* The intent behind this definition is that it'll catch
  836  * any uses of REJECT which flex missed.
  837  */
  838 #define REJECT reject_used_but_not_detected
  839 #define yymore() yymore_used_but_not_detected
  840 #define YY_MORE_ADJ 0
  841 #define YY_RESTORE_YY_MORE_OFFSET
  842 char *yytext;
  843 #line 1 "sbr/dtimep.l"
  844 /* dtimep.l -- parse dates and times.
  845  *
  846  * This exceeds the default table capacities for some old versions
  847  * of lex (and the minimum defaults as specified by POSIX).  The following
  848  * choices meet or exceed the lex defaults for older SunOS4.x, Solaris,
  849  * HPUX, and AIX.
  850  */
  851 #line 13 "sbr/dtimep.l"
  852 #include <h/nmh.h>
  853 #include <h/tws.h>
  854 
  855   /* Since we're looking at a string at a time, don't worry about
  856    *  wrapping to the next buffer.
  857    */
  858 #if YY_FLEX_MAJOR_VERSION == 2 && \
  859     YY_FLEX_MINOR_VERSION == 6 && \
  860     YY_FLEX_SUBMINOR_VERSION == 3
  861 /* https://github.com/westes/flex/issues/162 */
  862 #undef yywrap
  863 #endif
  864 #define yywrap() 1
  865 #define YY_SKIP_YYWRAP
  866 
  867 #define YY_NO_INPUT
  868 
  869   /* This is the tricky thing that makes this function cool.  We
  870    *  replace the traditional int yylex(void) declaration with our
  871    *  dparsetime() declaration, essentially piggy-backing off the
  872    *  utility of the yylex() function and adding what we need to make
  873    *  the parsing function useful to us.
  874    */
  875 #define YY_DECL struct tws *dparsetime(char *lexstr)
  876 
  877   /* yyterminate() is called after the input string is matched to
  878    * completion (actually, when the lexer reaches an EOF).  The only
  879    * thing that really needs to be in this macro function is the
  880    * return call, which must be substituted inline into dparsetime.
  881    */
  882 
  883 #define yyterminate() (void)yy_delete_buffer(lexhandle); \
  884   if(!(tw.tw_flags & TW_SUCC)) { \
  885     return (struct tws *)NULL; \
  886   } \
  887   if(tw.tw_year < 1970) \
  888     tw.tw_year += 1900; \
  889   if(tw.tw_year < 1970) \
  890     tw.tw_year += 100; \
  891   return(&tw)
  892 
  893 /*
  894  * Table to convert month names to numeric month.  We use the
  895  * fact that the low order 5 bits of the sum of the 2nd & 3rd
  896  * characters of the name is a hash with no collisions for the 12
  897  * valid month names.  (The mask to 5 bits maps any combination of
  898  * upper and lower case into the same hash value).
  899  */
  900 static int month_map[] = {
  901     0,
  902     6,  /* 1 - Jul */
  903     3,  /* 2 - Apr */
  904     5,  /* 3 - Jun */
  905     0,
  906     10, /* 5 - Nov */
  907     0,
  908     1,  /* 7 - Feb */
  909     11, /* 8 - Dec */
  910     0,
  911     0,
  912     0,
  913     0,
  914     0,
  915     0,
  916     0,  /*15 - Jan */
  917     0,
  918     0,
  919     0,
  920     2,  /*19 - Mar */
  921     0,
  922     8,  /*21 - Sep */
  923     0,
  924     9,  /*23 - Oct */
  925     0,
  926     0,
  927     4,  /*26 - May */
  928     0,
  929     7   /*28 - Aug */
  930 };
  931 
  932 /*
  933  * Lookup table for day-of-week using the same hash trick as for above name-of-
  934  * month table, but using the first and second character, not second and third.
  935  *
  936  * Compute index into table using: (day_name[0] & 7) + (day_name[1] & 4)
  937  */
  938 static int day_map[] = {
  939     0,
  940     0,
  941     0,
  942     6,  /* 3 - Sat */
  943     4,  /* 4 - Thu */
  944     0,
  945     5,  /* 6 - Fri */
  946     0,  /* 7 - Sun */
  947     2,  /* 8 - Tue */
  948     1   /* 9 - Mon */,
  949     0,
  950     3   /*11 - Wed */
  951 };
  952 
  953 /* The SET* macros will parse for the appropriate field, and leave the
  954  * cp pointer at the first character after the desired field. Be
  955  * careful with variable-length fields or alpha-num mixes.
  956 
  957  * The SKIP* macros skip over characters of a particular class and
  958  * leave cp at the position of the first character that doesn't match
  959  * that class. Correspondingly, SKIPTO* skips until it reaches a
  960  * character of a particular class.
  961  */
  962 
  963 #define INIT()       { cp = yytext;} 
  964 #define SETWDAY()    { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)]; \
  965                        tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP; \
  966                        SKIPA(); }
  967 #define SETMON()     { cp++; \
  968                        tw.tw_mon = month_map[(((unsigned char) cp[0]) + ((unsigned char) cp[1])) & 0x1f]; \
  969                SKIPA(); }
  970 #define SETMON_NUM() { tw.tw_mon = atoi(cp)-1; \
  971                SKIPD(); }
  972 #define SETYEAR()    { tw.tw_year = atoi(cp); \
  973                SKIPD(); }
  974 #define SETDAY()     { tw.tw_mday = atoi(cp); \
  975                        tw.tw_flags |= TW_SUCC; \
  976                SKIPD(); }
  977 #define SETTIME()    { tw.tw_hour = atoi(cp); \
  978                        cp += 2; \
  979                        SKIPTOD(); \
  980                        tw.tw_min = atoi(cp); \
  981                        cp += 2; \
  982                        if(*cp == ':') { \
  983                           tw.tw_sec = atoi(++cp); SKIPD(); } }
  984 #define SETZONE(x)   { tw.tw_zone = ((x)/100)*60+(x)%100; \
  985                        tw.tw_flags |= TW_SZEXP; \
  986                        SKIPD(); }
  987 #define SETDST()     { tw.tw_flags |= TW_DST; }
  988 #define SKIPD()      { while ( isdigit((unsigned char) *cp++) ) ; \
  989                        --cp; }
  990 #define SKIPTOD()    { while ( !isdigit((unsigned char) *cp++) ) ; \
  991                        --cp; }
  992 #define SKIPA()      { while ( isalpha((unsigned char) *cp++) ) ; \
  993                        --cp; }
  994 #define SKIPTOA()    { while ( !isalpha((unsigned char) *cp++) ) ; \
  995                        --cp; }
  996 #define SKIPSP()     { while ( isspace((unsigned char) *cp++) ) ; \
  997                        --cp; }
  998 #define SKIPTOSP()   { while ( !isspace((unsigned char) *cp++) ) ; \
  999                        --cp; }
 1000 
 1001 # ifdef HAVE_SYS_TIME_H
 1002 #  include <sys/time.h>
 1003 # endif
 1004 #include <time.h>
 1005 
 1006 static void
 1007 zonehack (struct tws *tw)
 1008 {
 1009     struct tm *tm;
 1010 
 1011     if (dmktime (tw) == (time_t) -1)
 1012     return;
 1013 
 1014     tm = localtime (&tw->tw_clock);
 1015     if (tm->tm_isdst) {
 1016     tw->tw_flags |= TW_DST;
 1017     tw->tw_zone -= 60;
 1018     }
 1019 }
 1020 /* The year can either be 2 digits, or 4. However, after
 1021 Y2K, we found that some MUA were reporting the year 100, hence
 1022 the middle term here. yyterminate() resolves the actual
 1023 issues with 2-digit years.
 1024 */
 1025 #line 1026 "sbr/dtimep.c"
 1026 
 1027 #define INITIAL 0
 1028 
 1029 #ifndef YY_NO_UNISTD_H
 1030 /* Special case for "unistd.h", since it is non-ANSI. We include it way
 1031  * down here because we want the user's section 1 to have been scanned first.
 1032  * The user has a chance to override it with an option.
 1033  */
 1034 #include <unistd.h>
 1035 #endif
 1036 
 1037 #ifndef YY_EXTRA_TYPE
 1038 #define YY_EXTRA_TYPE void *
 1039 #endif
 1040 
 1041 static int yy_init_globals (void );
 1042 
 1043 /* Accessor methods to globals.
 1044    These are made visible to non-reentrant scanners for convenience. */
 1045 
 1046 int yylex_destroy (void );
 1047 
 1048 int yyget_debug (void );
 1049 
 1050 void yyset_debug (int debug_flag  );
 1051 
 1052 YY_EXTRA_TYPE yyget_extra (void );
 1053 
 1054 void yyset_extra (YY_EXTRA_TYPE user_defined  );
 1055 
 1056 FILE *yyget_in (void );
 1057 
 1058 void yyset_in  (FILE * in_str  );
 1059 
 1060 FILE *yyget_out (void );
 1061 
 1062 void yyset_out  (FILE * out_str  );
 1063 
 1064 yy_size_t yyget_leng (void );
 1065 
 1066 char *yyget_text (void );
 1067 
 1068 int yyget_lineno (void );
 1069 
 1070 void yyset_lineno (int line_number  );
 1071 
 1072 /* Macros after this point can all be overridden by user definitions in
 1073  * section 1.
 1074  */
 1075 
 1076 #ifndef YY_SKIP_YYWRAP
 1077 #ifdef __cplusplus
 1078 extern "C" int yywrap (void );
 1079 #else
 1080 extern int yywrap (void );
 1081 #endif
 1082 #endif
 1083 
 1084     static void yyunput (int c,char *buf_ptr  );
 1085     
 1086 #ifndef yytext_ptr
 1087 static void yy_flex_strncpy (char *,yyconst char *,int );
 1088 #endif
 1089 
 1090 #ifdef YY_NEED_STRLEN
 1091 static int yy_flex_strlen (yyconst char * );
 1092 #endif
 1093 
 1094 #ifndef YY_NO_INPUT
 1095 
 1096 #ifdef __cplusplus
 1097 static int yyinput (void );
 1098 #else
 1099 static int input (void );
 1100 #endif
 1101 
 1102 #endif
 1103 
 1104 /* Amount of stuff to slurp up with each read. */
 1105 #ifndef YY_READ_BUF_SIZE
 1106 #define YY_READ_BUF_SIZE 8192
 1107 #endif
 1108 
 1109 /* Copy whatever the last rule matched to the standard output. */
 1110 #ifndef ECHO
 1111 /* This used to be an fputs(), but since the string might contain NUL's,
 1112  * we now use fwrite().
 1113  */
 1114 #define ECHO fwrite( yytext, yyleng, 1, yyout )
 1115 #endif
 1116 
 1117 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 1118  * is returned in "result".
 1119  */
 1120 #ifndef YY_INPUT
 1121 #define YY_INPUT(buf,result,max_size) \
 1122     if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 1123         { \
 1124         int c = '*'; \
 1125         yy_size_t n; \
 1126         for ( n = 0; n < max_size && \
 1127                  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 1128             buf[n] = (char) c; \
 1129         if ( c == '\n' ) \
 1130             buf[n++] = (char) c; \
 1131         if ( c == EOF && ferror( yyin ) ) \
 1132             YY_FATAL_ERROR( "input in flex scanner failed" ); \
 1133         result = n; \
 1134         } \
 1135     else \
 1136         { \
 1137         errno=0; \
 1138         while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
 1139             { \
 1140             if( errno != EINTR) \
 1141                 { \
 1142                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
 1143                 break; \
 1144                 } \
 1145             errno=0; \
 1146             clearerr(yyin); \
 1147             } \
 1148         }\
 1149 \
 1150 
 1151 #endif
 1152 
 1153 /* No semi-colon after return; correct usage is to write "yyterminate();" -
 1154  * we don't want an extra ';' after the "return" because that will cause
 1155  * some compilers to complain about unreachable statements.
 1156  */
 1157 #ifndef yyterminate
 1158 #define yyterminate() return YY_NULL
 1159 #endif
 1160 
 1161 /* Number of entries by which start-condition stack grows. */
 1162 #ifndef YY_START_STACK_INCR
 1163 #define YY_START_STACK_INCR 25
 1164 #endif
 1165 
 1166 /* Report a fatal error. */
 1167 #ifndef YY_FATAL_ERROR
 1168 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
 1169 #endif
 1170 
 1171 /* end tables serialization structures and prototypes */
 1172 
 1173 /* Default declaration of generated scanner - a define so the user can
 1174  * easily add parameters.
 1175  */
 1176 #ifndef YY_DECL
 1177 #define YY_DECL_IS_OURS 1
 1178 
 1179 extern int yylex (void);
 1180 
 1181 #define YY_DECL int yylex (void)
 1182 #endif /* !YY_DECL */
 1183 
 1184 /* Code executed at the beginning of each rule, after yytext and yyleng
 1185  * have been set up.
 1186  */
 1187 #ifndef YY_USER_ACTION
 1188 #define YY_USER_ACTION
 1189 #endif
 1190 
 1191 /* Code executed at the end of each rule. */
 1192 #ifndef YY_BREAK
 1193 #define YY_BREAK break;
 1194 #endif
 1195 
 1196 #define YY_RULE_SETUP \
 1197     YY_USER_ACTION
 1198 
 1199 /** The main scanner function which does all the work.
 1200  */
 1201 YY_DECL
 1202 {
 1203     register yy_state_type yy_current_state;
 1204     register char *yy_cp, *yy_bp;
 1205     register int yy_act;
 1206     
 1207 #line 224 "sbr/dtimep.l"
 1208 
 1209 
 1210   /* This section begins the definition of dparsetime().
 1211      Put here any local variable definitions and initializations */
 1212   
 1213   YY_BUFFER_STATE lexhandle;
 1214 
 1215   char *cp;
 1216   static struct tws tw; 
 1217 
 1218   memset(&tw,0,sizeof(struct tws));
 1219 
 1220   lexhandle = yy_scan_string(lexstr);
 1221 
 1222 
 1223 #line 1224 "sbr/dtimep.c"
 1224 
 1225     if ( !(yy_init) )
 1226         {
 1227         (yy_init) = 1;
 1228 
 1229 #ifdef YY_USER_INIT
 1230         YY_USER_INIT;
 1231 #endif
 1232 
 1233         if ( ! (yy_start) )
 1234             (yy_start) = 1; /* first start state */
 1235 
 1236         if ( ! yyin )
 1237             yyin = stdin;
 1238 
 1239         if ( ! yyout )
 1240             yyout = stdout;
 1241 
 1242         if ( ! YY_CURRENT_BUFFER ) {
 1243             yyensure_buffer_stack ();
 1244             YY_CURRENT_BUFFER_LVALUE =
 1245                 yy_create_buffer(yyin,YY_BUF_SIZE );
 1246         }
 1247 
 1248         yy_load_buffer_state( );
 1249         }
 1250 
 1251     while ( 1 )     /* loops until end-of-file is reached */
 1252         {
 1253         yy_cp = (yy_c_buf_p);
 1254 
 1255         /* Support of yytext. */
 1256         *yy_cp = (yy_hold_char);
 1257 
 1258         /* yy_bp points to the position in yy_ch_buf of the start of
 1259          * the current run.
 1260          */
 1261         yy_bp = yy_cp;
 1262 
 1263         yy_current_state = (yy_start);
 1264 yy_match:
 1265         do
 1266             {
 1267             register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
 1268             if ( yy_accept[yy_current_state] )
 1269                 {
 1270                 (yy_last_accepting_state) = yy_current_state;
 1271                 (yy_last_accepting_cpos) = yy_cp;
 1272                 }
 1273             while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 1274                 {
 1275                 yy_current_state = (int) yy_def[yy_current_state];
 1276                 if ( yy_current_state >= 571 )
 1277                     yy_c = yy_meta[(unsigned int) yy_c];
 1278                 }
 1279             yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 1280             ++yy_cp;
 1281             }
 1282         while ( yy_base[yy_current_state] != 908 );
 1283 
 1284 yy_find_action:
 1285         yy_act = yy_accept[yy_current_state];
 1286         if ( yy_act == 0 )
 1287             { /* have to back up */
 1288             yy_cp = (yy_last_accepting_cpos);
 1289             yy_current_state = (yy_last_accepting_state);
 1290             yy_act = yy_accept[yy_current_state];
 1291             }
 1292 
 1293         YY_DO_BEFORE_ACTION;
 1294 
 1295 do_action:  /* This label is used only to access EOF actions. */
 1296 
 1297         switch ( yy_act )
 1298     { /* beginning of action switch */
 1299             case 0: /* must back up */
 1300             /* undo the effects of YY_DO_BEFORE_ACTION */
 1301             *yy_cp = (yy_hold_char);
 1302             yy_cp = (yy_last_accepting_cpos);
 1303             yy_current_state = (yy_last_accepting_state);
 1304             goto yy_find_action;
 1305 
 1306 case 1:
 1307 YY_RULE_SETUP
 1308 #line 239 "sbr/dtimep.l"
 1309 {
 1310                                      INIT();
 1311                      SETWDAY();
 1312                      SKIPTOA();
 1313                      SETMON();
 1314                      SKIPTOD();
 1315                      SETDAY();
 1316                      SKIPTOD();
 1317                      SETTIME();
 1318                      SKIPTOD();
 1319                      SETYEAR();
 1320                                      }
 1321     YY_BREAK
 1322 case 2:
 1323 YY_RULE_SETUP
 1324 #line 252 "sbr/dtimep.l"
 1325 {
 1326                                      INIT();
 1327                      SETWDAY();
 1328                      SKIPTOD();
 1329                      SETDAY();
 1330                      SKIPTOA();
 1331                      SETMON();
 1332                      SKIPTOD();
 1333                      SETYEAR();
 1334                      SKIPTOD();
 1335                      SETTIME();
 1336                                      }
 1337     YY_BREAK
 1338 case 3:
 1339 YY_RULE_SETUP
 1340 #line 264 "sbr/dtimep.l"
 1341 {
 1342                                      INIT();
 1343                      SETDAY();
 1344                      SKIPTOA();
 1345                      SETMON();
 1346                      SKIPTOD();
 1347                      SETYEAR();
 1348                      SKIPTOD();
 1349                      SETTIME();
 1350                                      }
 1351     YY_BREAK
 1352 case 4:
 1353 YY_RULE_SETUP
 1354 #line 274 "sbr/dtimep.l"
 1355 {
 1356                                      INIT();
 1357                      SETWDAY();
 1358                      SKIPTOA();
 1359                      SETMON();
 1360                      SKIPTOD();
 1361                      SETDAY();
 1362                      SKIPTOD();
 1363                      SETYEAR();
 1364                      SKIPTOD();
 1365                      SETTIME();
 1366                                      }
 1367     YY_BREAK
 1368 case 5:
 1369 YY_RULE_SETUP
 1370 #line 286 "sbr/dtimep.l"
 1371 {
 1372                                      INIT();
 1373                      SETWDAY();
 1374                      SKIPTOA();
 1375                      SETMON();
 1376                      SKIPTOD();
 1377                      SETDAY();
 1378                      SKIPTOD();
 1379                      SETYEAR();
 1380                                      }
 1381     YY_BREAK
 1382 case 6:
 1383 YY_RULE_SETUP
 1384 #line 296 "sbr/dtimep.l"
 1385 {
 1386                                      INIT();
 1387                      SETMON();
 1388                      SKIPTOD();
 1389                      SETDAY();
 1390                      SKIPTOD();
 1391                      SETYEAR();
 1392                      SKIPTOA();
 1393                      SETWDAY();
 1394                                      }
 1395     YY_BREAK
 1396 case 7:
 1397 YY_RULE_SETUP
 1398 #line 306 "sbr/dtimep.l"
 1399 {
 1400                                      INIT();
 1401                      SETMON();
 1402                      SKIPTOD();
 1403                      SETDAY();
 1404                      SKIPTOD();
 1405                      SETYEAR();
 1406                                      }
 1407     YY_BREAK
 1408 case 8:
 1409 YY_RULE_SETUP
 1410 #line 314 "sbr/dtimep.l"
 1411 {
 1412                                      INIT();
 1413                      /* MM/DD/YY */
 1414                      SETMON_NUM();
 1415                      SKIPTOD();
 1416                      SETDAY();
 1417                      SKIPTOD();
 1418                      SETYEAR();
 1419                      SKIPTOD();
 1420                      SETTIME();
 1421                                      }
 1422     YY_BREAK
 1423 case 9:
 1424 YY_RULE_SETUP
 1425 #line 325 "sbr/dtimep.l"
 1426 {
 1427                                      INIT();
 1428                      /* MM/DD/YY */
 1429                      SETMON_NUM();
 1430                      SKIPTOD();
 1431                      SETDAY();
 1432                      SKIPTOD();
 1433                      SETYEAR();
 1434                                      }
 1435     YY_BREAK
 1436 case 10:
 1437 YY_RULE_SETUP
 1438 #line 335 "sbr/dtimep.l"
 1439 
 1440     YY_BREAK
 1441 case 11:
 1442 YY_RULE_SETUP
 1443 #line 336 "sbr/dtimep.l"
 1444 tw.tw_hour += 12;
 1445     YY_BREAK
 1446 case 12:
 1447 YY_RULE_SETUP
 1448 #line 338 "sbr/dtimep.l"
 1449 {
 1450                                     INIT();
 1451                                     SKIPTOD();
 1452                                     SETZONE(atoi(cp));
 1453                     zonehack (&tw);
 1454                     yyterminate();
 1455                                     }
 1456     YY_BREAK
 1457 case 13:
 1458 YY_RULE_SETUP
 1459 #line 345 "sbr/dtimep.l"
 1460 {
 1461                                     INIT();
 1462                                     SKIPTOD();
 1463                                     SETZONE(-atoi(cp));
 1464                     zonehack (&tw);
 1465                     yyterminate();
 1466                     
 1467                                     }
 1468     YY_BREAK
 1469 case 14:
 1470 /* rule 14 can match eol */
 1471 YY_RULE_SETUP
 1472 #line 353 "sbr/dtimep.l"
 1473 INIT(); SETZONE(0); yyterminate();
 1474     YY_BREAK
 1475 case 15:
 1476 /* rule 15 can match eol */
 1477 YY_RULE_SETUP
 1478 #line 354 "sbr/dtimep.l"
 1479 INIT(); SETZONE(0); yyterminate();
 1480     YY_BREAK
 1481 case 16:
 1482 /* rule 16 can match eol */
 1483 YY_RULE_SETUP
 1484 #line 355 "sbr/dtimep.l"
 1485 INIT(); SETZONE(-500); yyterminate();
 1486     YY_BREAK
 1487 case 17:
 1488 /* rule 17 can match eol */
 1489 YY_RULE_SETUP
 1490 #line 356 "sbr/dtimep.l"
 1491 { INIT(); SETDST(); SETZONE(-500);
 1492                                       yyterminate(); }
 1493     YY_BREAK
 1494 case 18:
 1495 /* rule 18 can match eol */
 1496 YY_RULE_SETUP
 1497 #line 358 "sbr/dtimep.l"
 1498 INIT(); SETZONE(-600); yyterminate();
 1499     YY_BREAK
 1500 case 19:
 1501 /* rule 19 can match eol */
 1502 YY_RULE_SETUP
 1503 #line 359 "sbr/dtimep.l"
 1504 { INIT(); SETDST(); SETZONE(-600);
 1505                                       yyterminate(); }
 1506     YY_BREAK
 1507 case 20:
 1508 /* rule 20 can match eol */
 1509 YY_RULE_SETUP
 1510 #line 361 "sbr/dtimep.l"
 1511 INIT(); SETZONE(-700); yyterminate();
 1512     YY_BREAK
 1513 case 21:
 1514 /* rule 21 can match eol */
 1515 YY_RULE_SETUP
 1516 #line 362 "sbr/dtimep.l"
 1517 { INIT(); SETDST(); SETZONE(-700);
 1518                                       yyterminate(); }
 1519     YY_BREAK
 1520 case 22:
 1521 /* rule 22 can match eol */
 1522 YY_RULE_SETUP
 1523 #line 364 "sbr/dtimep.l"
 1524 INIT(); SETZONE(-800); yyterminate();
 1525     YY_BREAK
 1526 case 23:
 1527 /* rule 23 can match eol */
 1528 YY_RULE_SETUP
 1529 #line 365 "sbr/dtimep.l"
 1530 { INIT(); SETDST(); SETZONE(-800);
 1531                                       yyterminate(); }
 1532     YY_BREAK
 1533 case 24:
 1534 /* rule 24 can match eol */
 1535 YY_RULE_SETUP
 1536 #line 367 "sbr/dtimep.l"
 1537 INIT(); SETZONE(-330); yyterminate();
 1538     YY_BREAK
 1539 case 25:
 1540 /* rule 25 can match eol */
 1541 YY_RULE_SETUP
 1542 #line 368 "sbr/dtimep.l"
 1543 INIT(); SETZONE(-400); yyterminate();
 1544     YY_BREAK
 1545 case 26:
 1546 /* rule 26 can match eol */
 1547 YY_RULE_SETUP
 1548 #line 369 "sbr/dtimep.l"
 1549 { INIT(); SETDST(); SETZONE(-400);
 1550                                       yyterminate(); }
 1551     YY_BREAK
 1552 case 27:
 1553 /* rule 27 can match eol */
 1554 YY_RULE_SETUP
 1555 #line 371 "sbr/dtimep.l"
 1556 INIT(); SETZONE(-1000); yyterminate();
 1557     YY_BREAK
 1558 case 28:
 1559 /* rule 28 can match eol */
 1560 YY_RULE_SETUP
 1561 #line 372 "sbr/dtimep.l"
 1562 { INIT(); SETDST(); SETZONE(-1000);
 1563                                       yyterminate(); }
 1564     YY_BREAK
 1565 case 29:
 1566 /* rule 29 can match eol */
 1567 YY_RULE_SETUP
 1568 #line 374 "sbr/dtimep.l"
 1569 
 1570     YY_BREAK
 1571 case 30:
 1572 YY_RULE_SETUP
 1573 #line 376 "sbr/dtimep.l"
 1574 ECHO;
 1575     YY_BREAK
 1576 #line 1577 "sbr/dtimep.c"
 1577 case YY_STATE_EOF(INITIAL):
 1578     yyterminate();
 1579 
 1580     case YY_END_OF_BUFFER:
 1581         {
 1582         /* Amount of text matched not including the EOB char. */
 1583         int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
 1584 
 1585         /* Undo the effects of YY_DO_BEFORE_ACTION. */
 1586         *yy_cp = (yy_hold_char);
 1587         YY_RESTORE_YY_MORE_OFFSET
 1588 
 1589         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
 1590             {
 1591             /* We're scanning a new file or input source.  It's
 1592              * possible that this happened because the user
 1593              * just pointed yyin at a new source and called
 1594              * yylex().  If so, then we have to assure
 1595              * consistency between YY_CURRENT_BUFFER and our
 1596              * globals.  Here is the right place to do so, because
 1597              * this is the first action (other than possibly a
 1598              * back-up) that will match for the new input source.
 1599              */
 1600             (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 1601             YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
 1602             YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
 1603             }
 1604 
 1605         /* Note that here we test for yy_c_buf_p "<=" to the position
 1606          * of the first EOB in the buffer, since yy_c_buf_p will
 1607          * already have been incremented past the NUL character
 1608          * (since all states make transitions on EOB to the
 1609          * end-of-buffer state).  Contrast this with the test
 1610          * in input().
 1611          */
 1612         if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
 1613             { /* This was really a NUL. */
 1614             yy_state_type yy_next_state;
 1615 
 1616             (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
 1617 
 1618             yy_current_state = yy_get_previous_state(  );
 1619 
 1620             /* Okay, we're now positioned to make the NUL
 1621              * transition.  We couldn't have
 1622              * yy_get_previous_state() go ahead and do it
 1623              * for us because it doesn't know how to deal
 1624              * with the possibility of jamming (and we don't
 1625              * want to build jamming into it because then it
 1626              * will run more slowly).
 1627              */
 1628 
 1629             yy_next_state = yy_try_NUL_trans( yy_current_state );
 1630 
 1631             yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 1632 
 1633             if ( yy_next_state )
 1634                 {
 1635                 /* Consume the NUL. */
 1636                 yy_cp = ++(yy_c_buf_p);
 1637                 yy_current_state = yy_next_state;
 1638                 goto yy_match;
 1639                 }
 1640 
 1641             else
 1642                 {
 1643                 yy_cp = (yy_c_buf_p);
 1644                 goto yy_find_action;
 1645                 }
 1646             }
 1647 
 1648         else switch ( yy_get_next_buffer(  ) )
 1649             {
 1650             case EOB_ACT_END_OF_FILE:
 1651                 {
 1652                 (yy_did_buffer_switch_on_eof) = 0;
 1653 
 1654                 if ( yywrap( ) )
 1655                     {
 1656                     /* Note: because we've taken care in
 1657                      * yy_get_next_buffer() to have set up
 1658                      * yytext, we can now set up
 1659                      * yy_c_buf_p so that if some total
 1660                      * hoser (like flex itself) wants to
 1661                      * call the scanner after we return the
 1662                      * YY_NULL, it'll still work - another
 1663                      * YY_NULL will get returned.
 1664                      */
 1665                     (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
 1666 
 1667                     yy_act = YY_STATE_EOF(YY_START);
 1668                     goto do_action;
 1669                     }
 1670 
 1671                 else
 1672                     {
 1673                     if ( ! (yy_did_buffer_switch_on_eof) )
 1674                         YY_NEW_FILE;
 1675                     }
 1676                 break;
 1677                 }
 1678 
 1679             case EOB_ACT_CONTINUE_SCAN:
 1680                 (yy_c_buf_p) =
 1681                     (yytext_ptr) + yy_amount_of_matched_text;
 1682 
 1683                 yy_current_state = yy_get_previous_state(  );
 1684 
 1685                 yy_cp = (yy_c_buf_p);
 1686                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 1687                 goto yy_match;
 1688 
 1689             case EOB_ACT_LAST_MATCH:
 1690                 (yy_c_buf_p) =
 1691                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
 1692 
 1693                 yy_current_state = yy_get_previous_state(  );
 1694 
 1695                 yy_cp = (yy_c_buf_p);
 1696                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 1697                 goto yy_find_action;
 1698             }
 1699         break;
 1700         }
 1701 
 1702     default:
 1703         YY_FATAL_ERROR(
 1704             "fatal flex scanner internal error--no action found" );
 1705     } /* end of action switch */
 1706         } /* end of scanning one token */
 1707 } /* end of yylex */
 1708 
 1709 /* yy_get_next_buffer - try to read in a new buffer
 1710  *
 1711  * Returns a code representing an action:
 1712  *  EOB_ACT_LAST_MATCH -
 1713  *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 1714  *  EOB_ACT_END_OF_FILE - end of file
 1715  */
 1716 static int yy_get_next_buffer (void)
 1717 {
 1718         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
 1719     register char *source = (yytext_ptr);
 1720     register int number_to_move, i;
 1721     int ret_val;
 1722 
 1723     if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
 1724         YY_FATAL_ERROR(
 1725         "fatal flex scanner internal error--end of buffer missed" );
 1726 
 1727     if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
 1728         { /* Don't try to fill the buffer, so this is an EOF. */
 1729         if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
 1730             {
 1731             /* We matched a single character, the EOB, so
 1732              * treat this as a final EOF.
 1733              */
 1734             return EOB_ACT_END_OF_FILE;
 1735             }
 1736 
 1737         else
 1738             {
 1739             /* We matched some text prior to the EOB, first
 1740              * process it.
 1741              */
 1742             return EOB_ACT_LAST_MATCH;
 1743             }
 1744         }
 1745 
 1746     /* Try to read more data. */
 1747 
 1748     /* First move last chars to start of buffer. */
 1749     number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
 1750 
 1751     for ( i = 0; i < number_to_move; ++i )
 1752         *(dest++) = *(source++);
 1753 
 1754     if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
 1755         /* don't do the read, it's not guaranteed to return an EOF,
 1756          * just force an EOF
 1757          */
 1758         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
 1759 
 1760     else
 1761         {
 1762             yy_size_t num_to_read =
 1763             YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 1764 
 1765         while ( num_to_read <= 0 )
 1766             { /* Not enough room in the buffer - grow it. */
 1767 
 1768             /* just a shorter name for the current buffer */
 1769             YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
 1770 
 1771             int yy_c_buf_p_offset =
 1772                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
 1773 
 1774             if ( b->yy_is_our_buffer )
 1775                 {
 1776                 yy_size_t new_size = b->yy_buf_size * 2;
 1777 
 1778                 if ( new_size <= 0 )
 1779                     b->yy_buf_size += b->yy_buf_size / 8;
 1780                 else
 1781                     b->yy_buf_size *= 2;
 1782 
 1783                 b->yy_ch_buf = (char *)
 1784                     /* Include room in for 2 EOB chars. */
 1785                     yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
 1786                 }
 1787             else
 1788                 /* Can't grow it, we don't own it. */
 1789                 b->yy_ch_buf = 0;
 1790 
 1791             if ( ! b->yy_ch_buf )
 1792                 YY_FATAL_ERROR(
 1793                 "fatal error - scanner input buffer overflow" );
 1794 
 1795             (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
 1796 
 1797             num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
 1798                         number_to_move - 1;
 1799 
 1800             }
 1801 
 1802         if ( num_to_read > YY_READ_BUF_SIZE )
 1803             num_to_read = YY_READ_BUF_SIZE;
 1804 
 1805         /* Read in more data. */
 1806         YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
 1807             (yy_n_chars), num_to_read );
 1808 
 1809         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 1810         }
 1811 
 1812     if ( (yy_n_chars) == 0 )
 1813         {
 1814         if ( number_to_move == YY_MORE_ADJ )
 1815             {
 1816             ret_val = EOB_ACT_END_OF_FILE;
 1817             yyrestart(yyin  );
 1818             }
 1819 
 1820         else
 1821             {
 1822             ret_val = EOB_ACT_LAST_MATCH;
 1823             YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
 1824                 YY_BUFFER_EOF_PENDING;
 1825             }
 1826         }
 1827 
 1828     else
 1829         ret_val = EOB_ACT_CONTINUE_SCAN;
 1830 
 1831     if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 1832         /* Extend the array by 50%, plus the number we really need. */
 1833         yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
 1834         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
 1835         if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 1836             YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
 1837     }
 1838 
 1839     (yy_n_chars) += number_to_move;
 1840     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
 1841     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
 1842 
 1843     (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
 1844 
 1845     return ret_val;
 1846 }
 1847 
 1848 /* yy_get_previous_state - get the state just before the EOB char was reached */
 1849 
 1850     static yy_state_type yy_get_previous_state (void)
 1851 {
 1852     register yy_state_type yy_current_state;
 1853     register char *yy_cp;
 1854     
 1855     yy_current_state = (yy_start);
 1856 
 1857     for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
 1858         {
 1859         register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
 1860         if ( yy_accept[yy_current_state] )
 1861             {
 1862             (yy_last_accepting_state) = yy_current_state;
 1863             (yy_last_accepting_cpos) = yy_cp;
 1864             }
 1865         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 1866             {
 1867             yy_current_state = (int) yy_def[yy_current_state];
 1868             if ( yy_current_state >= 571 )
 1869                 yy_c = yy_meta[(unsigned int) yy_c];
 1870             }
 1871         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 1872         }
 1873 
 1874     return yy_current_state;
 1875 }
 1876 
 1877 /* yy_try_NUL_trans - try to make a transition on the NUL character
 1878  *
 1879  * synopsis
 1880  *  next_state = yy_try_NUL_trans( current_state );
 1881  */
 1882     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 1883 {
 1884     register int yy_is_jam;
 1885         register char *yy_cp = (yy_c_buf_p);
 1886 
 1887     register YY_CHAR yy_c = 1;
 1888     if ( yy_accept[yy_current_state] )
 1889         {
 1890         (yy_last_accepting_state) = yy_current_state;
 1891         (yy_last_accepting_cpos) = yy_cp;
 1892         }
 1893     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 1894         {
 1895         yy_current_state = (int) yy_def[yy_current_state];
 1896         if ( yy_current_state >= 571 )
 1897             yy_c = yy_meta[(unsigned int) yy_c];
 1898         }
 1899     yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 1900     yy_is_jam = (yy_current_state == 570);
 1901 
 1902     return yy_is_jam ? 0 : yy_current_state;
 1903 }
 1904 
 1905     static void yyunput (int c, register char * yy_bp )
 1906 {
 1907     register char *yy_cp;
 1908     
 1909     yy_cp = (yy_c_buf_p);
 1910 
 1911     /* undo effects of setting up yytext */
 1912     *yy_cp = (yy_hold_char);
 1913 
 1914     if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 1915         { /* need to shift things up to make room */
 1916         /* +2 for EOB chars. */
 1917         register yy_size_t number_to_move = (yy_n_chars) + 2;
 1918         register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
 1919                     YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
 1920         register char *source =
 1921                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
 1922 
 1923         while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 1924             *--dest = *--source;
 1925 
 1926         yy_cp += (int) (dest - source);
 1927         yy_bp += (int) (dest - source);
 1928         YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
 1929             (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
 1930 
 1931         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 1932             YY_FATAL_ERROR( "flex scanner push-back overflow" );
 1933         }
 1934 
 1935     *--yy_cp = (char) c;
 1936 
 1937     (yytext_ptr) = yy_bp;
 1938     (yy_hold_char) = *yy_cp;
 1939     (yy_c_buf_p) = yy_cp;
 1940 }
 1941 
 1942 #ifndef YY_NO_INPUT
 1943 #ifdef __cplusplus
 1944     static int yyinput (void)
 1945 #else
 1946     static int input  (void)
 1947 #endif
 1948 
 1949 {
 1950     int c;
 1951     
 1952     *(yy_c_buf_p) = (yy_hold_char);
 1953 
 1954     if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
 1955         {
 1956         /* yy_c_buf_p now points to the character we want to return.
 1957          * If this occurs *before* the EOB characters, then it's a
 1958          * valid NUL; if not, then we've hit the end of the buffer.
 1959          */
 1960         if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
 1961             /* This was really a NUL. */
 1962             *(yy_c_buf_p) = '\0';
 1963 
 1964         else
 1965             { /* need more input */
 1966             yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
 1967             ++(yy_c_buf_p);
 1968 
 1969             switch ( yy_get_next_buffer(  ) )
 1970                 {
 1971                 case EOB_ACT_LAST_MATCH:
 1972                     /* This happens because yy_g_n_b()
 1973                      * sees that we've accumulated a
 1974                      * token and flags that we need to
 1975                      * try matching the token before
 1976                      * proceeding.  But for input(),
 1977                      * there's no matching to consider.
 1978                      * So convert the EOB_ACT_LAST_MATCH
 1979                      * to EOB_ACT_END_OF_FILE.
 1980                      */
 1981 
 1982                     /* Reset buffer status. */
 1983                     yyrestart(yyin );
 1984 
 1985                     /*FALLTHROUGH*/
 1986 
 1987                 case EOB_ACT_END_OF_FILE:
 1988                     {
 1989                     if ( yywrap( ) )
 1990                         return 0;
 1991 
 1992                     if ( ! (yy_did_buffer_switch_on_eof) )
 1993                         YY_NEW_FILE;
 1994 #ifdef __cplusplus
 1995                     return yyinput();
 1996 #else
 1997                     return input();
 1998 #endif
 1999                     }
 2000 
 2001                 case EOB_ACT_CONTINUE_SCAN:
 2002                     (yy_c_buf_p) = (yytext_ptr) + offset;
 2003                     break;
 2004                 }
 2005             }
 2006         }
 2007 
 2008     c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
 2009     *(yy_c_buf_p) = '\0';   /* preserve yytext */
 2010     (yy_hold_char) = *++(yy_c_buf_p);
 2011 
 2012     return c;
 2013 }
 2014 #endif  /* ifndef YY_NO_INPUT */
 2015 
 2016 /** Immediately switch to a different input stream.
 2017  * @param input_file A readable stream.
 2018  * 
 2019  * @note This function does not reset the start condition to @c INITIAL .
 2020  */
 2021     void yyrestart  (FILE * input_file )
 2022 {
 2023     
 2024     if ( ! YY_CURRENT_BUFFER ){
 2025         yyensure_buffer_stack ();
 2026         YY_CURRENT_BUFFER_LVALUE =
 2027             yy_create_buffer(yyin,YY_BUF_SIZE );
 2028     }
 2029 
 2030     yy_init_buffer(YY_CURRENT_BUFFER,input_file );
 2031     yy_load_buffer_state( );
 2032 }
 2033 
 2034 /** Switch to a different input buffer.
 2035  * @param new_buffer The new input buffer.
 2036  * 
 2037  */
 2038     void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 2039 {
 2040     
 2041     /* TODO. We should be able to replace this entire function body
 2042      * with
 2043      *      yypop_buffer_state();
 2044      *      yypush_buffer_state(new_buffer);
 2045      */
 2046     yyensure_buffer_stack ();
 2047     if ( YY_CURRENT_BUFFER == new_buffer )
 2048         return;
 2049 
 2050     if ( YY_CURRENT_BUFFER )
 2051         {
 2052         /* Flush out information for old buffer. */
 2053         *(yy_c_buf_p) = (yy_hold_char);
 2054         YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 2055         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 2056         }
 2057 
 2058     YY_CURRENT_BUFFER_LVALUE = new_buffer;
 2059     yy_load_buffer_state( );
 2060 
 2061     /* We don't actually know whether we did this switch during
 2062      * EOF (yywrap()) processing, but the only time this flag
 2063      * is looked at is after yywrap() is called, so it's safe
 2064      * to go ahead and always set it.
 2065      */
 2066     (yy_did_buffer_switch_on_eof) = 1;
 2067 }
 2068 
 2069 static void yy_load_buffer_state  (void)
 2070 {
 2071         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 2072     (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
 2073     yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
 2074     (yy_hold_char) = *(yy_c_buf_p);
 2075 }
 2076 
 2077 /** Allocate and initialize an input buffer state.
 2078  * @param file A readable stream.
 2079  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
 2080  * 
 2081  * @return the allocated buffer state.
 2082  */
 2083     YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
 2084 {
 2085     YY_BUFFER_STATE b;
 2086     
 2087     b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
 2088     if ( ! b )
 2089         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 2090 
 2091     b->yy_buf_size = size;
 2092 
 2093     /* yy_ch_buf has to be 2 characters longer than the size given because
 2094      * we need to put in 2 end-of-buffer characters.
 2095      */
 2096     b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
 2097     if ( ! b->yy_ch_buf )
 2098         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 2099 
 2100     b->yy_is_our_buffer = 1;
 2101 
 2102     yy_init_buffer(b,file );
 2103 
 2104     return b;
 2105 }
 2106 
 2107 /** Destroy the buffer.
 2108  * @param b a buffer created with yy_create_buffer()
 2109  * 
 2110  */
 2111     void yy_delete_buffer (YY_BUFFER_STATE  b )
 2112 {
 2113     
 2114     if ( ! b )
 2115         return;
 2116 
 2117     if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
 2118         YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 2119 
 2120     if ( b->yy_is_our_buffer )
 2121         yyfree((void *) b->yy_ch_buf  );
 2122 
 2123     yyfree((void *) b  );
 2124 }
 2125 
 2126 #ifndef __cplusplus
 2127 extern int isatty (int );
 2128 #endif /* __cplusplus */
 2129     
 2130 /* Initializes or reinitializes a buffer.
 2131  * This function is sometimes called more than once on the same buffer,
 2132  * such as during a yyrestart() or at EOF.
 2133  */
 2134     static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 2135 
 2136 {
 2137     int oerrno = errno;
 2138     
 2139     yy_flush_buffer(b );
 2140 
 2141     b->yy_input_file = file;
 2142     b->yy_fill_buffer = 1;
 2143 
 2144     /* If b is the current buffer, then yy_init_buffer was _probably_
 2145      * called from yyrestart() or through yy_get_next_buffer.
 2146      * In that case, we don't want to reset the lineno or column.
 2147      */
 2148     if (b != YY_CURRENT_BUFFER){
 2149         b->yy_bs_lineno = 1;
 2150         b->yy_bs_column = 0;
 2151     }
 2152 
 2153         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
 2154     
 2155     errno = oerrno;
 2156 }
 2157 
 2158 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
 2159  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
 2160  * 
 2161  */
 2162     void yy_flush_buffer (YY_BUFFER_STATE  b )
 2163 {
 2164         if ( ! b )
 2165         return;
 2166 
 2167     b->yy_n_chars = 0;
 2168 
 2169     /* We always need two end-of-buffer characters.  The first causes
 2170      * a transition to the end-of-buffer state.  The second causes
 2171      * a jam in that state.
 2172      */
 2173     b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
 2174     b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
 2175 
 2176     b->yy_buf_pos = &b->yy_ch_buf[0];
 2177 
 2178     b->yy_at_bol = 1;
 2179     b->yy_buffer_status = YY_BUFFER_NEW;
 2180 
 2181     if ( b == YY_CURRENT_BUFFER )
 2182         yy_load_buffer_state( );
 2183 }
 2184 
 2185 /** Pushes the new state onto the stack. The new state becomes
 2186  *  the current state. This function will allocate the stack
 2187  *  if necessary.
 2188  *  @param new_buffer The new state.
 2189  *  
 2190  */
 2191 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
 2192 {
 2193         if (new_buffer == NULL)
 2194         return;
 2195 
 2196     yyensure_buffer_stack();
 2197 
 2198     /* This block is copied from yy_switch_to_buffer. */
 2199     if ( YY_CURRENT_BUFFER )
 2200         {
 2201         /* Flush out information for old buffer. */
 2202         *(yy_c_buf_p) = (yy_hold_char);
 2203         YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 2204         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 2205         }
 2206 
 2207     /* Only push if top exists. Otherwise, replace top. */
 2208     if (YY_CURRENT_BUFFER)
 2209         (yy_buffer_stack_top)++;
 2210     YY_CURRENT_BUFFER_LVALUE = new_buffer;
 2211 
 2212     /* copied from yy_switch_to_buffer. */
 2213     yy_load_buffer_state( );
 2214     (yy_did_buffer_switch_on_eof) = 1;
 2215 }
 2216 
 2217 /** Removes and deletes the top of the stack, if present.
 2218  *  The next element becomes the new top.
 2219  *  
 2220  */
 2221 void yypop_buffer_state (void)
 2222 {
 2223         if (!YY_CURRENT_BUFFER)
 2224         return;
 2225 
 2226     yy_delete_buffer(YY_CURRENT_BUFFER );
 2227     YY_CURRENT_BUFFER_LVALUE = NULL;
 2228     if ((yy_buffer_stack_top) > 0)
 2229         --(yy_buffer_stack_top);
 2230 
 2231     if (YY_CURRENT_BUFFER) {
 2232         yy_load_buffer_state( );
 2233         (yy_did_buffer_switch_on_eof) = 1;
 2234     }
 2235 }
 2236 
 2237 /* Allocates the stack if it does not exist.
 2238  *  Guarantees space for at least one push.
 2239  */
 2240 static void yyensure_buffer_stack (void)
 2241 {
 2242     yy_size_t num_to_alloc;
 2243     
 2244     if (!(yy_buffer_stack)) {
 2245 
 2246         /* First allocation is just for 2 elements, since we don't know if this
 2247          * scanner will even need a stack. We use 2 instead of 1 to avoid an
 2248          * immediate realloc on the next call.
 2249          */
 2250         num_to_alloc = 1;
 2251         (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
 2252                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
 2253                                 );
 2254         if ( ! (yy_buffer_stack) )
 2255             YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 2256                                   
 2257         memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 2258                 
 2259         (yy_buffer_stack_max) = num_to_alloc;
 2260         (yy_buffer_stack_top) = 0;
 2261         return;
 2262     }
 2263 
 2264     if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 2265 
 2266         /* Increase the buffer to prepare for a possible push. */
 2267         int grow_size = 8 /* arbitrary grow size */;
 2268 
 2269         num_to_alloc = (yy_buffer_stack_max) + grow_size;
 2270         (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
 2271                                 ((yy_buffer_stack),
 2272                                 num_to_alloc * sizeof(struct yy_buffer_state*)
 2273                                 );
 2274         if ( ! (yy_buffer_stack) )
 2275             YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 2276 
 2277         /* zero only the new slots.*/
 2278         memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
 2279         (yy_buffer_stack_max) = num_to_alloc;
 2280     }
 2281 }
 2282 
 2283 /** Setup the input buffer state to scan directly from a user-specified character buffer.
 2284  * @param base the character buffer
 2285  * @param size the size in bytes of the character buffer
 2286  * 
 2287  * @return the newly allocated buffer state object. 
 2288  */
 2289 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 2290 {
 2291     YY_BUFFER_STATE b;
 2292     
 2293     if ( size < 2 ||
 2294          base[size-2] != YY_END_OF_BUFFER_CHAR ||
 2295          base[size-1] != YY_END_OF_BUFFER_CHAR )
 2296         /* They forgot to leave room for the EOB's. */
 2297         return 0;
 2298 
 2299     b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
 2300     if ( ! b )
 2301         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 2302 
 2303     b->yy_buf_size = size - 2;  /* "- 2" to take care of EOB's */
 2304     b->yy_buf_pos = b->yy_ch_buf = base;
 2305     b->yy_is_our_buffer = 0;
 2306     b->yy_input_file = 0;
 2307     b->yy_n_chars = b->yy_buf_size;
 2308     b->yy_is_interactive = 0;
 2309     b->yy_at_bol = 1;
 2310     b->yy_fill_buffer = 0;
 2311     b->yy_buffer_status = YY_BUFFER_NEW;
 2312 
 2313     yy_switch_to_buffer(b  );
 2314 
 2315     return b;
 2316 }
 2317 
 2318 /** Setup the input buffer state to scan a string. The next call to yylex() will
 2319  * scan from a @e copy of @a str.
 2320  * @param yystr a NUL-terminated string to scan
 2321  * 
 2322  * @return the newly allocated buffer state object.
 2323  * @note If you want to scan bytes that may contain NUL values, then use
 2324  *       yy_scan_bytes() instead.
 2325  */
 2326 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 2327 {
 2328     
 2329     return yy_scan_bytes(yystr,strlen(yystr) );
 2330 }
 2331 
 2332 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
 2333  * scan from a @e copy of @a bytes.
 2334  * @param bytes the byte buffer to scan
 2335  * @param len the number of bytes in the buffer pointed to by @a bytes.
 2336  * 
 2337  * @return the newly allocated buffer state object.
 2338  */
 2339 YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 2340 {
 2341     YY_BUFFER_STATE b;
 2342     char *buf;
 2343     yy_size_t n, i;
 2344     
 2345     /* Get memory for full buffer, including space for trailing EOB's. */
 2346     n = _yybytes_len + 2;
 2347     buf = (char *) yyalloc(n  );
 2348     if ( ! buf )
 2349         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 2350 
 2351     for ( i = 0; i < _yybytes_len; ++i )
 2352         buf[i] = yybytes[i];
 2353 
 2354     buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 2355 
 2356     b = yy_scan_buffer(buf,n );
 2357     if ( ! b )
 2358         YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
 2359 
 2360     /* It's okay to grow etc. this buffer, and we should throw it
 2361      * away when we're done.
 2362      */
 2363     b->yy_is_our_buffer = 1;
 2364 
 2365     return b;
 2366 }
 2367 
 2368 #ifndef YY_EXIT_FAILURE
 2369 #define YY_EXIT_FAILURE 2
 2370 #endif
 2371 
 2372 static void yy_fatal_error (yyconst char* msg )
 2373 {
 2374         (void) fprintf( stderr, "%s\n", msg );
 2375     exit( YY_EXIT_FAILURE );
 2376 }
 2377 
 2378 /* Redefine yyless() so it works in section 3 code. */
 2379 
 2380 #undef yyless
 2381 #define yyless(n) \
 2382     do \
 2383         { \
 2384         /* Undo effects of setting up yytext. */ \
 2385         int yyless_macro_arg = (n); \
 2386         YY_LESS_LINENO(yyless_macro_arg);\
 2387         yytext[yyleng] = (yy_hold_char); \
 2388         (yy_c_buf_p) = yytext + yyless_macro_arg; \
 2389         (yy_hold_char) = *(yy_c_buf_p); \
 2390         *(yy_c_buf_p) = '\0'; \
 2391         yyleng = yyless_macro_arg; \
 2392         } \
 2393     while ( 0 )
 2394 
 2395 /* Accessor  methods (get/set functions) to struct members. */
 2396 
 2397 /** Get the current line number.
 2398  * 
 2399  */
 2400 int yyget_lineno  (void)
 2401 {
 2402         
 2403     return yylineno;
 2404 }
 2405 
 2406 /** Get the input stream.
 2407  * 
 2408  */
 2409 FILE *yyget_in  (void)
 2410 {
 2411         return yyin;
 2412 }
 2413 
 2414 /** Get the output stream.
 2415  * 
 2416  */
 2417 FILE *yyget_out  (void)
 2418 {
 2419         return yyout;
 2420 }
 2421 
 2422 /** Get the length of the current token.
 2423  * 
 2424  */
 2425 yy_size_t yyget_leng  (void)
 2426 {
 2427         return yyleng;
 2428 }
 2429 
 2430 /** Get the current token.
 2431  * 
 2432  */
 2433 
 2434 char *yyget_text  (void)
 2435 {
 2436         return yytext;
 2437 }
 2438 
 2439 /** Set the current line number.
 2440  * @param line_number
 2441  * 
 2442  */
 2443 void yyset_lineno (int  line_number )
 2444 {
 2445     
 2446     yylineno = line_number;
 2447 }
 2448 
 2449 /** Set the input stream. This does not discard the current
 2450  * input buffer.
 2451  * @param in_str A readable stream.
 2452  * 
 2453  * @see yy_switch_to_buffer
 2454  */
 2455 void yyset_in (FILE *  in_str )
 2456 {
 2457         yyin = in_str ;
 2458 }
 2459 
 2460 void yyset_out (FILE *  out_str )
 2461 {
 2462         yyout = out_str ;
 2463 }
 2464 
 2465 int yyget_debug  (void)
 2466 {
 2467         return yy_flex_debug;
 2468 }
 2469 
 2470 void yyset_debug (int  bdebug )
 2471 {
 2472         yy_flex_debug = bdebug ;
 2473 }
 2474 
 2475 static int yy_init_globals (void)
 2476 {
 2477         /* Initialization is the same as for the non-reentrant scanner.
 2478      * This function is called from yylex_destroy(), so don't allocate here.
 2479      */
 2480 
 2481     (yy_buffer_stack) = 0;
 2482     (yy_buffer_stack_top) = 0;
 2483     (yy_buffer_stack_max) = 0;
 2484     (yy_c_buf_p) = (char *) 0;
 2485     (yy_init) = 0;
 2486     (yy_start) = 0;
 2487 
 2488 /* Defined in main.c */
 2489 #ifdef YY_STDINIT
 2490     yyin = stdin;
 2491     yyout = stdout;
 2492 #else
 2493     yyin = (FILE *) 0;
 2494     yyout = (FILE *) 0;
 2495 #endif
 2496 
 2497     /* For future reference: Set errno on error, since we are called by
 2498      * yylex_init()
 2499      */
 2500     return 0;
 2501 }
 2502 
 2503 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
 2504 int yylex_destroy  (void)
 2505 {
 2506     
 2507     /* Pop the buffer stack, destroying each element. */
 2508     while(YY_CURRENT_BUFFER){
 2509         yy_delete_buffer(YY_CURRENT_BUFFER  );
 2510         YY_CURRENT_BUFFER_LVALUE = NULL;
 2511         yypop_buffer_state();
 2512     }
 2513 
 2514     /* Destroy the stack itself. */
 2515     yyfree((yy_buffer_stack) );
 2516     (yy_buffer_stack) = NULL;
 2517 
 2518     /* Reset the globals. This is important in a non-reentrant scanner so the next time
 2519      * yylex() is called, initialization will occur. */
 2520     yy_init_globals( );
 2521 
 2522     return 0;
 2523 }
 2524 
 2525 /*
 2526  * Internal utility routines.
 2527  */
 2528 
 2529 #ifndef yytext_ptr
 2530 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 2531 {
 2532     register int i;
 2533     for ( i = 0; i < n; ++i )
 2534         s1[i] = s2[i];
 2535 }
 2536 #endif
 2537 
 2538 #ifdef YY_NEED_STRLEN
 2539 static int yy_flex_strlen (yyconst char * s )
 2540 {
 2541     register int n;
 2542     for ( n = 0; s[n]; ++n )
 2543         ;
 2544 
 2545     return n;
 2546 }
 2547 #endif
 2548 
 2549 void *yyalloc (yy_size_t  size )
 2550 {
 2551     return (void *) malloc( size );
 2552 }
 2553 
 2554 void *yyrealloc  (void * ptr, yy_size_t  size )
 2555 {
 2556     /* The cast to (char *) in the following accommodates both
 2557      * implementations that use char* generic pointers, and those
 2558      * that use void* generic pointers.  It works with the latter
 2559      * because both ANSI C and C++ allow castless assignment from
 2560      * any pointer type to void*, and deal with argument conversions
 2561      * as though doing an assignment.
 2562      */
 2563     return (void *) realloc( (char *) ptr, size );
 2564 }
 2565 
 2566 void yyfree (void * ptr )
 2567 {
 2568     free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
 2569 }
 2570 
 2571 #define YYTABLES_NAME "yytables"
 2572 
 2573 #line 376 "sbr/dtimep.l"
 2574 
 2575 
 2576 /* This is a portable way to squash a warning about the yyunput()
 2577  * function being static but never used. It costs us a tiny amount
 2578  * of extra code in the binary but the other options are:
 2579  *  "%option nounput" which is flex-specific
 2580  *  makefile hackery just to compile dtimep.c with different flags
 2581  */
 2582 void dtimep_yyunput(int c)
 2583 {
 2584     unput(c);
 2585 }
 2586