⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 natruntime.cc

📁 this gcc-g++-3.3.1.tar.gz is a source file of gcc, you can learn more about gcc through this codes f
💻 CC
📖 第 1 页 / 共 2 页
字号:
voidjava::lang::Runtime::traceMethodCalls (jboolean){  // Do nothing.}#if ! defined (DEFAULT_FILE_ENCODING) && defined (HAVE_ICONV) \    && defined (HAVE_NL_LANGINFO)static char *file_encoding (){  setlocale (LC_CTYPE, "");  char *e = nl_langinfo (CODESET);  if (e == NULL || *e == '\0')    e = "8859_1";  return e;}#define DEFAULT_FILE_ENCODING file_encoding ()#endif#ifndef DEFAULT_FILE_ENCODING#define DEFAULT_FILE_ENCODING "8859_1"#endifstatic char *default_file_encoding = DEFAULT_FILE_ENCODING;#if HAVE_GETPWUID_R/* Use overload resolution to find out the signature of getpwuid_r.  */  /* This is Posix getpwuid_r.  */template <typename T_uid, typename T_passwd, typename T_buf, typename T_len>static inline intgetpwuid_adaptor(int (*getpwuid_r)(T_uid user_id, T_passwd *pwd_r,				   T_buf *buf_r, T_len len_r,				   T_passwd **pwd_entry_ptr),		 uid_t user_id, struct passwd *pwd_r,		 char *buf_r, size_t len_r, struct passwd **pwd_entry){  return getpwuid_r (user_id, pwd_r, buf_r, len_r, pwd_entry);}/* This is used on HPUX 10.20 */template <typename T_uid, typename T_passwd, typename T_buf, typename T_len>static inline intgetpwuid_adaptor(int (*getpwuid_r)(T_uid user_id, T_passwd *pwd_r,				   T_buf *buf_r, T_len len_r),		 uid_t user_id, struct passwd *pwd_r,		 char *buf_r, size_t len_r, struct passwd **pwd_entry){  return getpwuid_r (user_id, pwd_r, buf_r, len_r);}/* This is used on IRIX 5.2.  */template <typename T_uid, typename T_passwd, typename T_buf, typename T_len>static inline intgetpwuid_adaptor(T_passwd * (*getpwuid_r)(T_uid user_id, T_passwd *pwd_r,					  T_buf *buf_r, T_len len_r),		 uid_t user_id, struct passwd *pwd_r,		 char *buf_r, size_t len_r, struct passwd **pwd_entry){  *pwd_entry = getpwuid_r (user_id, pwd_r, buf_r, len_r);  return (*pwd_entry == NULL) ? errno : 0;}#endifvoidjava::lang::Runtime::insertSystemProperties (java::util::Properties *newprops){  // A convenience define.#define SET(Prop,Val) \	newprops->put(JvNewStringLatin1 (Prop), JvNewStringLatin1 (Val))  // A mixture of the Java Product Versioning Specification  // (introduced in 1.2), and earlier versioning properties.  SET ("java.version", GCJVERSION);  SET ("java.vendor", "Free Software Foundation, Inc.");  SET ("java.vendor.url", "http://gcc.gnu.org/java/");  SET ("java.class.version", "46.0");  SET ("java.vm.specification.version", "1.0");  SET ("java.vm.specification.name", "Java(tm) Virtual Machine Specification");  SET ("java.vm.specification.vendor", "Sun Microsystems Inc.");  SET ("java.vm.version", __VERSION__);  SET ("java.vm.vendor", "Free Software Foundation, Inc.");  SET ("java.vm.name", "GNU libgcj");  SET ("java.specification.version", "1.3");  SET ("java.specification.name", "Java(tm) Platform API Specification");  SET ("java.specification.vendor", "Sun Microsystems Inc.");  char value[100];#define NAME "GNU libgcj "  strcpy (value, NAME);  strncpy (value + sizeof (NAME) - 1, __VERSION__,	   sizeof(value) - sizeof(NAME));  value[sizeof (value) - 1] = '\0';  jstring version = JvNewStringLatin1 (value);  newprops->put (JvNewStringLatin1 ("java.fullversion"), version);  newprops->put (JvNewStringLatin1 ("java.vm.info"), version);  // This definition is rather arbitrary: we choose $(prefix).  In  // part we do this because most people specify only --prefix and  // nothing else when installing gcj.  Plus, people are free to  // redefine `java.home' with `-D' if necessary.  SET ("java.home", PREFIX);  SET ("gnu.classpath.home", PREFIX);  SET ("file.encoding", default_file_encoding);#ifdef HAVE_UNAME  struct utsname u;  if (! uname (&u))    {      SET ("os.name", u.sysname);      SET ("os.arch", u.machine);      SET ("os.version", u.release);    }  else    {      SET ("os.name", "unknown");      SET ("os.arch", "unknown");      SET ("os.version", "unknown");    }#endif /* HAVE_UNAME */#ifndef NO_GETUID#ifdef HAVE_PWD_H  uid_t user_id = getuid ();  struct passwd *pwd_entry;#ifdef HAVE_GETPWUID_R  struct passwd pwd_r;  size_t len_r = 200;  char *buf_r = (char *) _Jv_AllocBytes (len_r);  while (buf_r != NULL)    {      int r = getpwuid_adaptor (getpwuid_r, user_id, &pwd_r,				buf_r, len_r, &pwd_entry);      if (r == 0)	break;      else if (r != ERANGE)	{	  pwd_entry = NULL;	  break;	}      len_r *= 2;      buf_r = (char *) _Jv_AllocBytes (len_r);    }#else  pwd_entry = getpwuid (user_id);#endif /* HAVE_GETPWUID_R */  if (pwd_entry != NULL)    {      SET ("user.name", pwd_entry->pw_name);      SET ("user.home", pwd_entry->pw_dir);    }#endif /* HAVE_PWD_H */#endif /* NO_GETUID */#ifdef HAVE_GETCWD#ifdef HAVE_UNISTD_H  /* Use getcwd to set "user.dir". */  int buflen = 250;  char *buffer = (char *) malloc (buflen);  while (buffer != NULL)    {      if (getcwd (buffer, buflen) != NULL)	{	  SET ("user.dir", buffer);	  break;	}      if (errno != ERANGE)	break;      buflen = 2 * buflen;      buffer = (char *) realloc (buffer, buflen);    }  if (buffer != NULL)    free (buffer);#endif /* HAVE_UNISTD_H */#endif /* HAVE_GETCWD */  // Set user locale properties based on setlocale()#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)  // We let the user choose the locale.  However, since Java differs  // from POSIX, we arbitrarily pick LC_MESSAGES as determining the  // Java locale.  We can't use LC_ALL because it might return a full  // list of all the settings.  If we don't have LC_MESSAGES then we  // just default to `en_US'.  setlocale (LC_ALL, "");  char *locale = setlocale (LC_MESSAGES, "");  if (locale && strlen (locale) >= 2)    {      char buf[3];      buf[2] = '\0';      // copy the first two chars to user.language      strncpy (buf, locale, 2);      SET ("user.language", buf);      // if the next char is a '_', copy the two after that to user.region      locale += 2;      if (locale[0] == '_')        {	  locale++;	  strncpy (buf, locale, 2);	  SET ("user.region", buf);        }    }  else#endif /* HAVE_SETLOCALE and HAVE_LC_MESSAGES */    {      SET ("user.language", "en");      SET ("user.region", "US");    }    // Set some properties according to whatever was compiled in with  // `-D'.  for (int i = 0; _Jv_Compiler_Properties[i]; ++i)    {      const char *s, *p;      // Find the `='.      for (s = p = _Jv_Compiler_Properties[i]; *s && *s != '='; ++s)	;      jstring name = JvNewStringLatin1 (p, s - p);      jstring val = JvNewStringLatin1 (*s == '=' ? s + 1 : s);      newprops->put (name, val);    }  // Set the system properties from the user's environment.#ifndef DISABLE_GETENV_PROPERTIES  if (_Jv_Environment_Properties)    {      size_t i = 0;      while (_Jv_Environment_Properties[i].key)	{	  SET (_Jv_Environment_Properties[i].key, 	       _Jv_Environment_Properties[i].value);	  i++;	}    }#endif  if (_Jv_Jar_Class_Path)    newprops->put(JvNewStringLatin1 ("java.class.path"),		  JvNewStringLatin1 (_Jv_Jar_Class_Path));  else    {      // FIXME: find libgcj.zip and append its path?      char *classpath = ::getenv("CLASSPATH");      jstring cp = newprops->getProperty (JvNewStringLatin1("java.class.path"));      java::lang::StringBuffer *sb = new java::lang::StringBuffer ();            if (classpath)	{	  sb->append (JvNewStringLatin1 (classpath));#ifdef WIN32	  sb->append ((jchar) ';');#else	  sb->append ((jchar) ':');#endif	}      if (cp != NULL)	sb->append (cp);      else	sb->append ((jchar) '.');            newprops->put(JvNewStringLatin1 ("java.class.path"),		      sb->toString ());    }  // The name used to invoke this process (argv[0] in C).  SET ("gnu.gcj.progname", _Jv_GetSafeArg (0));  // Allow platform specific settings and overrides.  _Jv_platform_initProperties (newprops);  // If java.library.path is set, tell libltdl so we search the new  // directories as well.  FIXME: does this work properly on Windows?  String *path = newprops->getProperty(JvNewStringLatin1("java.library.path"));  if (path)    {      char *val = (char *) _Jv_Malloc (JvGetStringUTFLength (path) + 1);      jsize total = JvGetStringUTFRegion (path, 0, path->length(), val);      val[total] = '\0';      _Jv_SetDLLSearchPath (val);      _Jv_Free (val);    }  else    {      // Set a value for user code to see.      // FIXME: JDK sets this to the actual path used, including      // LD_LIBRARY_PATH, etc.      SET ("java.library.path", "");    }}java::lang::Process *java::lang::Runtime::execInternal (jstringArray cmd,				   jstringArray env,				   java::io::File *dir){  return new java::lang::ConcreteProcess (cmd, env, dir);}jintjava::lang::Runtime::availableProcessors (void){  // FIXME: find the real value.  return 1;}jstringjava::lang::Runtime::nativeGetLibname (jstring pathname, jstring libname){  java::lang::StringBuffer *sb = new java::lang::StringBuffer ();  sb->append(pathname);  if (pathname->length() > 0)    {      // FIXME: use platform function here.#ifdef WIN32      sb->append ((jchar) '\\');#else      sb->append ((jchar) '/');#endif    }  sb->append (JvNewStringLatin1 (_Jv_platform_solib_prefix));  sb->append(libname);  sb->append (JvNewStringLatin1 (_Jv_platform_solib_suffix));  return sb->toString();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -