Merged revisions 7736 via svnmerge from
[asterisk/asterisk.git] / ast_expr2f.c
old mode 100755 (executable)
new mode 100644 (file)
index cf0c2fd..71f62ee
@@ -956,7 +956,7 @@ static yyconst yy_state_type yy_NUL_trans[33] =
 #include <string.h>
 #include <locale.h>
 #include <ctype.h>
-#ifndef SOLARIS
+#if !defined(SOLARIS) && !defined(__CYGWIN__)
 #include <err.h>
 #else
 #define quad_t int64_t
@@ -2156,7 +2156,7 @@ YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yys
 
 /** Setup the input buffer state to scan a string. The next call to ast_yylex() will
  * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
+ * @param yy_str a NUL-terminated string to scan
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
@@ -2332,7 +2332,7 @@ void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
 }
 
 /** Set the current column.
- * @param line_number
+ * @param column_no
  * @param yyscanner The scanner object.
  */
 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
@@ -2562,42 +2562,42 @@ int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
 
 int ast_expr(char *expr, char *buf, int length)
 {
-       struct parse_io *io;
+       struct parse_io io;
+       int return_value = 0;
        
-       io = calloc(sizeof(struct parse_io),1);
-       io->string = expr;  /* to pass to the error routine */
+       memset(&io, 0, sizeof(io));
+       io.string = expr;  /* to pass to the error routine */
        
-       ast_yylex_init(&io->scanner);
+       ast_yylex_init(&io.scanner);
        
-       ast_yy_scan_string(expr, io->scanner);
+       ast_yy_scan_string(expr, io.scanner);
        
-       ast_yyparse ((void *) io);
+       ast_yyparse ((void *) &io);
 
-       ast_yylex_destroy(io->scanner);
+       ast_yylex_destroy(io.scanner);
 
-       if (io->val == NULL) {
+       if (!io.val) {
                if (length > 1) {
                        strcpy(buf, "0");
-                       return 1;
+                       return_value = 1;
                }
        } else {
-               if (io->val->type == AST_EXPR_integer) {
+               if (io.val->type == AST_EXPR_integer) {
                        int res_length;
 
-                       res_length = snprintf(buf, length, "%ld", (long int) io->val->u.i);
-                       return res_length <= length ? res_length : length;
+                       res_length = snprintf(buf, length, "%ld", (long int) io.val->u.i);
+                       return_value = (res_length <= length) ? res_length : length;
                } else {
 #ifdef STANDALONE
-                       strncpy(buf, io->val->u.s, length - 1);
+                       strncpy(buf, io.val->u.s, length - 1);
 #else /* !STANDALONE */
-                       ast_copy_string(buf, io->val->u.s, length);
+                       ast_copy_string(buf, io.val->u.s, length);
 #endif /* STANDALONE */
-                       return strlen(buf);
+                       return_value = strlen(buf);
                }
-               free(io->val);
+               free(io.val);
        }
-       free(io);
-       return 0;
+       return return_value;
 }
 
 int ast_yyerror (const char *s,  yyltype *loc, struct parse_io *parseio )