diff options
Diffstat (limited to 'libjava/classpath/native/jni/java-nio')
5 files changed, 98 insertions, 38 deletions
diff --git a/libjava/classpath/native/jni/java-nio/Makefile.in b/libjava/classpath/native/jni/java-nio/Makefile.in index 1fd639fddf2..bf6243ed4be 100644 --- a/libjava/classpath/native/jni/java-nio/Makefile.in +++ b/libjava/classpath/native/jni/java-nio/Makefile.in @@ -44,16 +44,21 @@ am__aclocal_m4_deps = $(top_srcdir)/../../config/depstand.m4 \ $(top_srcdir)/../../config/lead-dot.m4 \ $(top_srcdir)/../../config/multi.m4 \ $(top_srcdir)/../../config/no-executables.m4 \ - $(top_srcdir)/../../libtool.m4 $(top_srcdir)/m4/acattribute.m4 \ - $(top_srcdir)/m4/accross.m4 $(top_srcdir)/m4/acinclude.m4 \ + $(top_srcdir)/../../libtool.m4 \ + $(top_srcdir)/../../ltoptions.m4 \ + $(top_srcdir)/../../ltsugar.m4 \ + $(top_srcdir)/../../ltversion.m4 \ + $(top_srcdir)/m4/acattribute.m4 $(top_srcdir)/m4/accross.m4 \ + $(top_srcdir)/m4/acinclude.m4 \ $(top_srcdir)/m4/ax_create_stdint_h.m4 \ + $(top_srcdir)/m4/ax_func_which_gethostbyname_r.m4 \ $(top_srcdir)/m4/gcc_attribute.m4 $(top_srcdir)/m4/iconv.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -80,15 +85,15 @@ am_libjavanio_la_OBJECTS = gnu_java_nio_VMPipe.lo \ gnu_java_nio_KqueueSelectorImpl.lo libjavanio_la_OBJECTS = $(am_libjavanio_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/../../depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \ +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libjavanio_la_SOURCES) DIST_SOURCES = $(libjavanio_la_SOURCES) @@ -99,12 +104,15 @@ ACLOCAL = @ACLOCAL@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ +AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_CLASS_FILES_FALSE = @BUILD_CLASS_FILES_FALSE@ BUILD_CLASS_FILES_TRUE = @BUILD_CLASS_FILES_TRUE@ +CAIRO_CFLAGS = @CAIRO_CFLAGS@ +CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ @@ -150,6 +158,7 @@ DATE = @DATE@ DEFAULT_PREFS_PEER = @DEFAULT_PREFS_PEER@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ @@ -162,15 +171,16 @@ ERROR_CFLAGS = @ERROR_CFLAGS@ EXAMPLESDIR = @EXAMPLESDIR@ EXEEXT = @EXEEXT@ FASTJAR = @FASTJAR@ +FGREP = @FGREP@ FIND = @FIND@ FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@ FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@ FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@ FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@ -FOUND_GCJX_FALSE = @FOUND_GCJX_FALSE@ -FOUND_GCJX_TRUE = @FOUND_GCJX_TRUE@ FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@ FOUND_GCJ_TRUE = @FOUND_GCJ_TRUE@ +FOUND_JAVAC_FALSE = @FOUND_JAVAC_FALSE@ +FOUND_JAVAC_TRUE = @FOUND_JAVAC_TRUE@ FOUND_JIKES_FALSE = @FOUND_JIKES_FALSE@ FOUND_JIKES_TRUE = @FOUND_JIKES_TRUE@ FOUND_KJC_FALSE = @FOUND_KJC_FALSE@ @@ -178,7 +188,6 @@ FOUND_KJC_TRUE = @FOUND_KJC_TRUE@ FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@ FREETYPE2_LIBS = @FREETYPE2_LIBS@ GCJ = @GCJ@ -GCJX = @GCJX@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GDK_CFLAGS = @GDK_CFLAGS@ @@ -188,6 +197,7 @@ GENINSRC_TRUE = @GENINSRC_TRUE@ GJDOC = @GJDOC@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ +GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@ @@ -199,6 +209,7 @@ INSTALL_GLIBJ_ZIP_TRUE = @INSTALL_GLIBJ_ZIP_TRUE@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAVAC = @JAVAC@ JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION = @JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION@ JAVA_MAINTAINER_MODE_FALSE = @JAVA_MAINTAINER_MODE_FALSE@ JAVA_MAINTAINER_MODE_TRUE = @JAVA_MAINTAINER_MODE_TRUE@ @@ -208,6 +219,7 @@ JIKES = @JIKES@ JIKESENCODING = @JIKESENCODING@ JIKESWARNINGS = @JIKESWARNINGS@ KJC = @KJC@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBDEBUG = @LIBDEBUG@ LIBICONV = @LIBICONV@ @@ -227,6 +239,7 @@ MKDIR = @MKDIR@ MOC = @MOC@ MOZILLA_CFLAGS = @MOZILLA_CFLAGS@ MOZILLA_LIBS = @MOZILLA_LIBS@ +NM = @NM@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ @@ -248,6 +261,7 @@ RANLIB = @RANLIB@ REGEN_PARSERS_FALSE = @REGEN_PARSERS_FALSE@ REGEN_PARSERS_TRUE = @REGEN_PARSERS_TRUE@ REMOVE = @REMOVE@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRICT_WARNING_CFLAGS = @STRICT_WARNING_CFLAGS@ @@ -275,8 +289,10 @@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ ZIP = @ZIP@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ @@ -309,6 +325,7 @@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ multi_basedir = @multi_basedir@ diff --git a/libjava/classpath/native/jni/java-nio/gnu_java_nio_VMChannel.c b/libjava/classpath/native/jni/java-nio/gnu_java_nio_VMChannel.c index 97eb38618c3..c8df841a1d6 100644 --- a/libjava/classpath/native/jni/java-nio/gnu_java_nio_VMChannel.c +++ b/libjava/classpath/native/jni/java-nio/gnu_java_nio_VMChannel.c @@ -1,5 +1,5 @@ /* gnu_java_nio_VMChannel.c - - Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -43,7 +43,6 @@ exception statement from your version. */ #include <config-int.h> #include <sys/types.h> -#include <sys/ioctl.h> #include <sys/mman.h> #include <sys/socket.h> #include <sys/stat.h> @@ -67,6 +66,14 @@ exception statement from your version. */ #include <fcntl.h> #endif /* HAVE_FCNTL_H */ +#if defined(HAVE_SYS_IOCTL_H) +#define BSD_COMP /* Get FIONREAD on Solaris2 */ +#include <sys/ioctl.h> +#endif +#if defined(HAVE_SYS_FILIO_H) /* Get FIONREAD on Solaris 2.5 */ +#include <sys/filio.h> +#endif + #define CONNECT_EXCEPTION "java/net/ConnectException" #define IO_EXCEPTION "java/io/IOException" #define SOCKET_EXCEPTION "java/net/SocketException" @@ -1501,6 +1508,10 @@ Java_gnu_java_nio_VMChannel_accept (JNIEnv *env, case EWOULDBLOCK: #endif case EAGAIN: + if (!is_non_blocking_fd(fd)) + { + JCL_ThrowException(env, SOCKET_TIMEOUT_EXCEPTION, "Accept timed out"); + } /* Socket in non-blocking mode and no pending connection. */ return -1; default: @@ -1605,8 +1616,6 @@ Java_gnu_java_nio_VMChannel_open (JNIEnv *env, int nmode = 0; int ret; const char *npath; - mode_t mask = umask (0); - umask (mask); if ((mode & CPNIO_READ) && (mode & CPNIO_WRITE)) nmode = O_RDWR; @@ -1626,7 +1635,7 @@ Java_gnu_java_nio_VMChannel_open (JNIEnv *env, /* NIODBG("path: %s; mode: %x", npath, nmode); */ - ret = open (npath, nmode, 0777 & ~mask); + ret = open (npath, nmode, 0666); /* NIODBG("ret: %d\n", ret); */ diff --git a/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvDecoder.c b/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvDecoder.c index b82cd2d900f..248a948c3c2 100644 --- a/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvDecoder.c +++ b/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvDecoder.c @@ -48,11 +48,13 @@ exception statement from your version. */ #include "gnu_java_nio_charset_iconv_IconvDecoder.h" +#if defined(HAVE_ICONV) static void createRawData (JNIEnv * env, jobject obj, void *ptr); static void *getData (JNIEnv * env, jobject obj); static jfieldID infid = NULL; static jfieldID outfid = NULL; +#endif /* Union used for type punning. */ union char_union @@ -63,9 +65,9 @@ union char_union }; JNIEXPORT void JNICALL -Java_gnu_java_nio_charset_iconv_IconvDecoder_openIconv (JNIEnv * env, - jobject obj, - jstring jname) +Java_gnu_java_nio_charset_iconv_IconvDecoder_openIconv (JNIEnv * env UNUSED, + jobject obj UNUSED, + jstring jname UNUSED) { #if defined(HAVE_ICONV) iconv_t iconv_object; @@ -107,12 +109,14 @@ Java_gnu_java_nio_charset_iconv_IconvDecoder_openIconv (JNIEnv * env, } JNIEXPORT jint JNICALL -Java_gnu_java_nio_charset_iconv_IconvDecoder_decode (JNIEnv * env, - jobject obj, - jbyteArray inArr, - jcharArray outArr, - jint posIn, jint remIn, - jint posOut, jint remOut) +Java_gnu_java_nio_charset_iconv_IconvDecoder_decode (JNIEnv * env UNUSED, + jobject obj UNUSED, + jbyteArray inArr UNUSED, + jcharArray outArr UNUSED, + jint posIn UNUSED, + jint remIn UNUSED, + jint posOut UNUSED, + jint remOut UNUSED) { #if defined(HAVE_ICONV) iconv_t iconv_object = getData (env, obj); @@ -158,8 +162,8 @@ Java_gnu_java_nio_charset_iconv_IconvDecoder_decode (JNIEnv * env, } JNIEXPORT void JNICALL -Java_gnu_java_nio_charset_iconv_IconvDecoder_closeIconv (JNIEnv * env, - jobject obj) +Java_gnu_java_nio_charset_iconv_IconvDecoder_closeIconv (JNIEnv * env UNUSED, + jobject obj UNUSED) { #if defined(HAVE_ICONV) iconv_t iconv_object; @@ -169,6 +173,7 @@ Java_gnu_java_nio_charset_iconv_IconvDecoder_closeIconv (JNIEnv * env, } +#if defined(HAVE_ICONV) static void createRawData (JNIEnv * env, jobject obj, void *ptr) { @@ -199,3 +204,5 @@ getData (JNIEnv * env, jobject obj) return JCL_GetRawData(env, data); } +#endif + diff --git a/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvEncoder.c b/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvEncoder.c index 7a98e7eee1e..54fd172863d 100644 --- a/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvEncoder.c +++ b/libjava/classpath/native/jni/java-nio/gnu_java_nio_charset_iconv_IconvEncoder.c @@ -48,11 +48,14 @@ exception statement from your version. */ #include "gnu_java_nio_charset_iconv_IconvEncoder.h" + +#if defined(HAVE_ICONV) static void createRawData (JNIEnv * env, jobject obj, void *ptr); static void *getData (JNIEnv * env, jobject obj); static jfieldID infid = NULL; static jfieldID outfid = NULL; +#endif /* Union used for type punning. */ union char_union @@ -63,9 +66,9 @@ union char_union }; JNIEXPORT void JNICALL -Java_gnu_java_nio_charset_iconv_IconvEncoder_openIconv (JNIEnv * env, - jobject obj, - jstring jname) +Java_gnu_java_nio_charset_iconv_IconvEncoder_openIconv (JNIEnv * env UNUSED, + jobject obj UNUSED, + jstring jname UNUSED) { #if defined(HAVE_ICONV) iconv_t iconv_object; @@ -107,12 +110,14 @@ Java_gnu_java_nio_charset_iconv_IconvEncoder_openIconv (JNIEnv * env, } JNIEXPORT jint JNICALL -Java_gnu_java_nio_charset_iconv_IconvEncoder_encode (JNIEnv * env, - jobject obj, - jcharArray inArr, - jbyteArray outArr, - jint posIn, jint remIn, - jint posOut, jint remOut) +Java_gnu_java_nio_charset_iconv_IconvEncoder_encode (JNIEnv * env UNUSED, + jobject obj UNUSED, + jcharArray inArr UNUSED, + jbyteArray outArr UNUSED, + jint posIn UNUSED, + jint remIn UNUSED, + jint posOut UNUSED, + jint remOut UNUSED) { #if defined(HAVE_ICONV) iconv_t iconv_object = getData (env, obj); @@ -158,8 +163,8 @@ Java_gnu_java_nio_charset_iconv_IconvEncoder_encode (JNIEnv * env, } JNIEXPORT void JNICALL -Java_gnu_java_nio_charset_iconv_IconvEncoder_closeIconv (JNIEnv * env, - jobject obj) +Java_gnu_java_nio_charset_iconv_IconvEncoder_closeIconv (JNIEnv * env UNUSED, + jobject obj UNUSED) { #if defined(HAVE_ICONV) iconv_t iconv_object; @@ -169,6 +174,7 @@ Java_gnu_java_nio_charset_iconv_IconvEncoder_closeIconv (JNIEnv * env, } +#if defined(HAVE_ICONV) static void createRawData (JNIEnv * env, jobject obj, void *ptr) { @@ -199,3 +205,4 @@ getData (JNIEnv * env, jobject obj) return JCL_GetRawData(env, data); } +#endif diff --git a/libjava/classpath/native/jni/java-nio/javanio.c b/libjava/classpath/native/jni/java-nio/javanio.c index d9e4d4f1d95..09806f8bad4 100644 --- a/libjava/classpath/native/jni/java-nio/javanio.c +++ b/libjava/classpath/native/jni/java-nio/javanio.c @@ -41,11 +41,12 @@ exception statement from your version. */ * we include this file in the header, and do not compile it. */ +#include <fcntl.h> +#include <unistd.h> #include <sys/types.h> -#include <sys/fcntl.h> #include <sys/socket.h> +#include <sys/select.h> #include <sys/uio.h> -#include <unistd.h> CPNIO_EXPORT ssize_t cpnio_read (int fd, void *buf, size_t nbytes) @@ -86,6 +87,25 @@ cpnio_connect (int fd, const struct sockaddr *addr, socklen_t addrlen) CPNIO_EXPORT int cpnio_accept (int fd, struct sockaddr *addr, socklen_t *addrlen) { + fd_set rset; + struct timeval tv; + socklen_t tvlen = sizeof(tv); + int ret; + + tv.tv_sec = 0; + tv.tv_usec = 0; + getsockopt (fd, SOL_SOCKET, SO_RCVTIMEO, &tv, &tvlen); + if (tv.tv_sec > 0 || tv.tv_usec > 0) + { + FD_ZERO(&rset); + FD_SET(fd,&rset); + ret = select (fd+1,&rset,NULL,NULL,&tv); + if (ret == 0) + { + errno = EAGAIN; + return -1; + } + } return accept (fd, addr, addrlen); } |