diff options
Diffstat (limited to 'lib/flipper_file/flipper_file_helper.c')
-rw-r--r-- | lib/flipper_file/flipper_file_helper.c | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/lib/flipper_file/flipper_file_helper.c b/lib/flipper_file/flipper_file_helper.c deleted file mode 100644 index c06945bd..00000000 --- a/lib/flipper_file/flipper_file_helper.c +++ /dev/null @@ -1,121 +0,0 @@ -#include "flipper_file_helper.h" - -const char* const flipper_file_filetype_key = "Filetype"; -const char* const flipper_file_version_key = "Version"; -const char flipper_file_delimiter = ':'; -const char flipper_file_comment = '#'; - -#ifdef __linux__ -const char* flipper_file_scratchpad = ".scratch.pad"; -#else -const char* flipper_file_scratchpad = "/any/.scratch.pad"; -#endif - -bool flipper_file_read_valid_key(File* file, string_t key) { - string_reset(key); - bool found = false; - bool error = false; - const uint8_t buffer_size = 32; - uint8_t buffer[buffer_size]; - bool accumulate = true; - bool new_line = true; - - while(true) { - uint16_t bytes_were_read = storage_file_read(file, buffer, buffer_size); - if(bytes_were_read == 0) break; - - for(uint16_t i = 0; i < bytes_were_read; i++) { - if(buffer[i] == flipper_file_eoln) { - // EOL found, clean data, start accumulating data and set the new_line flag - string_reset(key); - accumulate = true; - new_line = true; - } else if(buffer[i] == flipper_file_eolr) { - // Ignore - } else if(buffer[i] == flipper_file_comment && new_line) { - // if there is a comment character and we are at the beginning of a new line - // do not accumulate comment data and reset the new_line flag - accumulate = false; - new_line = false; - } else if(buffer[i] == flipper_file_delimiter) { - if(new_line) { - // we are on a "new line" and found the delimiter - // this can only be if we have previously found some kind of key, so - // clear the data, set the flag that we no longer want to accumulate data - // and reset the new_line flag - string_reset(key); - accumulate = false; - new_line = false; - } else { - // parse the delimiter only if we are accumulating data - if(accumulate) { - // we found the delimiter, move the rw pointer to the correct location - // and signal that we have found something - if(!file_helper_seek(file, i - bytes_were_read)) { - error = true; - break; - } - - found = true; - break; - } - } - } else { - // just new symbol, reset the new_line flag - new_line = false; - if(accumulate) { - // and accumulate data if we want - string_push_back(key, buffer[i]); - } - } - } - - if(found || error) break; - } - - return found; -} - -bool flipper_file_seek_to_key(File* file, const char* key, bool strict_mode) { - bool found = false; - string_t readed_key; - - string_init(readed_key); - - while(!storage_file_eof(file)) { - if(flipper_file_read_valid_key(file, readed_key)) { - if(string_cmp_str(readed_key, key) == 0) { - if(!file_helper_seek(file, 2)) break; - - found = true; - break; - } else if(strict_mode) { - found = false; - break; - } - } - } - string_clear(readed_key); - - return found; -} - -bool flipper_file_write_key(File* file, const char* key) { - bool result = false; - - do { - result = file_helper_write(file, key, strlen(key)); - if(!result) break; - - const char delimiter_buffer[2] = {flipper_file_delimiter, ' '}; - result = file_helper_write(file, delimiter_buffer, sizeof(delimiter_buffer)); - } while(false); - - return result; -} - -bool flipper_file_get_scratchpad_name(const char** name) { - // TODO do not rewrite existing file - *name = flipper_file_scratchpad; - return true; -} |