
Alex, I'm sorry, but I cannot make sense of what you write. On Thu, Nov 15, 2012 at 6:06 PM, Alex Perry <Alex.Perry@smartlogic.com>wrote:
[...] its functionality - if I have to call out to foo and this expects 8 bit encoded filenames (or more likely on windows utf16) then I need to be able to do that
What is foo? I assume you mean that foo is some executable. In such case it does not matter what it expects, 8 bit encoded command line or UTF-16 command line, since both are passed through the kernel as UTF-16 strings.
- and so if passing a "command line style call " must tell the boost process library what encoding my std::string actually is in some manner so that it can apply the correct transformation required.
If we recognize that boost process must support Unicode, then it *must* call CreateProcessW. So the only question is what encoding of std::strings it assumes. There are two alternatives on Windows: 1) ANSI 2) UTF-8. The former does not support Unicode, the later is incompatible with the basic execution character set of MSVC compiler. This is not a problem though, you are not required to be compatible with the standard library here. Also it is easy to change between the two based on a compile time switch. My problem with this is that its confusing ... What is confusing? Defining a uniform interface is confusing?
so my original point was lets not try to model boost process on the system() call - that exists on all platforms I know of but doesn't really address the issues of writing x-platform code to handle processes.
I totally lost you here. How system() is related? (Except that it launches a process too.) -- Yakov