[PATCH] Add writeFileWithSystemEncoding to LibLLVMSupport

Rafael Auler rafaelauler at gmail.com
Fri Aug 29 15:07:19 PDT 2014


I realize this patch has been accepted, but I am updating it in light of the discussion in D4897, to update the LLVM side of it.

I will copy and paste the description that I put in D4897, since it reflects the modifications made on both sides (LLVM and Clang):

This update refactors the new code in Job.cpp to use streams, no longer building and managing its own char buffers. Thanks to Sean’s suggestion, the code now is much more simple. However, I wanted to build a stream that could directly write to the response file with the correct encoding, but raw_fd_ostream lacks the capability to write files with different encodings. Therefore, I added this capability to raw_fd_ostream with a small modification and introduced a new constructor variant that creates buffers that, when flushed to a file, is written in a different encoding. If you think it is inadequate to have such a feature in raw_fd_ostream, I can work on creating my own stream class to do so. 

I also refactored part of the write function in raw_fd_ostream out of this class, to avoid duplicating code in this implementation. Then, I changed by writeFileWithEncoding() function to write in a given file descriptor, which is assumed to be opened, rather than opening the file by my own and then closing it. This enabled me to make raw_fd_ostream work with different encodings with little extra code.

http://reviews.llvm.org/D4896

Files:
  include/llvm/Support/FileSystem.h
  include/llvm/Support/raw_ostream.h
  lib/Support/Path.cpp
  lib/Support/Unix/Path.inc
  lib/Support/Windows/Path.inc
  lib/Support/Windows/WindowsSupport.h
  lib/Support/raw_ostream.cpp
  unittests/Support/Path.cpp
  unittests/Support/raw_ostream_test.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4896.13115.patch
Type: text/x-patch
Size: 22920 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140829/fdb714a8/attachment.bin>


More information about the llvm-commits mailing list