Ignore:
Timestamp:
Oct 12, 2008, 6:25:03 PM (17 years ago)
Author:
bird
Message:

kmk: Some optimizations for expand_deps.

File:
1 edited

Legend:

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

    r1837 r1847  
    753753expand_argument (const char *str, const char *end)
    754754{
     755#ifndef CONFIG_WITH_VALUE_LENGTH /** @todo the hacks are no longer required. Clean up !! */
    755756  char *tmp;
     757#endif
    756758
    757759  if (str == end)
     
    823825
    824826   Differs from variable_expand_for_file in that it takes a pointer to
    825    where in the variable buffer to start outputting the expanded string.  */
     827   where in the variable buffer to start outputting the expanded string,
     828   and that it can returned the length of the string if you wish.  */
    826829
    827830char *
    828 variable_expand_for_file_2 (char *o, const char *line, struct file *file)
     831variable_expand_for_file_2 (char *o, const char *line, unsigned int length,
     832                            struct file *file, unsigned int *value_lenp)
    829833{
    830834  char *result;
    831835  struct variable_set_list *save;
    832836  const struct floc *reading_file_saved;
     837  long len = length == ~0U ? (long)-1 : (long)length;
    833838  char *eol;
    834839
     840  if (!o)
     841    o = initialize_variable_output();
     842
    835843  if (file == 0)
    836     return variable_expand_string_2 (o, line, (long)-1, &eol);
    837 
    838   save = current_variable_set_list;
    839   current_variable_set_list = file->variables;
    840   reading_file_saved = reading_file;
    841   if (file->cmds && file->cmds->fileinfo.filenm)
    842     reading_file = &file->cmds->fileinfo;
     844     result = variable_expand_string_2 (o, line, len, &eol);
    843845  else
    844     reading_file = 0;
    845   result = variable_expand_string_2 (o, line, (long)-1, &eol);
    846   current_variable_set_list = save;
    847   reading_file = reading_file_saved;
     846    {
     847      save = current_variable_set_list;
     848      current_variable_set_list = file->variables;
     849      reading_file_saved = reading_file;
     850      if (file->cmds && file->cmds->fileinfo.filenm)
     851        reading_file = &file->cmds->fileinfo;
     852      else
     853        reading_file = 0;
     854      result = variable_expand_string_2 (o, line, len, &eol);
     855      current_variable_set_list = save;
     856      reading_file = reading_file_saved;
     857    }
     858
     859  if (value_lenp)
     860    *value_lenp = eol - result;
    848861
    849862  return result;
Note: See TracChangeset for help on using the changeset viewer.