VirtualBox

Changeset 2157 in kBuild for trunk


Ignore:
Timestamp:
Dec 29, 2008 3:43:12 PM (16 years ago)
Author:
bird
Message:

kmk: Extended evalcall and evalcall2 with a return value, local .RETURN.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/function.c

    r2154 r2157  
    22702270  return math_int_to_variable_buffer (o, len);
    22712271}
     2272
    22722273/*
    22732274  $(length-var var)
     
    22832284
    22842285
    2285 /* func_insert helper. */
    2286 static char *
    2287 helper_insert_pad (char *o, size_t to_add, const char *pad, size_t pad_len)
     2286/* func_insert and func_substr helper. */
     2287static char *
     2288helper_pad (char *o, size_t to_add, const char *pad, size_t pad_len)
    22882289{
    22892290  while (to_add > 0)
     
    23592360        {
    23602361          o = variable_buffer_output (o, str, str_len);
    2361           o = helper_insert_pad (o, n - str_len, pad, pad_len);
     2362          o = helper_pad (o, n - str_len, pad, pad_len);
    23622363        }
    23632364    }
     
    23692370    {
    23702371      o = variable_buffer_output (o, in, in_len);
    2371       o = helper_insert_pad (o, length - in_len, pad, pad_len);
     2372      o = helper_pad (o, length - in_len, pad, pad_len);
    23722373    }
    23732374
     
    25102511          start--;      /* one-origin */
    25112512          if (start >= str_len)
    2512             return length ? helper_insert_pad (o, length, pad, pad_len) : o;
     2513            return length ? helper_pad (o, length, pad, pad_len) : o;
    25132514          if (length == 0)
    25142515            length = str_len - start;
     
    25202521            {
    25212522              if (start + length <= 0)
    2522                 return length ? helper_insert_pad (o, length, pad, pad_len) : o;
    2523               o = helper_insert_pad (o, -start, pad, pad_len);
     2523                return length ? helper_pad (o, length, pad, pad_len) : o;
     2524              o = helper_pad (o, -start, pad, pad_len);
    25242525              return variable_buffer_output (o, str, length + start);
    25252526            }
     
    25322533        {
    25332534          o = variable_buffer_output (o, str + start, str_len - start);
    2534           o = helper_insert_pad (o, start + length - str_len, pad, pad_len);
     2535          o = helper_pad (o, start + length - str_len, pad, pad_len);
    25352536        }
    25362537    }
     
    53045305      restore_variable_buffer (buf, len);
    53055306      reading_file = reading_file_saved;
     5307
     5308      /* Deal with the .RETURN value if present. */
     5309
     5310      v = lookup_variable_in_set (".RETURN", sizeof (".RETURN") - 1,
     5311                                  current_variable_set_list->set);
     5312      if (v && v->value_length)
     5313        {
     5314          if (v->recursive)
     5315            {
     5316              v->exp_count = EXP_COUNT_MAX;
     5317              variable_expand_string_2 (o, v->value, v->value_length, &o);
     5318              v->exp_count = 0;
     5319            }
     5320          else
     5321            o = variable_buffer_output (o, v->value, v->value_length);
     5322        }
    53065323    }
    53075324#endif /* CONFIG_WITH_EVALPLUS */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette