Improved new_id() for win32
authorClifford Wolf <clifford@clifford.at>
Sat, 18 Oct 2014 17:26:03 +0000 (19:26 +0200)
committerClifford Wolf <clifford@clifford.at>
Sat, 18 Oct 2014 17:26:03 +0000 (19:26 +0200)
kernel/yosys.cc

index e26eaf4be0b867eb3420bfbffa7c0e1e512a6d18..42cfcb5bb70f2044dbe0376da370837d9e58bbea 100644 (file)
@@ -358,11 +358,19 @@ void yosys_shutdown()
 
 RTLIL::IdString new_id(std::string file, int line, std::string func)
 {
-       std::string str = "$auto$";
+#ifdef _WIN32
+       size_t pos = file.find_last_of("/\\");
+#else
        size_t pos = file.find_last_of('/');
-       str += pos != std::string::npos ? file.substr(pos+1) : file;
-       str += stringf(":%d:%s$%d", line, func.c_str(), autoidx++);
-       return str;
+#endif
+       if (pos != std::string::npos)
+               file = file.substr(pos+1);
+
+       pos = func.find_last_of(':');
+       if (pos != std::string::npos)
+               func = func.substr(pos+1);
+
+       return stringf("$auto$%s:%d:%s$%d", file.c_str(), line, func.c_str(), autoidx++);
 }
 
 RTLIL::Design *yosys_get_design()