diff --git a/Packages/SwiftyOpenCC/OpenCC/data/scripts/sort.py b/Packages/SwiftyOpenCC/OpenCC/data/scripts/sort.py index f7d4dc56..b2b74316 100755 --- a/Packages/SwiftyOpenCC/OpenCC/data/scripts/sort.py +++ b/Packages/SwiftyOpenCC/OpenCC/data/scripts/sort.py @@ -6,14 +6,14 @@ from common import sort_items if len(sys.argv) < 2: print("Sort the dictionary") - print(("Usage: ", sys.argv[0], "[input] ([output])")) + print(("Usage: ", sys.argv[0], "[inputVal] ([outputVal])")) exit(1) -input = sys.argv[1] +inputVal = sys.argv[1] if len(sys.argv) < 3: - output = input + outputVal = inputVal else: - output = sys.argv[2] + outputVal = sys.argv[2] -sort_items(input, output) +sort_items(inputVal, outputVal) diff --git a/Packages/SwiftyOpenCC/OpenCC/src/tools/CommandLine.cpp b/Packages/SwiftyOpenCC/OpenCC/src/tools/CommandLine.cpp index b75c96e9..c1d30575 100644 --- a/Packages/SwiftyOpenCC/OpenCC/src/tools/CommandLine.cpp +++ b/Packages/SwiftyOpenCC/OpenCC/src/tools/CommandLine.cpp @@ -100,8 +100,26 @@ void Convert(std::string fileName) if (!outputFileName.IsNull() && fileName == outputFileName.Get()) { // Special case: input == output - const std::string tempFileName = std::tmpnam(nullptr); std::ifstream src(fileName, std::ios::binary); + + std::string tempFileName = std::getenv("TMPDIR"); +#ifdef P_tmpdir + if (tempFileName.empty()) + { + tempFileName = P_tmpdir; + } +#endif + if (tempFileName.empty()) + { + tempFileName = "/tmp"; + } + tempFileName += "/openccXXXXXX"; + int fd = mkstemp(const_cast(tempFileName.c_str())); + if (fd == 0) + { + throw FileNotWritable(tempFileName); + } + std::ofstream dst(tempFileName, std::ios::binary); dst << src.rdbuf(); dst.close();