Skip to content

Commit bdd23ae

Browse files
committed
Use libcore Posix class for StatFs implementation
Remove some JNI and duplicated functionality and use libcore's Posix class for the statfs function instead. Change-Id: Ic1e161dc10c18c2c6ee81d895a0efd8910086dbf
1 parent 48de12c commit bdd23ae

File tree

3 files changed

+52
-198
lines changed

3 files changed

+52
-198
lines changed

core/java/android/os/StatFs.java

Lines changed: 52 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,59 +16,77 @@
1616

1717
package android.os;
1818

19+
import libcore.io.ErrnoException;
20+
import libcore.io.Libcore;
21+
import libcore.io.StructStatFs;
22+
1923
/**
20-
* Retrieve overall information about the space on a filesystem. This is a
21-
* Wrapper for Unix statfs().
24+
* Retrieve overall information about the space on a filesystem. This is a
25+
* wrapper for Unix statfs().
2226
*/
2327
public class StatFs {
28+
private StructStatFs mStat;
29+
2430
/**
25-
* Construct a new StatFs for looking at the stats of the
26-
* filesystem at <var>path</var>. Upon construction, the stat of
27-
* the file system will be performed, and the values retrieved available
28-
* from the methods on this class.
29-
*
30-
* @param path A path in the desired file system to state.
31+
* Construct a new StatFs for looking at the stats of the filesystem at
32+
* {@code path}. Upon construction, the stat of the file system will be
33+
* performed, and the values retrieved available from the methods on this
34+
* class.
35+
*
36+
* @param path path in the desired file system to stat.
3137
*/
32-
public StatFs(String path) { native_setup(path); }
33-
38+
public StatFs(String path) {
39+
mStat = doStat(path);
40+
}
41+
42+
private static StructStatFs doStat(String path) {
43+
try {
44+
return Libcore.os.statfs(path);
45+
} catch (ErrnoException e) {
46+
throw new IllegalArgumentException("Invalid path: " + path, e);
47+
}
48+
}
49+
3450
/**
35-
* Perform a restat of the file system referenced by this object. This
36-
* is the same as re-constructing the object with the same file system
37-
* path, and the new stat values are available upon return.
51+
* Perform a restat of the file system referenced by this object. This is
52+
* the same as re-constructing the object with the same file system path,
53+
* and the new stat values are available upon return.
3854
*/
39-
public void restat(String path) { native_restat(path); }
40-
41-
@Override
42-
protected void finalize() { native_finalize(); }
55+
public void restat(String path) {
56+
mStat = doStat(path);
57+
}
4358

4459
/**
45-
* The size, in bytes, of a block on the file system. This corresponds
46-
* to the Unix statfs.f_bsize field.
60+
* The size, in bytes, of a block on the file system. This corresponds to
61+
* the Unix {@code statfs.f_bsize} field.
4762
*/
48-
public native int getBlockSize();
63+
public int getBlockSize() {
64+
return (int) mStat.f_bsize;
65+
}
4966

5067
/**
51-
* The total number of blocks on the file system. This corresponds
52-
* to the Unix statfs.f_blocks field.
68+
* The total number of blocks on the file system. This corresponds to the
69+
* Unix {@code statfs.f_blocks} field.
5370
*/
54-
public native int getBlockCount();
71+
public int getBlockCount() {
72+
return (int) mStat.f_blocks;
73+
}
5574

5675
/**
5776
* The total number of blocks that are free on the file system, including
58-
* reserved blocks (that are not available to normal applications). This
59-
* corresponds to the Unix statfs.f_bfree field. Most applications will
60-
* want to use {@link #getAvailableBlocks()} instead.
77+
* reserved blocks (that are not available to normal applications). This
78+
* corresponds to the Unix {@code statfs.f_bfree} field. Most applications
79+
* will want to use {@link #getAvailableBlocks()} instead.
6180
*/
62-
public native int getFreeBlocks();
81+
public int getFreeBlocks() {
82+
return (int) mStat.f_bfree;
83+
}
6384

6485
/**
6586
* The number of blocks that are free on the file system and available to
66-
* applications. This corresponds to the Unix statfs.f_bavail field.
87+
* applications. This corresponds to the Unix {@code statfs.f_bavail} field.
6788
*/
68-
public native int getAvailableBlocks();
69-
70-
private int mNativeContext;
71-
private native void native_restat(String path);
72-
private native void native_setup(String path);
73-
private native void native_finalize();
89+
public int getAvailableBlocks() {
90+
return (int) mStat.f_bavail;
91+
}
7492
}

core/jni/Android.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ LOCAL_SRC_FILES:= \
6767
android_os_ParcelFileDescriptor.cpp \
6868
android_os_Parcel.cpp \
6969
android_os_SELinux.cpp \
70-
android_os_StatFs.cpp \
7170
android_os_SystemClock.cpp \
7271
android_os_SystemProperties.cpp \
7372
android_os_Trace.cpp \

core/jni/android_os_StatFs.cpp

Lines changed: 0 additions & 163 deletions
This file was deleted.

0 commit comments

Comments
 (0)