diff options
author | Michiel Van Der Kolk <not.valid@email.address> | 2005-03-17 20:50:03 +0000 |
---|---|---|
committer | Michiel Van Der Kolk <not.valid@email.address> | 2005-03-17 20:50:03 +0000 |
commit | 27be5bc72855a0fbbdae230bc144624c9eb85f5e (patch) | |
tree | b553f1321df924c4b744ffcab48dce5f4f081f7d /apps/codecs/dumb/src/core/atexit.c | |
parent | 7e7662bb716917ca431204f0113d400c1014f2e8 (diff) | |
download | rockbox-27be5bc72855a0fbbdae230bc144624c9eb85f5e.tar.gz rockbox-27be5bc72855a0fbbdae230bc144624c9eb85f5e.zip |
Initial check in dumb 0.9.2 - has a few usages of floating point that should
be rewritten to fixed point. seems to compile cleanly for iriver.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6197 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/dumb/src/core/atexit.c')
-rw-r--r-- | apps/codecs/dumb/src/core/atexit.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/apps/codecs/dumb/src/core/atexit.c b/apps/codecs/dumb/src/core/atexit.c new file mode 100644 index 0000000000..16c6abdb2c --- /dev/null +++ b/apps/codecs/dumb/src/core/atexit.c | |||
@@ -0,0 +1,71 @@ | |||
1 | /* _______ ____ __ ___ ___ | ||
2 | * \ _ \ \ / \ / \ \ / / ' ' ' | ||
3 | * | | \ \ | | || | \/ | . . | ||
4 | * | | | | | | || ||\ /| | | ||
5 | * | | | | | | || || \/ | | ' ' ' | ||
6 | * | | | | | | || || | | . . | ||
7 | * | |_/ / \ \__// || | | | ||
8 | * /_______/ynamic \____/niversal /__\ /____\usic /| . . ibliotheque | ||
9 | * / \ | ||
10 | * / . \ | ||
11 | * atexit.c - Library Clean-up Management. / / \ \ | ||
12 | * | < / \_ | ||
13 | * By entheh. | \/ /\ / | ||
14 | * \_ / > / | ||
15 | * | \ / / | ||
16 | * | ' / | ||
17 | * \__/ | ||
18 | */ | ||
19 | |||
20 | #include <stdlib.h> | ||
21 | |||
22 | #include "dumb.h" | ||
23 | #include "internal/dumb.h" | ||
24 | |||
25 | |||
26 | |||
27 | typedef struct DUMB_ATEXIT_PROC | ||
28 | { | ||
29 | struct DUMB_ATEXIT_PROC *next; | ||
30 | void (*proc)(void); | ||
31 | } | ||
32 | DUMB_ATEXIT_PROC; | ||
33 | |||
34 | |||
35 | |||
36 | static DUMB_ATEXIT_PROC *dumb_atexit_proc = NULL; | ||
37 | |||
38 | |||
39 | |||
40 | int dumb_atexit(void (*proc)(void)) | ||
41 | { | ||
42 | DUMB_ATEXIT_PROC *dap = dumb_atexit_proc; | ||
43 | |||
44 | while (dap) { | ||
45 | if (dap->proc == proc) return 0; | ||
46 | dap = dap->next; | ||
47 | } | ||
48 | |||
49 | dap = malloc(sizeof(*dap)); | ||
50 | |||
51 | if (!dap) | ||
52 | return -1; | ||
53 | |||
54 | dap->next = dumb_atexit_proc; | ||
55 | dap->proc = proc; | ||
56 | dumb_atexit_proc = dap; | ||
57 | |||
58 | return 0; | ||
59 | } | ||
60 | |||
61 | |||
62 | |||
63 | void dumb_exit(void) | ||
64 | { | ||
65 | while (dumb_atexit_proc) { | ||
66 | DUMB_ATEXIT_PROC *next = dumb_atexit_proc->next; | ||
67 | (*dumb_atexit_proc->proc)(); | ||
68 | free(dumb_atexit_proc); | ||
69 | dumb_atexit_proc = next; | ||
70 | } | ||
71 | } | ||