diff options
author | Hardeep Sidhu <dyp@pobox.com> | 2003-08-08 01:50:51 +0000 |
---|---|---|
committer | Hardeep Sidhu <dyp@pobox.com> | 2003-08-08 01:50:51 +0000 |
commit | a9fded1605b19e3853ccc26ae75dbeebede2191f (patch) | |
tree | 42a0768dfdaae7016bf448533b4d0526048bc373 | |
parent | 7f67717b00433b8fc1a7624a491c446d3c021bfe (diff) | |
download | rockbox-a9fded1605b19e3853ccc26ae75dbeebede2191f.tar.gz rockbox-a9fded1605b19e3853ccc26ae75dbeebede2191f.zip |
Huw Smith's fix for saving memo function.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3926 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/plugins/calendar.c | 73 |
1 files changed, 25 insertions, 48 deletions
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c index 233fc096d1..0247870f76 100644 --- a/apps/plugins/calendar.c +++ b/apps/plugins/calendar.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
7 | * \/ \/ \/ \/ \/ | 7 | * \/ \/ \/ \/ \/ |
8 | * $Id$ | 8 | * $Id$ |
9 | * (based upon 1.1 by calpefrosch) www.HuwSy.ukhackers.net | 9 | * (based upon 1.1 by calpefrosch) updated by www.HuwSy.ukhackers.net |
10 | * | 10 | * |
11 | * Copyright (C) 2002 | 11 | * Copyright (C) 2002 |
12 | * | 12 | * |
@@ -307,12 +307,13 @@ static bool save_memo(int changed, bool new_mod, struct shown *shown) | |||
307 | int i; | 307 | int i; |
308 | char temp[MAX_CHAR_MEMO_LEN + 1]; | 308 | char temp[MAX_CHAR_MEMO_LEN + 1]; |
309 | rb->lseek(fp, 0, SEEK_SET); | 309 | rb->lseek(fp, 0, SEEK_SET); |
310 | if ( (memos[changed].file_pointer_start == 0) && | 310 | for (i = 0; i < memos[changed].file_pointer_start; i++) |
311 | (memos[changed].file_pointer_end == 0) && (new_mod) ) | 311 | { |
312 | rb->read(fp, temp, 1); | ||
313 | rb->write(fq,temp,1); | ||
314 | } | ||
315 | if (new_mod) | ||
312 | { | 316 | { |
313 | rb->close(fp); | ||
314 | rb->close(fq); | ||
315 | fq = rb->open("/.rockbox/.memo",O_RDONLY | O_CREAT | O_APPEND); | ||
316 | rb->snprintf(temp, 2, "%02d", memos[changed].day); | 317 | rb->snprintf(temp, 2, "%02d", memos[changed].day); |
317 | rb->write(fq,temp,2); | 318 | rb->write(fq,temp,2); |
318 | rb->snprintf(temp, 2, "%02d", memos[changed].month); | 319 | rb->snprintf(temp, 2, "%02d", memos[changed].month); |
@@ -323,51 +324,27 @@ static bool save_memo(int changed, bool new_mod, struct shown *shown) | |||
323 | rb->write(fq,temp,1); | 324 | rb->write(fq,temp,1); |
324 | rb->snprintf(temp, 1, "%01d", memos[changed].type); | 325 | rb->snprintf(temp, 1, "%01d", memos[changed].type); |
325 | rb->write(fq,temp,1); | 326 | rb->write(fq,temp,1); |
326 | rb->snprintf(temp, rb->strlen(memos[changed].message)+1, "%s\n", | 327 | rb->snprintf(temp, rb->strlen(memos[changed].message)+1, |
327 | memos[changed].message); | 328 | "%s\n", memos[changed].message); |
328 | rb->write(fq,temp,rb->strlen(temp)); | 329 | rb->write(fq,temp, rb->strlen(temp)); |
329 | } | 330 | } |
330 | else | 331 | rb->lseek(fp, memos[changed].file_pointer_end, SEEK_SET); |
332 | for (i = memos[changed].file_pointer_end; | ||
333 | i < rb->filesize(fp); i++) | ||
331 | { | 334 | { |
332 | for (i = 0; i < memos[changed].file_pointer_start; i++) | 335 | rb->read(fp, temp, 1); |
333 | { | 336 | rb->write(fq,temp,1); |
334 | rb->read(fp, temp, 1); | ||
335 | rb->write(fq,temp,1); | ||
336 | } | ||
337 | if (new_mod) | ||
338 | { | ||
339 | rb->snprintf(temp, 2, "%02d", memos[changed].day); | ||
340 | rb->write(fq,temp,2); | ||
341 | rb->snprintf(temp, 2, "%02d", memos[changed].month); | ||
342 | rb->write(fq,temp,2); | ||
343 | rb->snprintf(temp, 4, "%04d", memos[changed].year); | ||
344 | rb->write(fq,temp,4); | ||
345 | rb->snprintf(temp, 1, "%01d", memos[changed].wday); | ||
346 | rb->write(fq,temp,1); | ||
347 | rb->snprintf(temp, 1, "%01d", memos[changed].type); | ||
348 | rb->write(fq,temp,1); | ||
349 | rb->snprintf(temp, rb->strlen(memos[changed].message)+1, | ||
350 | "%s\n", memos[changed].message); | ||
351 | rb->write(fq,temp, rb->strlen(temp)); | ||
352 | } | ||
353 | rb->lseek(fp, memos[changed].file_pointer_end, SEEK_SET); | ||
354 | for (i = memos[changed].file_pointer_end; | ||
355 | i < rb->filesize(fp); i++) | ||
356 | { | ||
357 | rb->read(fp, temp, 1); | ||
358 | rb->write(fq,temp,1); | ||
359 | } | ||
360 | rb->close(fp); | ||
361 | fp = rb->open("/.rockbox/.memo",O_WRONLY | O_CREAT | O_TRUNC); | ||
362 | rb->lseek(fp, 0, SEEK_SET); | ||
363 | rb->lseek(fq, 0, SEEK_SET); | ||
364 | for (i = 0; i < rb->filesize(fq); i++) | ||
365 | { | ||
366 | rb->read(fq, temp, 1); | ||
367 | rb->write(fp,temp,1); | ||
368 | } | ||
369 | rb->close(fp); | ||
370 | } | 337 | } |
338 | rb->close(fp); | ||
339 | fp = rb->open("/.rockbox/.memo",O_WRONLY | O_CREAT | O_TRUNC); | ||
340 | rb->lseek(fp, 0, SEEK_SET); | ||
341 | rb->lseek(fq, 0, SEEK_SET); | ||
342 | for (i = 0; i < rb->filesize(fq); i++) | ||
343 | { | ||
344 | rb->read(fq, temp, 1); | ||
345 | rb->write(fp,temp,1); | ||
346 | } | ||
347 | rb->close(fp); | ||
371 | rb->close(fq); | 348 | rb->close(fq); |
372 | rb->remove("/.rockbox/~temp"); | 349 | rb->remove("/.rockbox/~temp"); |
373 | load_memo(shown); | 350 | load_memo(shown); |