/[classpath]/classpath/native/jni/java-net/java_net_InetAddress.c
ViewVC logotype

Diff of /classpath/native/jni/java-net/java_net_InetAddress.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by mark, Tue Jan 22 22:27:02 2002 UTC revision 1.3 by mark, Fri Nov 22 21:09:13 2002 UTC
# Line 79  JNIEXPORT jarray JNICALL Line 79  JNIEXPORT jarray JNICALL
79  Java_java_net_InetAddress_lookupInaddrAny(JNIEnv *env, jclass class)  Java_java_net_InetAddress_lookupInaddrAny(JNIEnv *env, jclass class)
80  {  {
81    jarray arr;    jarray arr;
82    int *octets;    jbyte *octets;
83    
84    /* Allocate an array for the IP address */    /* Allocate an array for the IP address */
85    arr = (*env)->NewIntArray(env, 4);    arr = (*env)->NewByteArray(env, 4);
86    if (!arr)          if (!arr)      
87      {      {
88        JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, "Internal Error");        JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, "Internal Error");
# Line 90  Java_java_net_InetAddress_lookupInaddrAn Line 90  Java_java_net_InetAddress_lookupInaddrAn
90      }      }
91    
92    /* Copy in the values */    /* Copy in the values */
93    octets = (*env)->GetIntArrayElements(env, arr, 0);    octets = (*env)->GetByteArrayElements(env, arr, 0);
94    
95    octets[0] = (INADDR_ANY & 0xFF000000) >> 24;    octets[0] = (INADDR_ANY & 0xFF000000) >> 24;
96    octets[1] = (INADDR_ANY & 0x00FF0000) >> 16;    octets[1] = (INADDR_ANY & 0x00FF0000) >> 16;
97    octets[2] = (INADDR_ANY & 0x0000FF00) >> 8;    octets[2] = (INADDR_ANY & 0x0000FF00) >> 8;
98    octets[3] = (INADDR_ANY & 0x000000FF);    octets[3] = (INADDR_ANY & 0x000000FF);
99    
100    (*env)->ReleaseIntArrayElements(env, arr, octets, 0);    (*env)->ReleaseByteArrayElements(env, arr, octets, 0);
101    
102    return(arr);    return(arr);
103  }  }
# Line 111  Java_java_net_InetAddress_lookupInaddrAn Line 111  Java_java_net_InetAddress_lookupInaddrAn
111  JNIEXPORT jstring JNICALL  JNIEXPORT jstring JNICALL
112  Java_java_net_InetAddress_getHostByAddr(JNIEnv *env, jclass class, jarray arr)  Java_java_net_InetAddress_getHostByAddr(JNIEnv *env, jclass class, jarray arr)
113  {  {
114    jint *octets;    jbyte *octets;
115    jsize len;    jsize len;
116    int addr;    int addr;
117    struct hostent *hp;    struct hostent *hp;
# Line 125  Java_java_net_InetAddress_getHostByAddr( Line 125  Java_java_net_InetAddress_getHostByAddr(
125        return (jstring)NULL;        return (jstring)NULL;
126      }      }
127    
128    octets = (*env)->GetIntArrayElements(env, arr, 0);    octets = (*env)->GetByteArrayElements(env, arr, 0);
129    if (!octets)    if (!octets)
130      {      {
131        JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, "Bad IP Address");        JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, "Bad IP Address");
# Line 137  Java_java_net_InetAddress_getHostByAddr( Line 137  Java_java_net_InetAddress_getHostByAddr(
137    addr = htonl(addr);    addr = htonl(addr);
138    
139    /* Release some memory */    /* Release some memory */
140    (*env)->ReleaseIntArrayElements(env, arr, octets, 0);    (*env)->ReleaseByteArrayElements(env, arr, octets, 0);
141    
142    /* Resolve the address and return the name */    /* Resolve the address and return the name */
143    hp = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET);    hp = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET);
# Line 159  Java_java_net_InetAddress_getHostByName( Line 159  Java_java_net_InetAddress_getHostByName(
159  {  {
160    const char *hostname;    const char *hostname;
161    struct hostent *hp;    struct hostent *hp;
162    int i, ip, *octets;    int i, ip;
163      jbyte *octets;
164    jsize num_addrs;    jsize num_addrs;
165    jclass arr_class;    jclass arr_class;
166    jobjectArray addrs;    jobjectArray addrs;
# Line 177  Java_java_net_InetAddress_getHostByName( Line 178  Java_java_net_InetAddress_getHostByName(
178    hp = gethostbyname(hostname);    hp = gethostbyname(hostname);
179    if (!hp)    if (!hp)
180      {      {
181        JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, hostname);        JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, host);
182        return (jobjectArray)NULL;        return (jobjectArray)NULL;
183      }      }
184    (*env)->ReleaseStringUTFChars(env, host, hostname);    (*env)->ReleaseStringUTFChars(env, host, hostname);
# Line 203  Java_java_net_InetAddress_getHostByName( Line 204  Java_java_net_InetAddress_getHostByName(
204    /* Now loop and copy in each address */    /* Now loop and copy in each address */
205    for (i = 0; i < num_addrs; i++)    for (i = 0; i < num_addrs; i++)
206      {      {
207        ret_octets = (*env)->NewIntArray(env, 4);        ret_octets = (*env)->NewByteArray(env, 4);
208        if (!ret_octets)              if (!ret_octets)      
209        {        {
210          JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, "Internal Error");          JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, "Internal Error");
211          return (jobjectArray)NULL;          return (jobjectArray)NULL;
212        }        }
213    
214        octets = (*env)->GetIntArrayElements(env, ret_octets, 0);        octets = (*env)->GetByteArrayElements(env, ret_octets, 0);
215    
216        ip = ntohl(*(int*)(hp->h_addr_list[i]));        ip = ntohl(*(int*)(hp->h_addr_list[i]));
217        octets[0] = (ip & 0xFF000000) >> 24;        octets[0] = (ip & 0xFF000000) >> 24;
# Line 218  Java_java_net_InetAddress_getHostByName( Line 219  Java_java_net_InetAddress_getHostByName(
219        octets[2] = (ip & 0x0000FF00) >> 8;        octets[2] = (ip & 0x0000FF00) >> 8;
220        octets[3] = (ip & 0x000000FF);        octets[3] = (ip & 0x000000FF);
221    
222        (*env)->ReleaseIntArrayElements(env, ret_octets, octets, 0);        (*env)->ReleaseByteArrayElements(env, ret_octets, octets, 0);
223        (*env)->SetObjectArrayElement(env, addrs, i, ret_octets);        (*env)->SetObjectArrayElement(env, addrs, i, ret_octets);
224      }      }
225    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26