Add utility function for merging directory names with filenames, and fix issue in mj_addfileVFS where directory names without trailing filesystem separators won't append correctly.
PiperOrigin-RevId: 545450158 Change-Id: I550394f11ac2837d35f3d869f8718a119a9eac38
This commit is contained in:
committed by
Copybara-Service
parent
82e85e24e5
commit
95167fab2d
@@ -1177,6 +1177,51 @@ char* mju_strncpy(char *dst, const char *src, int n) {
|
||||
|
||||
|
||||
|
||||
// assemble full filename from directory and filename, return 0 on success
|
||||
int mju_makefullname(char* full, size_t nfull, const char* dir, const char* file) {
|
||||
int dirlen = (!dir) ? 0 : strlen(dir);
|
||||
int filelen = (!file) ? 0 : strlen(file);
|
||||
char* filepos = full + dirlen;
|
||||
|
||||
// missing filename
|
||||
if (!filelen) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// no directory then just copy filename over
|
||||
if (!dirlen) {
|
||||
// make sure full has space
|
||||
if (filelen >= nfull) {
|
||||
return -1;
|
||||
}
|
||||
strcpy(full, file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// make sure full has space
|
||||
if (dirlen + filelen >= nfull) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// dir doesn't end with a slash
|
||||
if (dir[dirlen - 1] != '\\' && dir[dirlen - 1] != '/') {
|
||||
// need extra space for forward slash
|
||||
if ((dirlen + filelen + 1) >= nfull) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// add forward slash
|
||||
*filepos++ = '/';
|
||||
}
|
||||
|
||||
// copy directory and file over
|
||||
memcpy(full, dir, sizeof(char) * dirlen);
|
||||
strcpy(filepos, file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// sigmoid function over 0<=x<=1 using quintic polynomial
|
||||
mjtNum mju_sigmoid(mjtNum x) {
|
||||
// fast return
|
||||
|
||||
Reference in New Issue
Block a user