Add minor enhancements to compile binary.
* If output file exists, ask user whether to overwrite * Fix erroneous check for whether XML file was successfully saved PiperOrigin-RevId: 468743682 Change-Id: I06058c498328d333792e4b40d65c3a99ca1842e4
This commit is contained in:
committed by
Copybara-Service
parent
7b7cf0c27a
commit
ee6fed1230
+2
-3
@@ -58,9 +58,8 @@ spot such a pattern, feel free to send a PR to update the guide.
|
|||||||
|
|
||||||
Line length is 100 characters. In rare situations, like the collision table at
|
Line length is 100 characters. In rare situations, like the collision table at
|
||||||
the top of
|
the top of
|
||||||
[engine_collision_driver.c](https://github.com/deepmind/mujoco/search?q=repo%3Ad
|
[engine_collision_driver.c](https://github.com/deepmind/mujoco/blob/c8ff7b3d341560e8cc33fbdcaffbcdbc4c32327c/src/engine/engine_collision_driver.c#L36),
|
||||||
eepmind%2Fmujoco+filename%3Aengine_collision_driver.c), longer lines are alowed
|
longer lines are alowed for readability.
|
||||||
for readability.
|
|
||||||
|
|
||||||
#### Comments
|
#### Comments
|
||||||
|
|
||||||
|
|||||||
+13
-8
@@ -14,17 +14,17 @@
|
|||||||
|
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <cstdio>
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include <mujoco/mujoco.h>
|
#include <mujoco/mujoco.h>
|
||||||
|
|
||||||
// help
|
// help
|
||||||
const char helpstring[] =
|
static constexpr char helpstring[] =
|
||||||
"\n Usage: compile infile outfile\n"
|
"\n Usage: compile infile outfile\n"
|
||||||
" infile can be in mjcf, urdf, mjb format\n"
|
" infile can be in mjcf, urdf, mjb format\n"
|
||||||
" outfile can be in mjcf, mjb, txt format\n\n"
|
" outfile can be in mjcf, mjb, txt format\n\n"
|
||||||
" Example: compile model.xml model.mjb\n";
|
" Example: compile model.xml model.mjb\n";
|
||||||
|
|
||||||
|
|
||||||
// deallocate and print message
|
// deallocate and print message
|
||||||
@@ -36,7 +36,7 @@ int finish(const char* msg = 0, mjModel* m = 0) {
|
|||||||
|
|
||||||
// print message
|
// print message
|
||||||
if (msg) {
|
if (msg) {
|
||||||
std::printf("%s\n", msg);
|
std::cout << msg << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -109,11 +109,16 @@ int main(int argc, const char** argv) {
|
|||||||
return finish("Illegal combination of file formats");
|
return finish("Illegal combination of file formats");
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure output file does not exist
|
// check if output file exists
|
||||||
std::FILE* fp = std::fopen(argv[2], "r");
|
std::FILE* fp = std::fopen(argv[2], "r");
|
||||||
if (fp) {
|
if (fp) {
|
||||||
std::fclose(fp);
|
std::cout << "Output file already exists, overwrite? (Y/n) ";
|
||||||
return finish("Output file already exists");
|
char c;
|
||||||
|
std::cin >> c;
|
||||||
|
if (c!='y' && c!='Y') {
|
||||||
|
std::fclose(fp);
|
||||||
|
return finish();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// load model
|
// load model
|
||||||
@@ -134,7 +139,7 @@ int main(int argc, const char** argv) {
|
|||||||
|
|
||||||
// save model
|
// save model
|
||||||
if (type2==typeXML) {
|
if (type2==typeXML) {
|
||||||
if (mj_saveLastXML(argv[2], m, error, 1000)) {
|
if (!mj_saveLastXML(argv[2], m, error, 1000)) {
|
||||||
return finish(error, m);
|
return finish(error, m);
|
||||||
}
|
}
|
||||||
} else if (type2==typeMJB) {
|
} else if (type2==typeMJB) {
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ mjModel* mj_loadXML(const char* filename, const mjVFS* vfs,
|
|||||||
|
|
||||||
|
|
||||||
// update XML data structures with info from low-level model, save as MJCF
|
// update XML data structures with info from low-level model, save as MJCF
|
||||||
|
// returns 1 if successful, 0 otherwise
|
||||||
|
// error can be NULL; otherwise assumed to have size error_sz
|
||||||
int mj_saveLastXML(const char* filename, const mjModel* m, char* error, int error_sz) {
|
int mj_saveLastXML(const char* filename, const mjModel* m, char* error, int error_sz) {
|
||||||
// serialize access to themodel
|
// serialize access to themodel
|
||||||
std::lock_guard<std::mutex> lock(themutex);
|
std::lock_guard<std::mutex> lock(themutex);
|
||||||
|
|||||||
Reference in New Issue
Block a user