Allow ${foo} syntax for variables.
authorWerner Koch <wk@gnupg.org>
Fri, 12 Oct 2007 16:05:14 +0000 (16:05 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 12 Oct 2007 16:05:14 +0000 (16:05 +0000)
tools/ChangeLog
tools/gpg-connect-agent.c

index 1b0d539..05951f7 100644 (file)
@@ -1,3 +1,7 @@
+2007-10-12  Werner Koch  <wk@g10code.com>
+
+       * gpg-connect-agent.c (substitute_line): Allow ${foo} syntax.
+
 2007-10-11  Werner Koch  <wk@g10code.com>
 
        * gpg-connect-agent.c (get_var): Expand environment variables.
index 6b4cc54..cb3f063 100644 (file)
@@ -228,6 +228,8 @@ get_var (const char *name)
   variable_t var;
   const char *s;
 
+  if (!*name)
+    return "";
   for (var = variable_table; var; var = var->next)
     if (!strcmp (var->name, name))
       break;
@@ -264,9 +266,24 @@ substitute_line (char *buffer)
           line = p + 1;
           continue;
         }
-      for (pend=p+1; *pend && !spacep (pend) && *pend != '$' ; pend++)
-        ;
-      if (*pend)
+      if (p[1] == '{')
+        {
+          for (pend=p+2; *pend && *pend != '}' ; pend++)
+            ;
+          if (!*pend)
+            return result; /* Unclosed - don't substitute.  */
+        }
+      else
+        {
+          for (pend=p+1; *pend && !spacep (pend) && *pend != '$' ; pend++)
+            ;
+        }
+      if (p[1] == '{' && *pend == '}')
+        {
+          *pend++ = 0;
+          value = get_var (p+2);
+        }
+      else if (*pend)
         {
           int save = *pend;
           *pend = 0;