Applied Java namespace filename fix to Go.
authorWouter van Oortmerssen <wvo@google.com>
Mon, 26 Jan 2015 21:45:33 +0000 (13:45 -0800)
committerWouter van Oortmerssen <wvo@google.com>
Mon, 26 Jan 2015 21:45:33 +0000 (13:45 -0800)
Bug: 19067493
Change-Id: Ib32fef963306e27834c15e3bbabc60570924c1a9
Tested: on Linux.

src/idl_gen_go.cpp

index 1dae653..24b7d03 100644 (file)
@@ -580,23 +580,21 @@ static bool SaveType(const Parser &parser, const Definition &def,
   if (!classcode.length()) return true;
 
   std::string namespace_name;
-  std::string namespace_dir = path;
+  std::string namespace_dir = path;  // Either empty or ends in separator.
   auto &namespaces = parser.namespaces_.back()->components;
   for (auto it = namespaces.begin(); it != namespaces.end(); ++it) {
     if (namespace_name.length()) {
       namespace_name += ".";
-      namespace_dir += PATH_SEPARATOR;
     }
     namespace_name = *it;
-    namespace_dir += *it;
-    mkdir(namespace_dir.c_str(), S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH);
+    namespace_dir += *it + kPathSeparator;
   }
-
+  EnsureDirExists(namespace_dir);
 
   std::string code = "";
   BeginFile(namespace_name, needs_imports, &code);
   code += classcode;
-  std::string filename = namespace_dir + PATH_SEPARATOR + def.name + ".go";
+  std::string filename = namespace_dir + def.name + ".go";
   return SaveFile(filename.c_str(), code, false);
 }