r6831@lvps87-230-33-50: verhaegs | 2008-02-03 14:08:57 +0100
[tangerine.git] / compiler / clib / __arosc_userdata.c
bloba21594f48d5d25239b6f1e12013242f0146b0ac9
1 #include "__arosc_privdata.h"
3 #include <proto/exec.h>
4 #include <proto/dos.h>
5 #include <dos/dosextens.h>
6 #include <sys/arosc.h>
8 #include <stdlib.h>
10 #include "arosc_init.h"
12 #include "__ctype.h"
13 #include "etask.h"
15 #include <aros/debug.h>
17 extern struct Library *aroscbase;
19 struct arosc_userdata * __get_arosc_userdata(void)
21 struct arosc_privdata *acpd = NULL;
23 #ifdef AROSC_SHARED
24 struct Task *curtask = FindTask(NULL);
26 acpd = GetIntETask(curtask)->iet_acpd;
28 if (acpd == NULL)
30 #warning FIXME: This is a quick hack to make old programs which use
31 #warning the libc from inside newly created tasks/processes
32 #warning without going trough special libc routines
33 #warning (yet to be written).
35 struct Task *parent = GetETask(curtask)->et_Parent;
37 if (parent)
38 acpd = GetIntETask(parent)->iet_acpd;
40 #endif
42 if (acpd == NULL)
44 /* No acpd found? Fall back to the builtin one. */
45 static struct arosc_privdata acpd_static =
47 .acpd_acud.acud_ctype_b = &__ctype_b_array[128],
48 .acpd_acud.acud_ctype_toupper = &__ctype_toupper_array[128],
49 .acpd_acud.acud_ctype_tolower = &__ctype_tolower_array[128],
52 return &acpd_static.acpd_acud;
55 return &acpd->acpd_acud;