Hi Lex,

thanks for the quick reply.

On Sat, Mar 30, 2013 at 5:08 PM, Lex Trotman <[email protected]> wrote:
> Hi Henrick,
>
> Thanks for the excellent analysis.
>
>
> On 31 March 2013 06:17, Henrik Bengtsson <[email protected]> wrote:
>>
>> Hi,
>>
>> it appears that asciidoc v8.6.8 have problems encoding image files if they
>> have commas in their names; probably an issue with 'sys3'.
>>
>> EXAMPLE:
>>
>> C:\tmp>echo "image:foo,bar.png[]" > test.txt
>>
>> C:\tmp>cat test.txt
>> image:foo,foo.png[]
>>
>> C:\tmp>dir "foo,bar.png"
>> 03/30/2013  12:01 PM  2,494 note,foo.png
>>
>> C:\tmp>asciidoc test.txt
>> ## <img src="foo,bar.png" alt="foo,bar.png" />
>>
>> C:\tmp>asciidoc -a data-uri test.txt
>> The system cannot find the file specified.
>> asciidoc: WARNING: test.txt: line 1: {sys3:"C:\Python27\python.exe" -u -c
>> "import base64,sys; base64.encode(sys.stdin,sys.stdout)" <
>> "C:\tmp\foo,bar.png"}: non-zero exit status
>>
>> Using an image filename without a comma and things work just fine.
>> (Before anyone suggests not to use commas in the first place; they are
>>
>>
>> TROUBLESHOOTING:
>> Making that system call at the command line does indeed work:
>>
>> C:\tmp>"C:\Python27\python.exe" -u -c "import base64,sys;
>> base64.encode(sys.stdin,sys.stdout)" < "C:\tmp\foo,bar.png"
>> iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABX[...]
>> [...]yCoCXW14B8HLLvwDd67nwZIEPdgAAAABJRU5ErkJggg==
>>
>> Could it be that 'sys3' drops/does not pass the filename with quotes?
>> Indeed, when unquoting the filename I get the same error message as above;
>
>
> Yes, on NT type operating systems only, the quotes that do not surround a
> space are dropped, the comment in the code is:
>
> # Remove redundant quoting -- this is not just
> # cosmetic, unnecessary quoting appears to cause
> # command line truncation.
>
> It would appear that "unnecessary" is not just "without spaces" but "without
> spaces or commas"?  Are there other characters that require quoting?  I
> can't find any exact version of such definition, do you know what it is?

I've checked with the following 13 special characters " ,#$@[]^_`{}~"
(=20 2c 23 24 40 5b 5d 5e 5f 60 7b 7d 7e).  Out of those, you need to
quote pathnames that have " " (20) , "," (2c), and "^" (5e).

Here's a patch:

x:\_GITHUB\asciidoc>hg diff asciidoc.py
diff -r 1ebcbfc71e2f asciidoc.py
--- a/asciidoc.py       Sun Feb 17 10:37:43 2013 +1300
+++ b/asciidoc.py       Sun Mar 31 11:04:09 2013 -0700
@@ -815,7 +815,7 @@
         # Remove redundant quoting -- this is not just
         # cosmetic, unnecessary quoting appears to cause
         # command line truncation.
-        filter_cmd = re.sub(r'"([^ ]+?)"', r'\1', filter_cmd)
+        filter_cmd = re.sub(r'"([^^ ,]+?)"', r'\1', filter_cmd)
     try:
         p = subprocess.Popen(filter_cmd, shell=True,
                 stdin=subprocess.PIPE, stdout=subprocess.PIPE)
@@ -893,7 +893,7 @@
                 # Remove redundant quoting -- this is not just
                 # cosmetic, unnecessary quoting appears to cause
                 # command line truncation.
-                cmd = re.sub(r'"([^ ]+?)"', r'\1', cmd)
+                cmd = re.sub(r'"([^^ ,]+?)"', r'\1', cmd)
             message.verbose('shelling: %s' % cmd)
             if os.system(cmd):
                 message.warning('%s: non-zero exit status' % syntax)

Cheers,

Henrik

>
> Cheers
> Lex
>
>
>>
>>
>> C:\tmp>"C:\Python27\python.exe" -u -c "import base64,sys;
>> base64.encode(sys.stdin,sys.stdout)" < C:\tmp\foo,bar.png
>> The system cannot find the file specified.
>>
>> This may or may not be Windows only issue.
>>
>>
>> SESSION INFO (Windows 7 64-bit Ultimate):
>>
>> > asciidoc --version
>> asciidoc 8.6.8
>>
>> > "C:\Python27\python.exe" --version
>> Python 2.7.4rc1
>>
>>
>> Thanks,
>>
>> Henrik
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "asciidoc" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/asciidoc?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "asciidoc" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/asciidoc?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"asciidoc" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/asciidoc?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to