Alexandre Julliard : makedep: Add helper functions to get and set variables in string arrays.

Alexandre Julliard julliard at winehq.org
Wed Apr 2 13:35:15 CDT 2014


Module: wine
Branch: master
Commit: 43fd82c61215ef1e29d995749aa28a38acfa4596
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=43fd82c61215ef1e29d995749aa28a38acfa4596

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Apr  2 14:10:45 2014 +0200

makedep: Add helper functions to get and set variables in string arrays.

---

 tools/makedep.c |   63 ++++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 41 insertions(+), 22 deletions(-)

diff --git a/tools/makedep.c b/tools/makedep.c
index 9ec8aef..73bf3f0 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -345,6 +345,42 @@ static void strarray_add_uniq( struct strarray *array, const char *str )
 
 
 /*******************************************************************
+ *         strarray_get_value
+ *
+ * Find a value in a name/value pair string array.
+ */
+static char *strarray_get_value( const struct strarray *array, const char *name )
+{
+    unsigned int i;
+
+    for (i = 0; i < array->count; i += 2)
+        if (!strcmp( array->str[i], name )) return xstrdup( array->str[i + 1] );
+    return NULL;
+}
+
+
+/*******************************************************************
+ *         strarray_set_value
+ *
+ * Define a value in a name/value pair string array.
+ */
+static void strarray_set_value( struct strarray *array, const char *name, const char *value )
+{
+    unsigned int i;
+
+    /* redefining a variable replaces the previous value */
+    for (i = 0; i < array->count; i += 2)
+    {
+        if (strcmp( array->str[i], name )) continue;
+        array->str[i + 1] = value;
+        return;
+    }
+    strarray_add( array, name );
+    strarray_add( array, value );
+}
+
+
+/*******************************************************************
  *         output_filename
  */
 static void output_filename( const char *name )
@@ -1226,19 +1262,11 @@ static struct incl_file *add_src_file( const char *name )
  */
 static char *get_make_variable( const char *name )
 {
-    unsigned int i;
-
-    for (i = 0; i < cmdline_vars.count; i += 2)
-        if (!strcmp( cmdline_vars.str[i], name ))
-            return xstrdup( cmdline_vars.str[i + 1] );
-
-    for (i = 0; i < make_vars.count; i += 2)
-        if (!strcmp( make_vars.str[i], name ))
-            return xstrdup( make_vars.str[i + 1] );
+    char *ret;
 
-    for (i = 0; i < top_make_vars.count; i += 2)
-        if (!strcmp( top_make_vars.str[i], name ))
-            return xstrdup( top_make_vars.str[i + 1] );
+    if ((ret = strarray_get_value( &cmdline_vars, name ))) return ret;
+    if ((ret = strarray_get_value( &make_vars, name ))) return ret;
+    if ((ret = strarray_get_value( &top_make_vars, name ))) return ret;
     return NULL;
 }
 
@@ -1312,7 +1340,6 @@ static struct strarray get_expanded_make_var_array( const char *name )
  */
 static int set_make_variable( struct strarray *array, const char *assignment )
 {
-    unsigned int i;
     char *p, *name;
 
     p = name = xstrdup( assignment );
@@ -1327,15 +1354,7 @@ static int set_make_variable( struct strarray *array, const char *assignment )
     *p++ = 0;
     while (isspace(*p)) p++;
 
-    /* redefining a variable replaces the previous value */
-    for (i = 0; i < array->count; i += 2)
-    {
-        if (strcmp( array->str[i], name )) continue;
-        array->str[i + 1] = p;
-        return 1;
-    }
-    strarray_add( array, name );
-    strarray_add( array, p );
+    strarray_set_value( array, name, p );
     return 1;
 }
 




More information about the wine-cvs mailing list