home *** CD-ROM | disk | FTP | other *** search
- #include "intern.h"
-
- #ifdef __MINT__
-
- #include <sys/cookie.h>
-
- int getcookie(char *cookie, long *p_value)
- {
- long v;
- int i;
- union
- {
- long as_long;
- char as_char[4];
- } cast;
-
- /* genialer Cast, oder? :-)) */
- cast.as_char[0] = cookie[0];
- cast.as_char[1] = cookie[1];
- cast.as_char[2] = cookie[2];
- cast.as_char[3] = cookie[3];
-
- i = Getcookie(cast.as_long, &v);
- if (p_value)
- *p_value = v;
-
- return (i == C_FOUND);
- }
-
- #else
-
- static long *my_cookiejar = NULL;
-
- static long get_cookie_adr(void)
- {
- my_cookiejar = *((long **) 0x5A0L);
- return 0L;
- }
-
-
- int getcookie(char *cookie, long *p_value)
- {
- long *cookiejar, c;
- int i;
- union
- {
- long as_long;
- char as_char[3];
- } cast;
-
- if (my_cookiejar == NULL)
- Supexec(get_cookie_adr);
-
- cookiejar = my_cookiejar;
-
- if (!cookiejar || !cookiejar[0])
- return FALSE;
-
- /* Ein einfacherer Cast fiel mir nicht ein :-)) */
- for (i = 0; i<4; i++)
- cast.as_char[i] = cookie[i];
- c = cast.as_long;
-
- do
- {
- if (cookiejar[0] == c)
- {
- if (p_value)
- *p_value = cookiejar[1];
- return TRUE;
- }
- else
- cookiejar = &(cookiejar[2]);
- }
- while (cookiejar[0] || !cookie);
-
- if (p_value)
- *p_value = 0;
- return FALSE;
- }
-
- #endif
-