validators.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <furi.h>
  2. #include "validators.h"
  3. #include "applications/storage/storage.h"
  4. struct ValidatorIsFile {
  5. const char* app_path_folder;
  6. const char* app_extension;
  7. };
  8. bool validator_is_file_callback(const char* text, string_t error, void* context) {
  9. furi_assert(context);
  10. ValidatorIsFile* instance = context;
  11. bool ret = true;
  12. string_t path;
  13. string_init_printf(path, "%s/%s%s", instance->app_path_folder, text, instance->app_extension);
  14. Storage* storage = furi_record_open("storage");
  15. if(storage_common_stat(storage, string_get_cstr(path), NULL) == FSE_OK) {
  16. ret = false;
  17. string_printf(error, "This name\nexists!\nChoose\nanother one.");
  18. } else {
  19. ret = true;
  20. }
  21. string_clear(path);
  22. furi_record_close("storage");
  23. return ret;
  24. }
  25. ValidatorIsFile*
  26. validator_is_file_alloc_init(const char* app_path_folder, const char* app_extension) {
  27. ValidatorIsFile* instance = malloc(sizeof(ValidatorIsFile));
  28. instance->app_path_folder = app_path_folder;
  29. instance->app_extension = app_extension;
  30. return instance;
  31. }
  32. void validator_is_file_free(ValidatorIsFile* instance) {
  33. furi_assert(instance);
  34. free(instance);
  35. }