Print this page
12166 resync smatch to 0.6.1-rc1-il-3


 282                         __get_variable_from_expr(sym_ptr, buf, expr->left, len, complicated, no_parens);
 283                         snprintf(tmp, sizeof(tmp), " %s ", show_special(expr->op));
 284                         append(buf, tmp, len);
 285                 }
 286                 __get_variable_from_expr(NULL, buf, expr->right, len, complicated, no_parens);
 287                 if (array_expr)
 288                         append(buf, "]", len);
 289                 return;
 290         }
 291         case EXPR_VALUE: {
 292                 sval_t sval = {};
 293                 char tmp[25];
 294 
 295                 *complicated = 1;
 296                 if (!get_value(expr, &sval))
 297                         return;
 298                 snprintf(tmp, 25, "%s", sval_to_numstr(sval));
 299                 append(buf, tmp, len);
 300                 return;
 301         }











 302         case EXPR_STRING:
 303                 append(buf, "\"", len);
 304                 if (expr->string)
 305                         append(buf, expr->string->data, len);
 306                 append(buf, "\"", len);
 307                 return;
 308         case EXPR_CALL: {
 309                 struct expression *tmp;
 310                 int i;
 311 
 312                 *complicated = 1;
 313                 __get_variable_from_expr(NULL, buf, expr->fn, len, complicated, no_parens);
 314                 append(buf, "(", len);
 315                 i = 0;
 316                 FOR_EACH_PTR(expr->args, tmp) {
 317                         if (i++)
 318                                 append(buf, ", ", len);
 319                         __get_variable_from_expr(NULL, buf, tmp, len, complicated, no_parens);
 320                 } END_FOR_EACH_PTR(tmp);
 321                 append(buf, ")", len);


1049                         return i;
1050                 i++;
1051         } END_FOR_EACH_PTR(tmp);
1052         return -1;
1053 }
1054 
1055 int get_param_num(struct expression *expr)
1056 {
1057         struct symbol *sym;
1058         char *name;
1059 
1060         if (!cur_func_sym)
1061                 return -1;
1062         name = expr_to_var_sym(expr, &sym);
1063         free_string(name);
1064         if (!sym)
1065                 return -1;
1066         return get_param_num_from_sym(sym);
1067 }
1068 
















1069 int ms_since(struct timeval *start)
1070 {
1071         struct timeval end;
1072         double diff;
1073 
1074         gettimeofday(&end, NULL);
1075         diff = (end.tv_sec - start->tv_sec) * 1000.0;
1076         diff += (end.tv_usec - start->tv_usec) / 1000.0;
1077         return (int)diff;
1078 }
1079 
1080 int parent_is_gone_var_sym(const char *name, struct symbol *sym)
1081 {
1082         if (!name || !sym)
1083                 return 0;
1084 
1085         if (parent_is_null_var_sym(name, sym) ||
1086             parent_is_free_var_sym(name, sym))
1087                 return 1;
1088         return 0;




 282                         __get_variable_from_expr(sym_ptr, buf, expr->left, len, complicated, no_parens);
 283                         snprintf(tmp, sizeof(tmp), " %s ", show_special(expr->op));
 284                         append(buf, tmp, len);
 285                 }
 286                 __get_variable_from_expr(NULL, buf, expr->right, len, complicated, no_parens);
 287                 if (array_expr)
 288                         append(buf, "]", len);
 289                 return;
 290         }
 291         case EXPR_VALUE: {
 292                 sval_t sval = {};
 293                 char tmp[25];
 294 
 295                 *complicated = 1;
 296                 if (!get_value(expr, &sval))
 297                         return;
 298                 snprintf(tmp, 25, "%s", sval_to_numstr(sval));
 299                 append(buf, tmp, len);
 300                 return;
 301         }
 302         case EXPR_FVALUE: {
 303                 sval_t sval = {};
 304                 char tmp[25];
 305 
 306                 *complicated = 1;
 307                 if (!get_value(expr, &sval))
 308                         return;
 309                 snprintf(tmp, 25, "%s", sval_to_numstr(sval));
 310                 append(buf, tmp, len);
 311                 return;
 312         }
 313         case EXPR_STRING:
 314                 append(buf, "\"", len);
 315                 if (expr->string)
 316                         append(buf, expr->string->data, len);
 317                 append(buf, "\"", len);
 318                 return;
 319         case EXPR_CALL: {
 320                 struct expression *tmp;
 321                 int i;
 322 
 323                 *complicated = 1;
 324                 __get_variable_from_expr(NULL, buf, expr->fn, len, complicated, no_parens);
 325                 append(buf, "(", len);
 326                 i = 0;
 327                 FOR_EACH_PTR(expr->args, tmp) {
 328                         if (i++)
 329                                 append(buf, ", ", len);
 330                         __get_variable_from_expr(NULL, buf, tmp, len, complicated, no_parens);
 331                 } END_FOR_EACH_PTR(tmp);
 332                 append(buf, ")", len);


1060                         return i;
1061                 i++;
1062         } END_FOR_EACH_PTR(tmp);
1063         return -1;
1064 }
1065 
1066 int get_param_num(struct expression *expr)
1067 {
1068         struct symbol *sym;
1069         char *name;
1070 
1071         if (!cur_func_sym)
1072                 return -1;
1073         name = expr_to_var_sym(expr, &sym);
1074         free_string(name);
1075         if (!sym)
1076                 return -1;
1077         return get_param_num_from_sym(sym);
1078 }
1079 
1080 struct symbol *get_param_sym_from_num(int num)
1081 {
1082         struct symbol *sym;
1083         int i;
1084 
1085         if (!cur_func_sym)
1086                 return NULL;
1087 
1088         i = 0;
1089         FOR_EACH_PTR(cur_func_sym->ctype.base_type->arguments, sym) {
1090                 if (i++ == num)
1091                         return sym;
1092         } END_FOR_EACH_PTR(sym);
1093         return NULL;
1094 }
1095 
1096 int ms_since(struct timeval *start)
1097 {
1098         struct timeval end;
1099         double diff;
1100 
1101         gettimeofday(&end, NULL);
1102         diff = (end.tv_sec - start->tv_sec) * 1000.0;
1103         diff += (end.tv_usec - start->tv_usec) / 1000.0;
1104         return (int)diff;
1105 }
1106 
1107 int parent_is_gone_var_sym(const char *name, struct symbol *sym)
1108 {
1109         if (!name || !sym)
1110                 return 0;
1111 
1112         if (parent_is_null_var_sym(name, sym) ||
1113             parent_is_free_var_sym(name, sym))
1114                 return 1;
1115         return 0;