summaryrefslogtreecommitdiff
path: root/apps/logfdisp.c
diff options
context:
space:
mode:
authorMihail Zenkov <mihail.zenkov@gmail.com>2016-03-31 11:33:11 +0000
committerGerrit Rockbox <gerrit@rockbox.org>2016-04-04 11:07:44 +0200
commite599810ffaa6412326f61d026fc598c721b3a01c (patch)
treefe21a4f5f388ed87e3112f00ff68cf3448f34e4e /apps/logfdisp.c
parent26beb30c155aebc5e6e50366f1cfa34300a8c63a (diff)
downloadrockbox-e599810ffaa6412326f61d026fc598c721b3a01c.tar.gz
rockbox-e599810ffaa6412326f61d026fc598c721b3a01c.zip
Don't add new message to logf when we dump it to file
Fix log file corruption if we have new messages at dumping log to file. Comment removed as it incorrect. We store all messages in direct order (last message at end of file). Change-Id: I4acfa8a0935cc41a889e08f6bc42974fefd1ade2
Diffstat (limited to 'apps/logfdisp.c')
-rw-r--r--apps/logfdisp.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/apps/logfdisp.c b/apps/logfdisp.c
index 8547778f64..54c345faae 100644
--- a/apps/logfdisp.c
+++ b/apps/logfdisp.c
@@ -218,42 +218,44 @@ bool logfdisplay(void)
218} 218}
219#endif /* HAVE_LCD_BITMAP */ 219#endif /* HAVE_LCD_BITMAP */
220 220
221/* Store the logf log to logf.txt in the .rockbox directory. The order of the
222 * entries will be "reversed" so that the most recently logged entry is on the
223 * top of the file */
224bool logfdump(void) 221bool logfdump(void)
225{ 222{
226 int fd; 223 int fd;
227 224
228 splashf(HZ, "Log File Dumped"); 225 splashf(HZ, "Log File Dumped");
229 226
230 /* nothing to print ? */ 227 /* nothing to print ? */
231 if(logfindex == 0 && !logfwrap) 228 if(logfindex == 0 && !logfwrap)
232 /* nothing is logged just yet */ 229 /* nothing is logged just yet */
233 return false; 230 return false;
234 231
232 logfenabled = false;
233
235 fd = open(ROCKBOX_DIR "/logf.txt", O_CREAT|O_WRONLY|O_TRUNC, 0666); 234 fd = open(ROCKBOX_DIR "/logf.txt", O_CREAT|O_WRONLY|O_TRUNC, 0666);
236 if(-1 != fd) { 235 if(-1 != fd) {
237 int i; 236 int i;
238 237
239 if(logfwrap) 238 if(logfwrap)
240 i = logfindex; 239 i = logfindex;
241 else 240 else
242 i = 0; 241 i = 0;
243 242
244 do { 243 do {
245 if(logfbuffer[i]=='\0') 244 if(logfbuffer[i]=='\0')
246 fdprintf(fd, "\n"); 245 fdprintf(fd, "\n");
247 else 246 else
248 fdprintf(fd, "%c", logfbuffer[i]); 247 fdprintf(fd, "%c", logfbuffer[i]);
249 248
250 i++; 249 i++;
251 if(i >= MAX_LOGF_SIZE) 250 if(i >= MAX_LOGF_SIZE)
252 i = 0; 251 i = 0;
253 } while(i != logfindex); 252 } while(i != logfindex);
254 253
255 close(fd); 254 close(fd);
256 } 255 }
256
257 logfenabled = true;
258
257 return false; 259 return false;
258} 260}
259 261