Commit 60acef94 authored by Stewart Miles's avatar Stewart Miles

Terminate the output directory argument of flatc.

Given the command

flatc -o . -c test.fbs

it would generate header file

.test_generated.h

rather than

./test_generated.h

This fixes this issue.

Tested:
Manually verified that flatc generates the correct output files given output
paths ending with and without '/' on Linux and Windows.

Bug: 16464827
Change-Id: I854cb881286f22690f1885f942cf3fd2fc59ca8d
parent 3fb6a86d
......@@ -25,6 +25,13 @@
namespace flatbuffers {
static const char kPosixPathSeparator = '/';
#ifdef _WIN32
static const char kPathSeparator = '\\';
#else
static const char kPathSeparator = kPosixPathSeparator;
#endif // _WIN32
// Convert an integer or floating point value to a string.
// In contrast to std::stringstream, "char" values are
// converted to a string of digits.
......
......@@ -134,6 +134,10 @@ int main(int argc, const char *argv[]) {
case 'o':
if (++i >= argc) Error("missing path following", arg, true);
output_path = argv[i];
if (!(output_path.back() == flatbuffers::kPathSeparator ||
output_path.back() == flatbuffers::kPosixPathSeparator)) {
output_path += flatbuffers::kPathSeparator;
}
break;
case 'S':
opts.strict_json = true;
......@@ -212,4 +216,3 @@ int main(int argc, const char *argv[]) {
return 0;
}
......@@ -22,11 +22,9 @@
#ifdef _WIN32
#include <direct.h>
#define PATH_SEPARATOR "\\"
#define mkdir(n, m) _mkdir(n)
#else
#include <sys/stat.h>
#define PATH_SEPARATOR "/"
#endif
namespace flatbuffers {
......@@ -360,7 +358,7 @@ static bool SaveClass(const Parser &parser, const Definition &def,
it != parser.name_space_.end(); ++it) {
if (name_space_java.length()) {
name_space_java += ".";
name_space_dir += PATH_SEPARATOR;
name_space_dir += kPathSeparator;
}
name_space_java += *it;
name_space_dir += *it;
......@@ -374,7 +372,7 @@ static bool SaveClass(const Parser &parser, const Definition &def,
code += "import flatbuffers.*;\n\n";
}
code += classcode;
auto filename = name_space_dir + PATH_SEPARATOR + def.name + ".java";
auto filename = name_space_dir + kPathSeparator + def.name + ".java";
return SaveFile(filename.c_str(), code, false);
}
......@@ -406,4 +404,3 @@ bool GenerateJava(const Parser &parser,
}
} // namespace flatbuffers
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment