summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/logfdisp.c20
-rw-r--r--firmware/export/logf.h1
-rw-r--r--firmware/logf.c4
3 files changed, 16 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
diff --git a/firmware/export/logf.h b/firmware/export/logf.h
index e881e7e496..c8aaad06b4 100644
--- a/firmware/export/logf.h
+++ b/firmware/export/logf.h
@@ -34,6 +34,7 @@
34extern unsigned char logfbuffer[MAX_LOGF_SIZE]; 34extern unsigned char logfbuffer[MAX_LOGF_SIZE];
35extern int logfindex; 35extern int logfindex;
36extern bool logfwrap; 36extern bool logfwrap;
37extern bool logfenabled;
37#endif /* __PCTOOL__ */ 38#endif /* __PCTOOL__ */
38 39
39#define logf _logf 40#define logf _logf
diff --git a/firmware/logf.c b/firmware/logf.c
index 0f05c6590d..bdc5ad9cc0 100644
--- a/firmware/logf.c
+++ b/firmware/logf.c
@@ -62,6 +62,7 @@ static int logdiskfindex;
62unsigned char logfbuffer[MAX_LOGF_SIZE]; 62unsigned char logfbuffer[MAX_LOGF_SIZE];
63int logfindex; 63int logfindex;
64bool logfwrap; 64bool logfwrap;
65bool logfenabled = true;
65#endif 66#endif
66 67
67#ifdef HAVE_REMOTE_LCD 68#ifdef HAVE_REMOTE_LCD
@@ -214,6 +215,9 @@ static int logf_push(void *userp, unsigned char c)
214 215
215void _logf(const char *fmt, ...) 216void _logf(const char *fmt, ...)
216{ 217{
218 if (!logfenabled)
219 return;
220
217 #ifdef USB_ENABLE_SERIAL 221 #ifdef USB_ENABLE_SERIAL
218 int old_logfindex = logfindex; 222 int old_logfindex = logfindex;
219 #endif 223 #endif