mirror of
https://github.com/DarkFlippers/unleashed-firmware
synced 2024-12-21 02:03:18 +00:00
46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
|
#include "sequential_file.h"
|
||
|
|
||
|
char* sequential_file_resolve_path(
|
||
|
Storage* storage,
|
||
|
const char* dir,
|
||
|
const char* prefix,
|
||
|
const char* extension) {
|
||
|
if(storage == NULL || dir == NULL || prefix == NULL || extension == NULL) {
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
char file_path[256];
|
||
|
int file_index = 0;
|
||
|
|
||
|
do {
|
||
|
if(snprintf(
|
||
|
file_path, sizeof(file_path), "%s/%s_%d.%s", dir, prefix, file_index, extension) <
|
||
|
0) {
|
||
|
return NULL;
|
||
|
}
|
||
|
file_index++;
|
||
|
} while(storage_file_exists(storage, file_path));
|
||
|
|
||
|
return strdup(file_path);
|
||
|
}
|
||
|
|
||
|
bool sequential_file_open(
|
||
|
Storage* storage,
|
||
|
File* file,
|
||
|
const char* dir,
|
||
|
const char* prefix,
|
||
|
const char* extension) {
|
||
|
if(storage == NULL || file == NULL || dir == NULL || prefix == NULL || extension == NULL) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
char* file_path = sequential_file_resolve_path(storage, dir, prefix, extension);
|
||
|
if(file_path == NULL) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
bool success = storage_file_open(file, file_path, FSAM_WRITE, FSOM_CREATE_ALWAYS);
|
||
|
free(file_path);
|
||
|
|
||
|
return success;
|
||
|
}
|