mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 00:35:18 +03:00
[Horus] Model name greater than Model99.bin allowed
This commit is contained in:
parent
3e960be9ce
commit
b105214e32
4 changed files with 21 additions and 8 deletions
|
@ -117,7 +117,7 @@ void onModelSelectMenu(const char * result)
|
|||
else if (result == STR_DUPLICATE_MODEL) {
|
||||
char duplicatedFilename[LEN_MODEL_FILENAME+1];
|
||||
memcpy(duplicatedFilename, currentModel->name, sizeof(duplicatedFilename));
|
||||
if (findNextFileIndex(duplicatedFilename, MODELS_PATH)) {
|
||||
if (findNextFileIndex(duplicatedFilename, LEN_MODEL_FILENAME, MODELS_PATH)) {
|
||||
sdCopyFile(currentModel->name, MODELS_PATH, duplicatedFilename, MODELS_PATH);
|
||||
modelslist.addModel(currentCategory, duplicatedFilename);
|
||||
unsigned int index = currentCategory->size() - 1;
|
||||
|
|
|
@ -75,20 +75,33 @@ char * getFileIndex(char * filename, unsigned int & value)
|
|||
return filename;
|
||||
}
|
||||
|
||||
int findNextFileIndex(char * filename, const char * directory)
|
||||
uint8_t getDigitsCount(unsigned int value)
|
||||
{
|
||||
uint8_t count = 1;
|
||||
while (value >= 10) {
|
||||
value /= 10;
|
||||
++count;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
int findNextFileIndex(char * filename, uint8_t size, const char * directory)
|
||||
{
|
||||
unsigned int index;
|
||||
char * indexPos = getFileIndex(filename, index);
|
||||
char extension[LEN_FILE_EXTENSION+1];
|
||||
strncpy(extension, getFileExtension(filename), sizeof(extension));
|
||||
do {
|
||||
char * pos = strAppendUnsigned(indexPos, ++index, 2);
|
||||
while (1) {
|
||||
index++;
|
||||
if ((indexPos - filename) + getDigitsCount(index) + LEN_FILE_EXTENSION > size) {
|
||||
return 0;
|
||||
}
|
||||
char * pos = strAppendUnsigned(indexPos, index);
|
||||
strAppend(pos, extension);
|
||||
if (!isFileAvailable(filename, directory)) {
|
||||
return index;
|
||||
}
|
||||
} while (index < 99);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool isExtensionMatching(const char * extension, const char * pattern, uint8_t flags)
|
||||
|
|
|
@ -125,7 +125,7 @@ T * getFileExtension(T * filename, int size=0)
|
|||
#endif
|
||||
|
||||
bool isFileAvailable(const char * filename);
|
||||
int findNextFileIndex(char * filename, const char * directory);
|
||||
int findNextFileIndex(char * filename, uint8_t size, const char * directory);
|
||||
|
||||
const char * sdCopyFile(const char * src, const char * dest);
|
||||
const char * sdCopyFile(const char * srcFilename, const char * srcDir, const char * destFilename, const char * destDir);
|
||||
|
|
|
@ -218,7 +218,7 @@ const char * createModel()
|
|||
memset(filename, 0, sizeof(filename));
|
||||
strcpy(filename, "model.bin");
|
||||
|
||||
int index = findNextFileIndex(filename, MODELS_PATH);
|
||||
int index = findNextFileIndex(filename, LEN_MODEL_FILENAME, MODELS_PATH);
|
||||
if (index > 0) {
|
||||
modelDefault(index);
|
||||
memcpy(g_eeGeneral.currModelFilename, filename, sizeof(g_eeGeneral.currModelFilename));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue