Revamped storing mechanism

This commit is contained in:
Maddox Werts 2024-09-08 21:39:58 -04:00
parent cb46a7c1b9
commit 3ce049aee1
2 changed files with 14 additions and 18 deletions

View file

@ -104,16 +104,21 @@ void manager_savepass(Password* pass) {
// Our resulting string // Our resulting string
char* result = store_load("Data"); char* result = store_load("Data");
// Storing important bits from password
const char* name = pass->name;
const char* user = pass->user;
const char* phrase = pass->phrase;
// Freeing password
pass_free(pass);
// Is the result empty? // Is the result empty?
if(!result) { if(!result) {
// Free prior result
free(result);
// Allocating result // Allocating result
FuriString* n_result = furi_string_alloc(); FuriString* n_result = furi_string_alloc();
// Setting stuff // Setting stuff
furi_string_printf(n_result, "%s|%s|%s|0", pass->name, pass->user, pass->phrase); furi_string_printf(n_result, "%s|%s|%s|0", name, user, phrase);
// Saving the data // Saving the data
char* data = malloc(sizeof(char)); char* data = malloc(sizeof(char));
@ -123,19 +128,12 @@ void manager_savepass(Password* pass) {
// Cleanup // Cleanup
furi_string_free(n_result); furi_string_free(n_result);
free(data); free(data);
free(pass);
} else { } else {
// Our new stuff
FuriString* new_addon = furi_string_alloc();
// Adding the Name
furi_string_printf(new_addon, "|%s|%s|%s|0", pass->name, pass->user, pass->phrase);
// New result // New result
FuriString* new_result = furi_string_alloc(); FuriString* new_result = furi_string_alloc();
// Appending addon to result // Appending addon to result
furi_string_printf(new_result, "%s%s", result, furi_string_get_cstr(new_addon)); furi_string_printf(new_result, "%s|%s|%s|%s|0", result, name, user, phrase);
// Saving the data // Saving the data
char* data = malloc(sizeof(char)); char* data = malloc(sizeof(char));
@ -143,11 +141,9 @@ void manager_savepass(Password* pass) {
store_save("Data", data); store_save("Data", data);
// Cleanup // Cleanup
furi_string_free(new_addon);
furi_string_free(new_result); furi_string_free(new_result);
free(result); free(result);
free(data); free(data);
free(pass);
} }
} }
void manager_loadpass(Manager* manager, char* name) { void manager_loadpass(Manager* manager, char* name) {

View file

@ -28,7 +28,7 @@ void FP_Scene_Enter_Create(void* context) {
if (app->keyboard) { if (app->keyboard) {
// Did we already start a password? // Did we already start a password?
if (!app->manager->new) { if (!app->manager->new) {
app->manager->new = malloc(sizeof(Password)); app->manager->new = pass_init("", "", "", 0);
} }
// Checking what we selected // Checking what we selected
@ -37,10 +37,10 @@ void FP_Scene_Enter_Create(void* context) {
// Does name already exist? // Does name already exist?
if (app->manager->new->name) { if (app->manager->new->name) {
free(app->manager->new->name); free(app->manager->new->name);
app->manager->new->name = malloc(sizeof(char*));
} }
// Copying it // Copying it
app->manager->new->name = malloc(sizeof(char*));
strcpy(app->manager->new->name, app->keyboard); strcpy(app->manager->new->name, app->keyboard);
break; break;
@ -48,20 +48,20 @@ void FP_Scene_Enter_Create(void* context) {
// Does user already exist? // Does user already exist?
if (app->manager->new->user) { if (app->manager->new->user) {
free(app->manager->new->user); free(app->manager->new->user);
app->manager->new->user = malloc(sizeof(char*));
} }
// Copying it // Copying it
app->manager->new->user = malloc(sizeof(char*));
strcpy(app->manager->new->user, app->keyboard); strcpy(app->manager->new->user, app->keyboard);
break; break;
case 2: // Password case 2: // Password
// Does phrase already exist? // Does phrase already exist?
if (app->manager->new->phrase) { if (app->manager->new->phrase) {
free(app->manager->new->phrase); free(app->manager->new->phrase);
app->manager->new->phrase = malloc(sizeof(char*));
} }
// Copying it // Copying it
app->manager->new->phrase = malloc(sizeof(char*));
strcpy(app->manager->new->phrase, app->keyboard); strcpy(app->manager->new->phrase, app->keyboard);
break; break;
} }