📄 natcore.cc
字号:
// 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 theLibgcj License. Please consult the file "LIBGCJ_LICENSE" fordetails. *//* 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"));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -