From e991f13267b2b033c94404ae0ac9c6511f154cae Mon Sep 17 00:00:00 2001
From: Micah Cowan <micah@cowan.name>
Date: Sat, 13 Jun 2009 17:04:31 -0700
Subject: [PATCH] Cleanup/bugfix for tilde patch.

---
 src/ChangeLog |  6 ++++++
 src/init.c    | 17 +++++++++--------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index e519a21c..dbbc2c0e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2009-06-13  Micah Cowan  <micah@cowan.name>
+
+	* init.c: Rename setval_internal_wrapper to setval_internal_tilde,
+	ensure we don't "replace" the tilde unless it's actually
+	present. Clean up some minor GNU style issues.
+
 2009-06-13  Julien Pichon  <julienpichon7@gmail.com>
 
 	* init.c: Handle tilde-expansion in wgetrc commands, without
diff --git a/src/init.c b/src/init.c
index da900cce..bbe6b585 100644
--- a/src/init.c
+++ b/src/init.c
@@ -468,7 +468,7 @@ enum parse_line {
 
 static enum parse_line parse_line (const char *, char **, char **, int *);
 static bool setval_internal (int, const char *, const char *);
-static bool setval_internal_wrapper (int, const char *, const char *);
+static bool setval_internal_tilde (int, const char *, const char *);
 
 /* Initialize variables from a wgetrc file.  Returns zero (failure) if
    there were errors in the file.  */
@@ -499,7 +499,7 @@ run_wgetrc (const char *file)
         {
         case line_ok:
           /* If everything is OK, set the value.  */
-          if (!setval_internal_wrapper (comind, com, val))
+          if (!setval_internal_tilde (comind, com, val))
             {
               fprintf (stderr, _("%s: Error in %s at line %d.\n"),
                        exec_name, file, ln);
@@ -679,7 +679,7 @@ setval_internal (int comind, const char *com, const char *val)
 }
 
 static bool
-setval_internal_wrapper (int comind, const char *com, const char *val)
+setval_internal_tilde (int comind, const char *com, const char *val)
 {
   bool ret;
   int homelen;
@@ -689,18 +689,19 @@ setval_internal_wrapper (int comind, const char *com, const char *val)
 
   /* We make tilde expansion for cmd_file and cmd_directory */
   if (((commands[comind].action == cmd_file) ||
-       (commands[comind].action == cmd_directory)) && ret)
+       (commands[comind].action == cmd_directory))
+      && ret && (*val == '~' && ISSEP (val[1])))
     {
       pstring = commands[comind].place;
-      home = home_dir();
+      home = home_dir ();
       if (home)
 	{
-	  homelen = strlen(home);
-	  while (homelen && ISSEP(home[homelen - 1]))
+	  homelen = strlen (home);
+	  while (homelen && ISSEP (home[homelen - 1]))
             home[--homelen] = '\0';
 
 	  /* Skip the leading "~/". */
-	  for (++val; ISSEP(*val); val++)
+	  for (++val; ISSEP (*val); val++)
   	    ;
 	  *pstring = concat_strings (home, "/", val, (char *)0);
 	}