Editor FINISHED

saving works
This commit is contained in:
Nikola Petrov 2024-07-22 15:26:29 +02:00
parent 1ee0d2b459
commit b08c1651e6
3 changed files with 48 additions and 17 deletions

@ -1,6 +1,8 @@
#ifndef EDITOR_HPP
#define EDITOR_HPP
int edit_file(const char *s);
// buffer must me deleted
// null there we no changes to save
char *edit_file(const char *s, int &out_len);
#endif // EDITOR_HPP

@ -374,9 +374,19 @@ void arg_editor(Buffer &decrypted_buffer, Buffer &encrypted_buffer, const char *
}
LoginInfoPointer lip = get_logininfo_pointer_from_buffer(decrypted_buffer, pass);
edit_file(lip.password);
int len = 0;
char *new_buff = edit_file(lip.password, len);
if (new_buff == nullptr)
{
return;
}
// delete_logininfo_from_buffer(decrypted_buffer, pass);
// Aes256::encrypt(key, decrypted_buffer, encrypted_buffer);
// encrypted_buffer.save_to_file();
std::string lable = lip.label;
std::string username = lip.username;
delete_logininfo_from_buffer(decrypted_buffer, pass);
add_logininfo_to_buffer(decrypted_buffer, lable.c_str(), lable.size(), username.c_str(), username.size(), new_buff, len);
Aes256::encrypt(key, decrypted_buffer, encrypted_buffer);
encrypted_buffer.save_to_file();
}

@ -372,7 +372,21 @@ char *editorRowsToString(int *buflen)
*p = '\n';
p++;
}
*p = '\0';
if (E.numrows == 1)
{
totlen--;
}
for (size_t i = 0; i < totlen; i++)
{
if (buf[i] != '\n' && buf[i] != '\t' && iscntrl(buf[i]))
{
buf[i] = '?';
}
}
buf[totlen - 1] = '\0';
return buf;
}
@ -389,8 +403,10 @@ void editorOpen(const char *data)
start = end + 1;
}
}
editorInsertRow(E.numrows, &data[start], end - start);
if (data[start] != '\0')
{
editorInsertRow(E.numrows, &data[start], end - start);
}
E.dirty = 0;
}
@ -399,7 +415,7 @@ void editorSave()
// int len;
// char *buf = editorRowsToString(&len);
// free(buf);
// editorSetStatusMessage("Saved");
editorSetStatusMessage("Saved");
E.dirty = 0;
}
@ -608,12 +624,11 @@ void editorDrawRows(struct abuf *ab)
void editorDrawStatusBar(struct abuf *ab)
{
abAppend(ab, "\x1b[7m", 4);
char status[80], rstatus[80];
int len = snprintf(status, sizeof(status), "%.20s - %d lines %s",
"[No Name]", E.numrows,
E.dirty ? "(modified)" : "");
int rlen = snprintf(rstatus, sizeof(rstatus), "%s | %d/%d",
"no ft", E.cy + 1, E.numrows);
char status[25], rstatus[25];
int len = snprintf(status, sizeof(status), "%s", E.dirty ? "(will not be saved)" : "(will be saved)");
int rlen = snprintf(rstatus, sizeof(rstatus), "%d | %d/%d", E.cx, E.cy + 1, E.numrows);
if (len > E.screencols)
len = E.screencols;
abAppend(ab, status, len);
@ -894,7 +909,7 @@ void initEditor()
E.screenrows -= 2;
}
int edit_file(const char *s)
char *edit_file(const char *s, int &out_len)
{
initEditor();
if (s)
@ -911,5 +926,9 @@ int edit_file(const char *s)
editorProcessKeypress();
}
return 0;
if (E.dirty)
{
return nullptr;
}
return editorRowsToString(&out_len);
}