summaryrefslogtreecommitdiff
path: root/apps/plugins/text_editor.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/text_editor.c')
-rw-r--r--apps/plugins/text_editor.c74
1 files changed, 33 insertions, 41 deletions
diff --git a/apps/plugins/text_editor.c b/apps/plugins/text_editor.c
index dc79204..a55165e 100644
--- a/apps/plugins/text_editor.c
+++ b/apps/plugins/text_editor.c
@@ -22,15 +22,14 @@
#include "lib/playback_control.h"
#if PLUGIN_BUFFER_SIZE > 0x45000
-#define MAX_CHARS 0x40000 /* 256 kiB */
+#define MAX_CHARS 0x40000 /* 256 kiB */
#else
-#define MAX_CHARS 0x5FE0 /* a bit less than 24 kiB */
+#define MAX_CHARS 0x6000 /* 24 kiB */
#endif
#define MAX_LINE_LEN 2048
PLUGIN_HEADER
static char buffer[MAX_CHARS];
-static char eol[3];
static int char_count = 0;
static int line_count = 0;
static int last_action_line = 0;
@@ -126,38 +125,36 @@ static const char* list_get_name_cb(int selected_item, void* data,
{
(void)data;
char *b = &buffer[do_action(ACTION_GET,0,selected_item)];
- if (rb->strlen(b) >= buf_len)
+ /* strlcpy(dst, src, siz) returns strlen(src) */
+ if (rb->strlcpy(buf, b, buf_len) >= buf_len)
{
- char t = b[buf_len-10];
- b[buf_len-10] = '\0';
- rb->snprintf(buf , buf_len, "%s ...", b);
- b[buf_len-10] = t;
+ rb->strcpy(&buf[buf_len-10], " ...");
}
- else rb->strlcpy(buf, b, buf_len);
return buf;
}
char filename[MAX_PATH];
+char eol[3];
bool newfile;
-int get_eol_string(char* fn)
+void get_eol_string(char* fn)
{
- int fd, result;
+ int fd;
char t;
-
+
+ /* assume LF first */
+ rb->strcpy(eol,"\n");
+
if (!fn || !fn[0])
- return 0;
+ return;
fd = rb->open(fn,O_RDONLY);
if (fd<0)
- return 0;
-
- eol[0] = '\0';
- result = 1;
- while (!eol[0])
+ return;
+
+ while (1)
{
- if (!rb->read(fd,&t,1))
+ if (!rb->read(fd,&t,1) || t == '\n')
{
- rb->strcpy(eol,"\n");
- result = 0;
+ break;
}
if (t == '\r')
{
@@ -165,14 +162,11 @@ int get_eol_string(char* fn)
rb->strcpy(eol,"\r\n");
else
rb->strcpy(eol,"\r");
- }
- else if (t == '\n')
- {
- rb->strcpy(eol,"\n");
+ break;
}
}
rb->close(fd);
- return result;
+ return;
}
bool save_changes(int overwrite)
@@ -226,6 +220,7 @@ void setup_lists(struct gui_synclist *lists, int sel)
rb->gui_synclist_select_item(lists, sel);
rb->gui_synclist_draw(lists);
}
+
enum {
MENU_RET_SAVE = -1,
MENU_RET_NO_UPDATE,
@@ -234,11 +229,11 @@ enum {
int do_item_menu(int cur_sel, char* copy_buffer)
{
int ret = 0;
- MENUITEM_STRINGLIST(menu, "Line Options", NULL,
+ MENUITEM_STRINGLIST(menu, "Line Options", NULL,
"Cut/Delete", "Copy",
"Insert Above", "Insert Below",
- "Concat To Above", "Save",
- "Show Playback Menu",);
+ "Concat To Above",
+ "Save", "Playback Control");
switch (rb->do_menu(&menu, NULL, NULL, false))
{
@@ -352,10 +347,7 @@ enum plugin_status plugin_start(const void* parameter)
char *c = NULL;
#endif
rb->strcpy(filename,(char*)parameter);
- if (!get_eol_string(filename))
- {
- rb->strcpy(eol,"\n");
- }
+ get_eol_string(filename);
fd = rb->open(filename,O_RDONLY);
if (fd<0)
{
@@ -368,7 +360,7 @@ enum plugin_status plugin_start(const void* parameter)
edit_colors_file = true;
#endif
/* read in the file */
- while (rb->read_line(fd,temp_line,MAX_LINE_LEN))
+ while (rb->read_line(fd,temp_line,MAX_LINE_LEN) > 0)
{
if (!do_action(ACTION_INSERT,temp_line,line_count))
{
@@ -386,6 +378,7 @@ enum plugin_status plugin_start(const void* parameter)
rb->strcpy(eol,"\n");
newfile = true;
}
+
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
rb->cpu_boost(0);
#endif
@@ -415,14 +408,14 @@ enum plugin_status plugin_start(const void* parameter)
rb->settings_parseline(temp_line, &name, &value);
if (line_count)
{
- MENUITEM_STRINGLIST(menu, "Edit What?", NULL,
- "Extension", "Colour",);
+ MENUITEM_STRINGLIST(menu, "Edit What?", NULL,
+ "Extension", "Colour");
rb->strcpy(extension, name);
if (value)
hex_to_rgb(value, &color);
else
color = 0;
-
+
switch (rb->do_menu(&menu, NULL, NULL, false))
{
case 0:
@@ -437,7 +430,7 @@ enum plugin_status plugin_start(const void* parameter)
/* Should never happen but makes compiler happy */
temp_changed = false;
}
-
+
if (temp_changed)
{
rb->snprintf(temp_line, MAX_LINE_LEN, "%s: %02X%02X%02X",
@@ -486,9 +479,9 @@ enum plugin_status plugin_start(const void* parameter)
case ACTION_STD_CANCEL:
if (changed)
{
- MENUITEM_STRINGLIST(menu, "Do What?", NULL,
+ MENUITEM_STRINGLIST(menu, "Do What?", NULL,
"Return",
- "Show Playback Menu", "Save Changes",
+ "Playback Control", "Save Changes",
"Save As...", "Save and Exit",
"Ignore Changes and Exit");
switch (rb->do_menu(&menu, NULL, NULL, false))
@@ -506,7 +499,6 @@ enum plugin_status plugin_start(const void* parameter)
if(save_changes(0))
changed = 0;
break;
-
case 4:
if(save_changes(1))
exit=1;