+++ /dev/null
-// natCore -- C++ side of Core
-
-/* Copyright (C) 2001, 2002 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-/* Author: Anthony Green <green@redhat.com>. */
-
-#include <config.h>
-
-#include <gcj/cni.h>
-#include <jvm.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <java/lang/NullPointerException.h>
-#include <java/io/IOException.h>
-#include <gnu/gcj/Core.h>
-
-typedef struct core_chain_struct
-{
- int name_length;
- const char *name;
- int data_length;
- const void *data;
-
- struct core_chain_struct *next;
-} core_chain;
-
-static core_chain *root;
-
-void _Jv_RegisterResource (void *vptr)
-{
- char *rptr = (char *)vptr;
-
- // These are permanent data structures for now. This routine is
- // called from a static constructor, so we shouldn't depend on too
- // much existing infrastructure.
- core_chain *cc = (core_chain *) _Jv_Malloc (sizeof (core_chain));
-
- cc->name_length = ((int *)rptr)[0];
- cc->data_length = ((int *)rptr)[1];
- cc->name = rptr + 2*sizeof(int);
- cc->data = cc->name + cc->name_length;
-
- // Add this new item to the chain...
- core_chain *old_root = root;
- cc->next = old_root;
- root = cc;
-}
-
-gnu::gcj::Core *
-gnu::gcj::Core::create (jstring name)
-{
- char *buf = (char *) __builtin_alloca (JvGetStringUTFLength (name) + 1);
- jsize total = JvGetStringUTFRegion (name, 0, name->length(), buf);
- buf[total] = '\0';
-
- // Usually requests here end up as an absolute URL. We strip the
- // initial `/'.
- if (buf[0] == '/')
- {
- ++buf;
- --total;
- }
-
- core_chain *node = root;
-
- while (node)
- {
- if (total == node->name_length
- && strncmp (buf, node->name, total) == 0)
- {
- gnu::gcj::Core *core =
- (gnu::gcj::Core *) _Jv_AllocObject(&gnu::gcj::Core::class$,
- sizeof (gnu::gcj::Core));
- core->ptr = (gnu::gcj::RawData *) node->data;
- core->length = node->data_length;
- return core;
- }
- else
- node = node->next;
- }
-
- throw new java::io::IOException (JvNewStringLatin1 ("can't open core"));
-}