mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-25 06:00:36 +00:00 
			
		
		
		
	Allow the REALTIME() function to report errors back to the caller.
Also, do more error checking on the arguments specified to the REALTIME() function and clarify the documentation. While I was editing the file, a few coding guidelines fixups, as well. Review: https://reviewboard.asterisk.org/r/2031/ ........ Merged revisions 369937 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 369938 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369940 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -49,7 +49,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") | |||||||
| 		<syntax> | 		<syntax> | ||||||
| 			<parameter name="family" required="true" /> | 			<parameter name="family" required="true" /> | ||||||
| 			<parameter name="fieldmatch" required="true" /> | 			<parameter name="fieldmatch" required="true" /> | ||||||
| 			<parameter name="value" /> | 			<parameter name="matchvalue" /> | ||||||
| 			<parameter name="delim1|field"> | 			<parameter name="delim1|field"> | ||||||
| 				<para>Use <replaceable>delim1</replaceable> with <replaceable>delim2</replaceable> on | 				<para>Use <replaceable>delim1</replaceable> with <replaceable>delim2</replaceable> on | ||||||
| 				read and <replaceable>field</replaceable> without <replaceable>delim2</replaceable> on | 				read and <replaceable>field</replaceable> without <replaceable>delim2</replaceable> on | ||||||
| @@ -108,7 +108,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") | |||||||
| 		<syntax> | 		<syntax> | ||||||
| 			<parameter name="family" required="true" /> | 			<parameter name="family" required="true" /> | ||||||
| 			<parameter name="fieldmatch" required="true" /> | 			<parameter name="fieldmatch" required="true" /> | ||||||
| 			<parameter name="value" /> | 			<parameter name="matchvalue" /> | ||||||
| 			<parameter name="delim1" /> | 			<parameter name="delim1" /> | ||||||
| 			<parameter name="delim2" /> | 			<parameter name="delim2" /> | ||||||
| 		</syntax> | 		</syntax> | ||||||
| @@ -130,13 +130,13 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") | |||||||
| 		<syntax> | 		<syntax> | ||||||
| 			<parameter name="family" required="true" /> | 			<parameter name="family" required="true" /> | ||||||
| 			<parameter name="fieldmatch" required="true" /> | 			<parameter name="fieldmatch" required="true" /> | ||||||
| 			<parameter name="value" required="true" /> | 			<parameter name="matchvalue" required="true" /> | ||||||
| 			<parameter name="fieldname" required="true" /> | 			<parameter name="fieldname" required="true" /> | ||||||
| 		</syntax> | 		</syntax> | ||||||
| 		<description> | 		<description> | ||||||
| 			<para>This function retrieves a single item, <replaceable>fieldname</replaceable> | 			<para>This function retrieves a single item, <replaceable>fieldname</replaceable> | ||||||
| 			from the RT engine, where <replaceable>fieldmatch</replaceable> contains the value | 			from the RT engine, where <replaceable>fieldmatch</replaceable> contains the value | ||||||
| 			<replaceable>value</replaceable>.  When written to, the REALTIME_FIELD() function | 			<replaceable>matchvalue</replaceable>.  When written to, the REALTIME_FIELD() function | ||||||
| 			performs identically to the REALTIME() function.</para> | 			performs identically to the REALTIME() function.</para> | ||||||
| 		</description> | 		</description> | ||||||
| 		<see-also> | 		<see-also> | ||||||
| @@ -153,12 +153,12 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") | |||||||
| 		<syntax> | 		<syntax> | ||||||
| 			<parameter name="family" required="true" /> | 			<parameter name="family" required="true" /> | ||||||
| 			<parameter name="fieldmatch" required="true" /> | 			<parameter name="fieldmatch" required="true" /> | ||||||
| 			<parameter name="value" required="true" /> | 			<parameter name="matchvalue" required="true" /> | ||||||
| 		</syntax> | 		</syntax> | ||||||
| 		<description> | 		<description> | ||||||
| 			<para>This function retrieves a single record from the RT engine, where | 			<para>This function retrieves a single record from the RT engine, where | ||||||
| 			<replaceable>fieldmatch</replaceable> contains the value | 			<replaceable>fieldmatch</replaceable> contains the value | ||||||
| 			<replaceable>value</replaceable> and formats the output suitably, such that | 			<replaceable>matchvalue</replaceable> and formats the output suitably, such that | ||||||
| 			it can be assigned to the HASH() function.  The HASH() function then provides | 			it can be assigned to the HASH() function.  The HASH() function then provides | ||||||
| 			a suitable method for retrieving each field value of the record.</para> | 			a suitable method for retrieving each field value of the record.</para> | ||||||
| 		</description> | 		</description> | ||||||
| @@ -190,7 +190,7 @@ static int function_realtime_read(struct ast_channel *chan, const char *cmd, cha | |||||||
| 	); | 	); | ||||||
|  |  | ||||||
| 	if (ast_strlen_zero(data)) { | 	if (ast_strlen_zero(data)) { | ||||||
| 		ast_log(LOG_WARNING, "Syntax: REALTIME(family,fieldmatch[,value[,delim1[,delim2]]]) - missing argument!\n"); | 		ast_log(LOG_WARNING, "Syntax: REALTIME(family,fieldmatch[,matchvalue[,delim1[,delim2]]]) - missing argument!\n"); | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -243,25 +243,32 @@ static int function_realtime_write(struct ast_channel *chan, const char *cmd, ch | |||||||
| 	); | 	); | ||||||
|  |  | ||||||
| 	if (ast_strlen_zero(data)) { | 	if (ast_strlen_zero(data)) { | ||||||
| 		ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,value,newcol) - missing argument!\n", cmd); | 		ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue,updatecol) - missing argument!\n", cmd); | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (chan) |  | ||||||
| 		ast_autoservice_start(chan); |  | ||||||
|  |  | ||||||
| 	AST_STANDARD_APP_ARGS(args, data); | 	AST_STANDARD_APP_ARGS(args, data); | ||||||
|  |  | ||||||
|  | 	if (ast_strlen_zero(args.fieldmatch) || ast_strlen_zero(args.field)) { | ||||||
|  | 		ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue,updatecol) - missing argument!\n", cmd); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (chan) { | ||||||
|  | 		ast_autoservice_start(chan); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	res = ast_update_realtime(args.family, args.fieldmatch, args.value, args.field, (char *)value, SENTINEL); | 	res = ast_update_realtime(args.family, args.fieldmatch, args.value, args.field, (char *)value, SENTINEL); | ||||||
|  |  | ||||||
| 	if (res < 0) { | 	if (res < 0) { | ||||||
| 		ast_log(LOG_WARNING, "Failed to update. Check the debug log for possible data repository related entries.\n"); | 		ast_log(LOG_WARNING, "Failed to update. Check the debug log for possible data repository related entries.\n"); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (chan) | 	if (chan) { | ||||||
| 		ast_autoservice_stop(chan); | 		ast_autoservice_stop(chan); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	return 0; | 	return res; | ||||||
| } | } | ||||||
|  |  | ||||||
| static int realtimefield_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len) | static int realtimefield_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len) | ||||||
| @@ -286,14 +293,14 @@ static int realtimefield_read(struct ast_channel *chan, const char *cmd, char *d | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (ast_strlen_zero(data)) { | 	if (ast_strlen_zero(data)) { | ||||||
| 		ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,value%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : ""); | 		ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : ""); | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	AST_STANDARD_APP_ARGS(args, data); | 	AST_STANDARD_APP_ARGS(args, data); | ||||||
|  |  | ||||||
| 	if ((which == rtfield && args.argc != 4) || (which == rthash && args.argc != 3)) { | 	if ((which == rtfield && args.argc != 4) || (which == rthash && args.argc != 3)) { | ||||||
| 		ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,value%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : ""); | 		ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : ""); | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -403,7 +410,7 @@ static int function_realtime_readdestroy(struct ast_channel *chan, const char *c | |||||||
| 	); | 	); | ||||||
|  |  | ||||||
| 	if (ast_strlen_zero(data)) { | 	if (ast_strlen_zero(data)) { | ||||||
| 		ast_log(LOG_WARNING, "Syntax: REALTIME_DESTROY(family,fieldmatch[,value[,delim1[,delim2]]]) - missing argument!\n"); | 		ast_log(LOG_WARNING, "Syntax: REALTIME_DESTROY(family,fieldmatch[,matchvalue[,delim1[,delim2]]]) - missing argument!\n"); | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										708
									
								
								main/ast_expr2.c
									
									
									
									
									
								
							
							
						
						
									
										708
									
								
								main/ast_expr2.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,8 +1,10 @@ | |||||||
| /* A Bison parser, made by GNU Bison 2.5.  */ |  | ||||||
|  |  | ||||||
| /* Bison interface for Yacc-like parsers in C | /* A Bison parser, made by GNU Bison 2.4.1.  */ | ||||||
|  |  | ||||||
|       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. | /* Skeleton interface for Bison's Yacc-like parsers in C | ||||||
|  |     | ||||||
|  |       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 | ||||||
|  |    Free Software Foundation, Inc. | ||||||
|     |     | ||||||
|    This program is free software: you can redistribute it and/or modify |    This program is free software: you can redistribute it and/or modify | ||||||
|    it under the terms of the GNU General Public License as published by |    it under the terms of the GNU General Public License as published by | ||||||
| @@ -69,7 +71,7 @@ | |||||||
| typedef union YYSTYPE | typedef union YYSTYPE | ||||||
| { | { | ||||||
|  |  | ||||||
| /* Line 2068 of yacc.c  */ | /* Line 1676 of yacc.c  */ | ||||||
| #line 345 "ast_expr2.y" | #line 345 "ast_expr2.y" | ||||||
|  |  | ||||||
| 	struct val *val; | 	struct val *val; | ||||||
| @@ -77,8 +79,8 @@ typedef union YYSTYPE | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| /* Line 2068 of yacc.c  */ | /* Line 1676 of yacc.c  */ | ||||||
| #line 82 "ast_expr2.h" | #line 84 "ast_expr2.h" | ||||||
| } YYSTYPE; | } YYSTYPE; | ||||||
| # define YYSTYPE_IS_TRIVIAL 1 | # define YYSTYPE_IS_TRIVIAL 1 | ||||||
| # define yystype YYSTYPE /* obsolescent; will be withdrawn */ | # define yystype YYSTYPE /* obsolescent; will be withdrawn */ | ||||||
|   | |||||||
| @@ -56,7 +56,6 @@ 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 short int flex_uint16_t; | ||||||
| typedef unsigned int flex_uint32_t; | typedef unsigned int flex_uint32_t; | ||||||
| #endif /* ! C99 */ |  | ||||||
|  |  | ||||||
| /* Limits of integral types. */ | /* Limits of integral types. */ | ||||||
| #ifndef INT8_MIN | #ifndef INT8_MIN | ||||||
| @@ -87,6 +86,8 @@ typedef unsigned int flex_uint32_t; | |||||||
| #define UINT32_MAX             (4294967295U) | #define UINT32_MAX             (4294967295U) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #endif /* ! C99 */ | ||||||
|  |  | ||||||
| #endif /* ! FLEXINT_H */ | #endif /* ! FLEXINT_H */ | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| @@ -160,7 +161,15 @@ typedef void* yyscan_t; | |||||||
|  |  | ||||||
| /* Size of default input buffer. */ | /* Size of default input buffer. */ | ||||||
| #ifndef YY_BUF_SIZE | #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 | #define YY_BUF_SIZE 16384 | ||||||
|  | #endif /* __ia64__ */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* The state buf must be large enough to hold one state per character in the main buffer. | /* The state buf must be large enough to hold one state per character in the main buffer. | ||||||
| @@ -600,7 +609,7 @@ int ast_yyget_column(yyscan_t yyscanner); | |||||||
| static int curlycount = 0; | static int curlycount = 0; | ||||||
| static char *expr2_token_subst(const char *mess); | static char *expr2_token_subst(const char *mess); | ||||||
|  |  | ||||||
| #line 602 "ast_expr2f.c" | #line 611 "ast_expr2f.c" | ||||||
|  |  | ||||||
| #define INITIAL 0 | #define INITIAL 0 | ||||||
| #define var 1 | #define var 1 | ||||||
| @@ -697,10 +706,6 @@ int ast_yyget_lineno (yyscan_t yyscanner ); | |||||||
|  |  | ||||||
| void ast_yyset_lineno (int line_number ,yyscan_t yyscanner ); | void ast_yyset_lineno (int line_number ,yyscan_t yyscanner ); | ||||||
|  |  | ||||||
| int ast_yyget_column  (yyscan_t yyscanner ); |  | ||||||
|  |  | ||||||
| void ast_yyset_column (int column_no ,yyscan_t yyscanner ); |  | ||||||
|  |  | ||||||
| YYSTYPE * ast_yyget_lval (yyscan_t yyscanner ); | YYSTYPE * ast_yyget_lval (yyscan_t yyscanner ); | ||||||
|  |  | ||||||
| void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); | void ast_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); | ||||||
| @@ -743,7 +748,12 @@ static int input (yyscan_t yyscanner ); | |||||||
|  |  | ||||||
| /* Amount of stuff to slurp up with each read. */ | /* Amount of stuff to slurp up with each read. */ | ||||||
| #ifndef YY_READ_BUF_SIZE | #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 | #define YY_READ_BUF_SIZE 8192 | ||||||
|  | #endif /* __ia64__ */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* Copy whatever the last rule matched to the standard output. */ | /* Copy whatever the last rule matched to the standard output. */ | ||||||
| @@ -762,7 +772,7 @@ static int input (yyscan_t yyscanner ); | |||||||
| 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ | 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ | ||||||
| 		{ \ | 		{ \ | ||||||
| 		int c = '*'; \ | 		int c = '*'; \ | ||||||
| 		unsigned n; \ | 		size_t n; \ | ||||||
| 		for ( n = 0; n < max_size && \ | 		for ( n = 0; n < max_size && \ | ||||||
| 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ | 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ | ||||||
| 			buf[n] = (char) c; \ | 			buf[n] = (char) c; \ | ||||||
| @@ -850,7 +860,7 @@ YY_DECL | |||||||
| #line 130 "ast_expr2.fl" | #line 130 "ast_expr2.fl" | ||||||
|  |  | ||||||
|  |  | ||||||
| #line 852 "ast_expr2f.c" | #line 862 "ast_expr2f.c" | ||||||
|  |  | ||||||
|     yylval = yylval_param; |     yylval = yylval_param; | ||||||
|  |  | ||||||
| @@ -1196,7 +1206,7 @@ YY_RULE_SETUP | |||||||
| #line 238 "ast_expr2.fl" | #line 238 "ast_expr2.fl" | ||||||
| ECHO; | ECHO; | ||||||
| 	YY_BREAK | 	YY_BREAK | ||||||
| #line 1198 "ast_expr2f.c" | #line 1208 "ast_expr2f.c" | ||||||
| case YY_STATE_EOF(INITIAL): | case YY_STATE_EOF(INITIAL): | ||||||
| case YY_STATE_EOF(var): | case YY_STATE_EOF(var): | ||||||
| 	yyterminate(); | 	yyterminate(); | ||||||
| @@ -1970,8 +1980,8 @@ YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) | |||||||
|  |  | ||||||
| /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will | /** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will | ||||||
|  * scan from a @e copy of @a bytes. |  * scan from a @e copy of @a bytes. | ||||||
|  * @param bytes the byte buffer to scan |  * @param yybytes the byte buffer to scan | ||||||
|  * @param len the number of bytes in the buffer pointed to by @a bytes. |  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. | ||||||
|  * @param yyscanner The scanner object. |  * @param yyscanner The scanner object. | ||||||
|  * @return the newly allocated buffer state object. |  * @return the newly allocated buffer state object. | ||||||
|  */ |  */ | ||||||
|   | |||||||
| @@ -56,7 +56,6 @@ 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 short int flex_uint16_t; | ||||||
| typedef unsigned int flex_uint32_t; | typedef unsigned int flex_uint32_t; | ||||||
| #endif /* ! C99 */ |  | ||||||
|  |  | ||||||
| /* Limits of integral types. */ | /* Limits of integral types. */ | ||||||
| #ifndef INT8_MIN | #ifndef INT8_MIN | ||||||
| @@ -87,6 +86,8 @@ typedef unsigned int flex_uint32_t; | |||||||
| #define UINT32_MAX             (4294967295U) | #define UINT32_MAX             (4294967295U) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #endif /* ! C99 */ | ||||||
|  |  | ||||||
| #endif /* ! FLEXINT_H */ | #endif /* ! FLEXINT_H */ | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| @@ -160,7 +161,15 @@ typedef void* yyscan_t; | |||||||
|  |  | ||||||
| /* Size of default input buffer. */ | /* Size of default input buffer. */ | ||||||
| #ifndef YY_BUF_SIZE | #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 | #define YY_BUF_SIZE 16384 | ||||||
|  | #endif /* __ia64__ */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* The state buf must be large enough to hold one state per character in the main buffer. | /* The state buf must be large enough to hold one state per character in the main buffer. | ||||||
| @@ -952,7 +961,7 @@ static void pbcwhere(const char *text, int *line, int *col ) | |||||||
| #define	STORE_POS | #define	STORE_POS | ||||||
| #define	STORE_LOC | #define	STORE_LOC | ||||||
| #endif | #endif | ||||||
| #line 954 "ael_lex.c" | #line 963 "ael_lex.c" | ||||||
|  |  | ||||||
| #define INITIAL 0 | #define INITIAL 0 | ||||||
| #define paren 1 | #define paren 1 | ||||||
| @@ -1054,10 +1063,6 @@ int ael_yyget_lineno (yyscan_t yyscanner ); | |||||||
|  |  | ||||||
| void ael_yyset_lineno (int line_number ,yyscan_t yyscanner ); | void ael_yyset_lineno (int line_number ,yyscan_t yyscanner ); | ||||||
|  |  | ||||||
| int ael_yyget_column  (yyscan_t yyscanner ); |  | ||||||
|  |  | ||||||
| void ael_yyset_column (int column_no ,yyscan_t yyscanner ); |  | ||||||
|  |  | ||||||
| YYSTYPE * ael_yyget_lval (yyscan_t yyscanner ); | YYSTYPE * ael_yyget_lval (yyscan_t yyscanner ); | ||||||
|  |  | ||||||
| void ael_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); | void ael_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); | ||||||
| @@ -1100,7 +1105,12 @@ static int input (yyscan_t yyscanner ); | |||||||
|  |  | ||||||
| /* Amount of stuff to slurp up with each read. */ | /* Amount of stuff to slurp up with each read. */ | ||||||
| #ifndef YY_READ_BUF_SIZE | #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 | #define YY_READ_BUF_SIZE 8192 | ||||||
|  | #endif /* __ia64__ */ | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| /* Copy whatever the last rule matched to the standard output. */ | /* Copy whatever the last rule matched to the standard output. */ | ||||||
| @@ -1119,7 +1129,7 @@ static int input (yyscan_t yyscanner ); | |||||||
| 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ | 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ | ||||||
| 		{ \ | 		{ \ | ||||||
| 		int c = '*'; \ | 		int c = '*'; \ | ||||||
| 		unsigned n; \ | 		size_t n; \ | ||||||
| 		for ( n = 0; n < max_size && \ | 		for ( n = 0; n < max_size && \ | ||||||
| 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ | 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ | ||||||
| 			buf[n] = (char) c; \ | 			buf[n] = (char) c; \ | ||||||
| @@ -1207,7 +1217,7 @@ YY_DECL | |||||||
| #line 217 "ael.flex" | #line 217 "ael.flex" | ||||||
|  |  | ||||||
|  |  | ||||||
| #line 1209 "ael_lex.c" | #line 1219 "ael_lex.c" | ||||||
|  |  | ||||||
|     yylval = yylval_param; |     yylval = yylval_param; | ||||||
|  |  | ||||||
| @@ -2041,7 +2051,7 @@ YY_RULE_SETUP | |||||||
| #line 656 "ael.flex" | #line 656 "ael.flex" | ||||||
| YY_FATAL_ERROR( "flex scanner jammed" ); | YY_FATAL_ERROR( "flex scanner jammed" ); | ||||||
| 	YY_BREAK | 	YY_BREAK | ||||||
| #line 2043 "ael_lex.c" | #line 2053 "ael_lex.c" | ||||||
|  |  | ||||||
| 	case YY_END_OF_BUFFER: | 	case YY_END_OF_BUFFER: | ||||||
| 		{ | 		{ | ||||||
| @@ -2812,8 +2822,8 @@ YY_BUFFER_STATE ael_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) | |||||||
|  |  | ||||||
| /** Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will | /** Setup the input buffer state to scan the given bytes. The next call to ael_yylex() will | ||||||
|  * scan from a @e copy of @a bytes. |  * scan from a @e copy of @a bytes. | ||||||
|  * @param bytes the byte buffer to scan |  * @param yybytes the byte buffer to scan | ||||||
|  * @param len the number of bytes in the buffer pointed to by @a bytes. |  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. | ||||||
|  * @param yyscanner The scanner object. |  * @param yyscanner The scanner object. | ||||||
|  * @return the newly allocated buffer state object. |  * @return the newly allocated buffer state object. | ||||||
|  */ |  */ | ||||||
| @@ -3368,7 +3378,9 @@ struct pval *ael2_parse(char *filename, int *errors) | |||||||
| 	if (my_file) | 	if (my_file) | ||||||
| 		free(my_file); | 		free(my_file); | ||||||
| 	my_file = strdup(filename); | 	my_file = strdup(filename); | ||||||
| 	stat(filename, &stats); | 	if (stat(filename, &stats)) { | ||||||
|  | 		ast_log(LOG_WARNING, "failed to populate stats from file '%s'\n", filename); | ||||||
|  | 	} | ||||||
| 	buffer = (char*)malloc(stats.st_size+2); | 	buffer = (char*)malloc(stats.st_size+2); | ||||||
| 	if (fread(buffer, 1, stats.st_size, fin) != stats.st_size) { | 	if (fread(buffer, 1, stats.st_size, fin) != stats.st_size) { | ||||||
| 		ast_log(LOG_ERROR, "fread() failed: %s\n", strerror(errno)); | 		ast_log(LOG_ERROR, "fread() failed: %s\n", strerror(errno)); | ||||||
| @@ -3438,7 +3450,9 @@ static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf, | |||||||
| 		} else { | 		} else { | ||||||
| 			char *buffer; | 			char *buffer; | ||||||
| 			struct stat stats; | 			struct stat stats; | ||||||
| 			stat(fnamebuf2, &stats); | 			if (stat(fnamebuf2, &stats)) { | ||||||
|  | 				ast_log(LOG_WARNING, "Failed to populate stats from file '%s'\n", fnamebuf2); | ||||||
|  | 			} | ||||||
| 			buffer = (char*)malloc(stats.st_size+1); | 			buffer = (char*)malloc(stats.st_size+1); | ||||||
| 			if (fread(buffer, 1, stats.st_size, in1) != stats.st_size) { | 			if (fread(buffer, 1, stats.st_size, in1) != stats.st_size) { | ||||||
| 				ast_log(LOG_ERROR, "fread() failed: %s\n", strerror(errno)); | 				ast_log(LOG_ERROR, "fread() failed: %s\n", strerror(errno)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user