From 8d313685b094f0ffa020e5707c5857b1a2063d28 Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Wed, 5 May 2010 13:12:42 +0000 Subject: Rename "apic" and "apic_cluster" to "lapic" and "lapic_cluster" in device trees. Adapt sconfig as necessary. Signed-off-by: Patrick Georgi Acked-by: Stefan Reinauer Acked-by: Peter Stuge git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5525 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/sconfig/lex.yy.c_shipped | 248 ++++++++++++++++++++++-------------------- util/sconfig/sconfig.l | 4 +- 2 files changed, 135 insertions(+), 117 deletions(-) (limited to 'util') diff --git a/util/sconfig/lex.yy.c_shipped b/util/sconfig/lex.yy.c_shipped index c43d5bb3bd..64a84bdc66 100644 --- a/util/sconfig/lex.yy.c_shipped +++ b/util/sconfig/lex.yy.c_shipped @@ -33,7 +33,7 @@ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. + * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 @@ -50,10 +50,9 @@ typedef uint32_t flex_uint32_t; typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; +typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -84,6 +83,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -140,7 +141,15 @@ typedef unsigned int flex_uint32_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -161,7 +170,7 @@ extern FILE *yyin, *yyout; #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) - + /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ @@ -223,7 +232,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -368,17 +377,17 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[86] = +static yyconst flex_int16_t yy_accept[87] = { 0, 0, 0, 26, 24, 1, 3, 24, 24, 24, 21, - 21, 19, 22, 22, 22, 22, 22, 24, 24, 24, + 21, 19, 22, 22, 22, 22, 24, 24, 24, 24, 24, 24, 1, 3, 24, 0, 24, 0, 2, 21, - 22, 24, 24, 24, 22, 24, 24, 24, 17, 24, + 22, 24, 24, 22, 24, 24, 24, 17, 24, 24, 24, 7, 24, 24, 24, 23, 23, 20, 24, 24, - 24, 16, 18, 11, 15, 8, 9, 10, 24, 12, - 4, 24, 24, 24, 24, 24, 24, 24, 24, 5, + 16, 18, 11, 15, 24, 8, 9, 10, 24, 4, + 24, 24, 24, 24, 24, 12, 24, 24, 5, 24, 24, 24, 24, 24, 24, 24, 24, 6, 24, 24, - 24, 14, 24, 13, 0 + 24, 14, 24, 24, 13, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -421,76 +430,80 @@ static yyconst flex_int32_t yy_meta[33] = 1, 1 } ; -static yyconst flex_int16_t yy_base[91] = +static yyconst flex_int16_t yy_base[92] = { 0, - 0, 0, 146, 0, 143, 147, 141, 31, 35, 32, - 111, 0, 43, 46, 49, 65, 52, 53, 46, 21, - 126, 0, 139, 147, 62, 135, 76, 136, 147, 0, - 75, 86, 118, 117, 78, 110, 120, 120, 0, 107, - 115, 0, 111, 105, 111, 0, 147, 0, 114, 102, - 106, 0, 0, 0, 0, 0, 113, 0, 104, 111, - 0, 108, 106, 92, 105, 102, 84, 78, 85, 0, - 83, 88, 68, 83, 64, 62, 69, 0, 59, 53, - 54, 0, 39, 0, 147, 41, 109, 111, 113, 115 + 0, 0, 144, 0, 141, 145, 139, 31, 35, 32, + 109, 0, 43, 46, 59, 49, 35, 127, 46, 47, + 123, 0, 136, 145, 71, 132, 75, 133, 145, 0, + 72, 80, 115, 75, 108, 118, 118, 0, 105, 105, + 112, 0, 108, 102, 108, 0, 145, 0, 100, 104, + 0, 0, 0, 0, 103, 0, 110, 0, 101, 0, + 106, 105, 103, 89, 100, 103, 81, 75, 0, 89, + 80, 85, 79, 86, 71, 62, 70, 0, 57, 48, + 35, 0, 44, 15, 0, 145, 34, 106, 108, 110, + 112 + } ; -static yyconst flex_int16_t yy_def[91] = +static yyconst flex_int16_t yy_def[92] = { 0, - 85, 1, 85, 86, 85, 85, 86, 87, 88, 86, - 10, 86, 10, 10, 10, 10, 10, 86, 86, 86, - 86, 86, 85, 85, 87, 89, 88, 90, 85, 10, - 10, 10, 86, 86, 10, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 85, 32, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 0, 85, 85, 85, 85, 85 + 86, 1, 86, 87, 86, 86, 87, 88, 89, 87, + 10, 87, 10, 10, 10, 10, 87, 87, 87, 87, + 87, 87, 86, 86, 88, 90, 89, 91, 86, 10, + 10, 10, 87, 10, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 86, 32, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 0, 86, 86, 86, 86, + 86 + } ; -static yyconst flex_int16_t yy_nxt[180] = +static yyconst flex_int16_t yy_nxt[178] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 10, 12, - 13, 4, 14, 15, 16, 17, 13, 4, 4, 18, - 4, 4, 4, 19, 20, 4, 21, 4, 4, 4, - 4, 4, 26, 26, 43, 22, 28, 29, 30, 30, - 30, 22, 31, 44, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 38, 41, 26, 26, 84, 46, 34, 42, 83, - 33, 31, 31, 31, 37, 82, 39, 28, 29, 40, - 35, 31, 31, 31, 31, 31, 31, 81, 80, 79, - 78, 36, 48, 48, 48, 77, 48, 76, 48, 48, - - 48, 48, 48, 75, 74, 73, 72, 71, 51, 25, - 25, 27, 27, 26, 26, 28, 28, 70, 69, 68, - 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, - 57, 56, 55, 54, 53, 52, 50, 49, 29, 47, - 23, 45, 32, 24, 23, 85, 3, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85 + 13, 4, 13, 14, 15, 16, 13, 4, 4, 17, + 18, 4, 4, 19, 20, 4, 21, 4, 4, 4, + 4, 4, 26, 26, 22, 22, 28, 29, 30, 30, + 30, 85, 31, 37, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 38, 84, + 43, 39, 41, 83, 33, 31, 31, 31, 42, 44, + 82, 36, 26, 26, 34, 46, 28, 29, 31, 31, + 31, 31, 31, 31, 81, 35, 48, 48, 48, 80, + 48, 79, 48, 48, 48, 48, 48, 78, 77, 76, + + 75, 74, 73, 72, 71, 50, 25, 25, 27, 27, + 26, 26, 28, 28, 70, 69, 68, 67, 66, 65, + 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, + 54, 53, 52, 51, 49, 29, 47, 23, 45, 40, + 32, 24, 23, 86, 3, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86 } ; -static yyconst flex_int16_t yy_chk[180] = +static yyconst flex_int16_t yy_chk[178] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 8, 8, 20, 8, 9, 9, 10, 10, - 10, 86, 10, 20, 10, 10, 10, 10, 10, 13, - 13, 13, 14, 14, 14, 15, 15, 15, 17, 17, - 17, 18, 19, 25, 25, 83, 25, 15, 19, 81, - 14, 16, 16, 16, 17, 80, 18, 27, 27, 18, - 16, 31, 31, 31, 35, 35, 35, 79, 77, 76, - 75, 16, 32, 32, 32, 74, 32, 73, 32, 32, - - 32, 32, 32, 72, 71, 69, 68, 67, 35, 87, - 87, 88, 88, 89, 89, 90, 90, 66, 65, 64, - 63, 62, 60, 59, 57, 51, 50, 49, 45, 44, - 43, 41, 40, 38, 37, 36, 34, 33, 28, 26, - 23, 21, 11, 7, 5, 3, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85 + 1, 1, 8, 8, 87, 8, 9, 9, 10, 10, + 10, 84, 10, 17, 10, 10, 10, 10, 10, 13, + 13, 13, 14, 14, 14, 16, 16, 16, 17, 83, + 20, 17, 19, 81, 14, 15, 15, 15, 19, 20, + 80, 16, 25, 25, 15, 25, 27, 27, 31, 31, + 31, 34, 34, 34, 79, 15, 32, 32, 32, 77, + 32, 76, 32, 32, 32, 32, 32, 75, 74, 73, + + 72, 71, 70, 68, 67, 34, 88, 88, 89, 89, + 90, 90, 91, 91, 66, 65, 64, 63, 62, 61, + 59, 57, 55, 50, 49, 45, 44, 43, 41, 40, + 39, 37, 36, 35, 33, 28, 26, 23, 21, 18, + 11, 7, 5, 3, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86 } ; static yy_state_type yy_last_accepting_state; @@ -589,7 +602,7 @@ extern int yywrap (void ); #endif static void yyunput (int c,char *buf_ptr ); - + #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif @@ -610,7 +623,12 @@ static int input (void ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -618,7 +636,7 @@ static int input (void ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -629,7 +647,7 @@ static int input (void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -710,7 +728,7 @@ YY_DECL register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; - + if ( !(yy_init) ) { (yy_init) = 1; @@ -762,13 +780,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 86 ) + if ( yy_current_state >= 87 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 147 ); + while ( yy_base[yy_current_state] != 145 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1172,7 +1190,7 @@ static int yy_get_next_buffer (void) { register yy_state_type yy_current_state; register char *yy_cp; - + yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) @@ -1186,7 +1204,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 86 ) + if ( yy_current_state >= 87 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1214,11 +1232,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 86 ) + if ( yy_current_state >= 87 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 85); + yy_is_jam = (yy_current_state == 86); return yy_is_jam ? 0 : yy_current_state; } @@ -1226,7 +1244,7 @@ static int yy_get_next_buffer (void) static void yyunput (int c, register char * yy_bp ) { register char *yy_cp; - + yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ @@ -1269,7 +1287,7 @@ static int yy_get_next_buffer (void) { int c; - + *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) @@ -1336,12 +1354,12 @@ static int yy_get_next_buffer (void) /** Immediately switch to a different input stream. * @param input_file A readable stream. - * + * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { - + if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = @@ -1354,11 +1372,11 @@ static int yy_get_next_buffer (void) /** Switch to a different input buffer. * @param new_buffer The new input buffer. - * + * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { - + /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); @@ -1398,13 +1416,13 @@ static void yy_load_buffer_state (void) /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * + * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; - + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -1427,11 +1445,11 @@ static void yy_load_buffer_state (void) /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() - * + * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { - + if ( ! b ) return; @@ -1447,7 +1465,7 @@ static void yy_load_buffer_state (void) #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ - + /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. @@ -1456,7 +1474,7 @@ extern int isatty (int ); { int oerrno = errno; - + yy_flush_buffer(b ); b->yy_input_file = file; @@ -1472,13 +1490,13 @@ extern int isatty (int ); } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - + errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * + * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { @@ -1507,7 +1525,7 @@ extern int isatty (int ); * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. - * + * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { @@ -1537,7 +1555,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. - * + * */ void yypop_buffer_state (void) { @@ -1561,7 +1579,7 @@ void yypop_buffer_state (void) static void yyensure_buffer_stack (void) { int num_to_alloc; - + if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this @@ -1574,9 +1592,9 @@ static void yyensure_buffer_stack (void) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -1604,13 +1622,13 @@ static void yyensure_buffer_stack (void) /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. + * + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; - + if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) @@ -1639,22 +1657,22 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan - * + * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { - + return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) @@ -1663,7 +1681,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) char *buf; yy_size_t n; int i; - + /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ); @@ -1717,16 +1735,16 @@ static void yy_fatal_error (yyconst char* msg ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. - * + * */ int yyget_lineno (void) { - + return yylineno; } /** Get the input stream. - * + * */ FILE *yyget_in (void) { @@ -1734,7 +1752,7 @@ FILE *yyget_in (void) } /** Get the output stream. - * + * */ FILE *yyget_out (void) { @@ -1742,7 +1760,7 @@ FILE *yyget_out (void) } /** Get the length of the current token. - * + * */ int yyget_leng (void) { @@ -1750,7 +1768,7 @@ int yyget_leng (void) } /** Get the current token. - * + * */ char *yyget_text (void) @@ -1760,18 +1778,18 @@ char *yyget_text (void) /** Set the current line number. * @param line_number - * + * */ void yyset_lineno (int line_number ) { - + yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. - * + * * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str ) @@ -1825,7 +1843,7 @@ static int yy_init_globals (void) /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { - + /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); diff --git a/util/sconfig/sconfig.l b/util/sconfig/sconfig.l index 2f05d922f0..3d1593acac 100755 --- a/util/sconfig/sconfig.l +++ b/util/sconfig/sconfig.l @@ -36,8 +36,8 @@ off {yylval.number=0; return(BOOL);} pci {yylval.number=PCI; return(BUS);} pnp {yylval.number=PNP; return(BUS);} i2c {yylval.number=I2C; return(BUS);} -apic {yylval.number=APIC; return(BUS);} -apic_cluster {yylval.number=APIC_CLUSTER; return(BUS);} +lapic {yylval.number=APIC; return(BUS);} +lapic_cluster {yylval.number=APIC_CLUSTER; return(BUS);} pci_domain {yylval.number=PCI_DOMAIN; return(BUS);} irq {yylval.number=IRQ; return(RESOURCE);} drq {yylval.number=DRQ; return(RESOURCE);} -- cgit v1.2.3