]> diplodocus.org Git - nmh/commitdiff
uip/mhstoresbr.c: Fix single-character nmh-storage bug.
authorRalph Corderoy <ralph@inputplus.co.uk>
Sun, 14 May 2017 11:53:33 +0000 (12:53 +0100)
committerRalph Corderoy <ralph@inputplus.co.uk>
Sun, 14 May 2017 11:53:33 +0000 (12:53 +0100)
If the profile component nmh-storage was a single character, e.g. the
relative directory `d', then it would be dropped from the output path so
instead of `d/foo' being written, `/foo' would probably fail.  I think
this was due to a faulty check for nmh-storage being `/'.  Add a test
for a non-/ single-character nmh-storage.

test/mhstore/test-mhstore
uip/mhstoresbr.c

index 8cb0dff..7235d6f 100755 (executable)
@@ -350,9 +350,9 @@ set -e
 
 cd ..
 
 
 cd ..
 
-# check with relative nmh-storage profile component
-start_test 'with relative nmh-storage profile component'
-storagedir=storagedir
+# check with short relative nmh-storage profile component
+start_test 'with short relative nmh-storage profile component'
+storagedir=s
 dir="$MH_TEST_DIR/Mail/inbox/$storagedir"
 mkdir "$dir"
 printf '%s\n' "nmh-storage: $storagedir" >>"$MH"
 dir="$MH_TEST_DIR/Mail/inbox/$storagedir"
 mkdir "$dir"
 printf '%s\n' "nmh-storage: $storagedir" >>"$MH"
@@ -363,6 +363,19 @@ EOF
 run_test 'mhstore 11 -part 4' \
 "storing message 11 part 4 as file $storagedir/11.4.txt"
 check "$expected" "$dir/11.4.txt" 'keep first'
 run_test 'mhstore 11 -part 4' \
 "storing message 11 part 4 as file $storagedir/11.4.txt"
 check "$expected" "$dir/11.4.txt" 'keep first'
+rmdir "$dir"
+sed '$d' "$MH" >"$MH.new"
+mv "$MH.new" "$MH"
+
+# check with relative nmh-storage profile component
+start_test 'with relative nmh-storage profile component'
+storagedir=storagedir
+dir="$MH_TEST_DIR/Mail/inbox/$storagedir"
+mkdir "$dir"
+printf '%s\n' "nmh-storage: $storagedir" >>"$MH"
+run_test 'mhstore 11 -part 4' \
+"storing message 11 part 4 as file $storagedir/11.4.txt"
+check "$expected" "$dir/11.4.txt" 'keep first'
 
 # check with relative nmh-storage profile component and -auto
 start_test 'with relative nmh-storage profile component and -auto'
 
 # check with relative nmh-storage profile component and -auto
 start_test 'with relative nmh-storage profile component and -auto'
index a651d01..b836c07 100644 (file)
@@ -947,7 +947,9 @@ parse_format_string (CT ct, char *cp, char *buffer, int buflen, char *dir)
      * appropriate directory.
      */
     if (*cp != '/' && *cp != '|' && *cp != '!') {
      * appropriate directory.
      */
     if (*cp != '/' && *cp != '|' && *cp != '!') {
-       snprintf (bp, buflen, "%s/", dir[1] ? dir : "");
+        if (!strcmp(dir, "/"))
+            dir = ""; /* Don't start with "//". */
+       snprintf (bp, buflen, "%s/", dir);
        len = strlen (bp);
        bp += len;
        buflen -= len;
        len = strlen (bp);
        bp += len;
        buflen -= len;