jdk/src/solaris/native/sun/nio/fs/BsdNativeDispatcher.c
changeset 13571 737b7b4bd73a
parent 12047 320a714614e9
child 14342 8435a30053c1
equal deleted inserted replaced
13570:9ed2d9645e1c 13571:737b7b4bd73a
    44 
    44 
    45 static jfieldID entry_name;
    45 static jfieldID entry_name;
    46 static jfieldID entry_dir;
    46 static jfieldID entry_dir;
    47 static jfieldID entry_fstype;
    47 static jfieldID entry_fstype;
    48 static jfieldID entry_options;
    48 static jfieldID entry_options;
    49 static jfieldID entry_dev;
       
    50 
       
    51 
    49 
    52 struct fsstat_iter {
    50 struct fsstat_iter {
    53     struct statfs *buf;
    51     struct statfs *buf;
    54     int pos;
    52     int pos;
    55     int nentries;
    53     int nentries;
    79     }
    77     }
    80     entry_name = (*env)->GetFieldID(env, clazz, "name", "[B");
    78     entry_name = (*env)->GetFieldID(env, clazz, "name", "[B");
    81     entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B");
    79     entry_dir = (*env)->GetFieldID(env, clazz, "dir", "[B");
    82     entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B");
    80     entry_fstype = (*env)->GetFieldID(env, clazz, "fstype", "[B");
    83     entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B");
    81     entry_options = (*env)->GetFieldID(env, clazz, "opts", "[B");
    84     entry_dev = (*env)->GetFieldID(env, clazz, "dev", "J");
       
    85 }
    82 }
    86 
    83 
    87 JNIEXPORT jlong JNICALL
    84 JNIEXPORT jlong JNICALL
    88 Java_sun_nio_fs_BsdNativeDispatcher_getfsstat(JNIEnv* env, jclass this)
    85 Java_sun_nio_fs_BsdNativeDispatcher_getfsstat(JNIEnv* env, jclass this)
    89 {
    86 {
   158     fstype = iter->buf[iter->pos].f_fstypename;
   155     fstype = iter->buf[iter->pos].f_fstypename;
   159     if (iter->buf[iter->pos].f_flags & ISREADONLY)
   156     if (iter->buf[iter->pos].f_flags & ISREADONLY)
   160         options="ro";
   157         options="ro";
   161     else
   158     else
   162         options="";
   159         options="";
   163     dev = 0;
       
   164 
   160 
   165     iter->pos++;
   161     iter->pos++;
   166 
   162 
   167     len = strlen(name);
   163     len = strlen(name);
   168     bytes = (*env)->NewByteArray(env, len);
   164     bytes = (*env)->NewByteArray(env, len);
   189     bytes = (*env)->NewByteArray(env, len);
   185     bytes = (*env)->NewByteArray(env, len);
   190     if (bytes == NULL)
   186     if (bytes == NULL)
   191         return -1;
   187         return -1;
   192     (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)options);
   188     (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)options);
   193     (*env)->SetObjectField(env, entry, entry_options, bytes);
   189     (*env)->SetObjectField(env, entry, entry_options, bytes);
   194 
       
   195     if (dev != 0)
       
   196         (*env)->SetLongField(env, entry, entry_dev, (jlong)dev);
       
   197 
   190 
   198     return 0;
   191     return 0;
   199 }
   192 }
   200 
   193 
   201 JNIEXPORT void JNICALL
   194 JNIEXPORT void JNICALL
   206     if (iter != NULL) {
   199     if (iter != NULL) {
   207         free(iter->buf);
   200         free(iter->buf);
   208         free(iter);
   201         free(iter);
   209     }
   202     }
   210 }
   203 }
       
   204