1
0
Fork 0
forked from len0rd/rockbox

Ensure that the file handle is always closed in text editor plugin (part of FS#10138 by Teruaki Kawashima, minor modifications by me)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21491 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Alexander Levin 2009-06-24 15:18:32 +00:00
parent 095f417048
commit 763a7d7457

View file

@ -136,31 +136,34 @@ char *list_get_name_cb(int selected_item, void* data,
else rb->strncpy(buf, b, buf_len); else rb->strncpy(buf, b, buf_len);
return buf; return buf;
} }
char filename[MAX_PATH]; char filename[MAX_PATH];
int get_eol_string(char* fn) int get_eol_string(char* fn)
{ {
int fd=-1; int fd, result;
char t; char t;
if (!fn)
return 0; if (!fn || !fn[0])
else if (!fn[0])
return 0; return 0;
fd = rb->open(fn,O_RDONLY); fd = rb->open(fn,O_RDONLY);
if (fd<0) if (fd<0)
return 0; return 0;
eol[0] = '\0'; eol[0] = '\0';
result = 1;
while (!eol[0]) while (!eol[0])
{ {
if (!rb->read(fd,&t,1)) if (!rb->read(fd,&t,1))
{ {
rb->strcpy(eol,"\n"); rb->strcpy(eol,"\n");
return 0; result = 0;
} }
if (t == '\r') if (t == '\r')
{ {
if (rb->read(fd,&t,1) && t=='\n') if (rb->read(fd,&t,1) && t=='\n')
rb->strcpy(eol,"\r\n"); rb->strcpy(eol,"\r\n");
else rb->strcpy(eol,"\r"); else
rb->strcpy(eol,"\r");
} }
else if (t == '\n') else if (t == '\n')
{ {
@ -168,7 +171,7 @@ int get_eol_string(char* fn)
} }
} }
rb->close(fd); rb->close(fd);
return 1; return result;
} }
void save_changes(int overwrite) void save_changes(int overwrite)