5d930cadc8f62aee5f18e7921296fe66a54f18ab |
|
24-Apr-2014 |
Elliott Hughes <enh@google.com> |
Groundwork towards making the Libcore.os functionality public. Change-Id: Ie700aa16d91fba53fc5eb2555829cb74d84b12ad
|
f0d40d662d9dfdb04215c718961765837d2cf00c |
|
11-Apr-2014 |
Neil Fuller <nfuller@google.com> |
libcore changes to support asynchronous close interruption Previously AsynchronousSocketCloseMonitor was used to handle socket interruption on close. To support the same for FileChannel it has been renamed to AsynchronousCloseMonitor. The Java class was already called this. FileInputStream, FileOutputStream, RandomAccessFile will now throw IOException if a connection is closed by another thread during read. Thread.interrupt() continues to have no effect on streams. FileChannel will now throw AsynchronousCloseException during reads and writes if the file is closed, per the documentation. FileChannel will now throw ClosedByInterruptException during reads and writes if the thread reading/writing is interrupted. Note: FileChannel.lock() will probably still not not throw AsynchronousCloseException, though it probably should. This change also has impact on external/conscrypt and frameworks/base. Change-Id: I37de3e7d1a005a73821221e6156d10b95c595d7a Bug: 13927110
|
93fdc1ef9d8a221207fb6c668a883e92b7d84f84 |
|
14-Feb-2014 |
Narayan Kamath <narayan@google.com> |
DO NOT MERGE Remove use of file absolute paths. An absolute path is derived from a relative path by appending the value of "user.dir" to it. "user.dir" is populated by the VM by calling getcwd(3). All apps forked from zygote end up with a "user.dir" (and a current working directory) value of "/". This, along with change 417621196b855 (which prevents "user.dir" from being changed by apps) will make file handling a lot more consistent. In particular 417621196 ensures that - The output of getAbsolutePath can never change for a given relative path. - File.getPath() and File.getAbsolutePath() become interchangeable wrt. lower level (Libcore.os) APIs. (cherry picked from commit 5fecee2da855e92afbcba3a231f4685a56f17967) Bug: 13763685 Bug: 13763900 Change-Id: I5598a2b1c5de65b59d69324f98656ffe031290f0
|
5fecee2da855e92afbcba3a231f4685a56f17967 |
|
14-Feb-2014 |
Narayan Kamath <narayan@google.com> |
Remove use of file absolute paths. An absolute path is derived from a relative path by appending the value of "user.dir" to it. "user.dir" is populated by the VM by calling getcwd(3). All apps forked from zygote end up with a "user.dir" (and a current working directory) value of "/". This, along with change 417621196b855 (which prevents "user.dir" from being changed by apps) will make file handling a lot more consistent. In particular 417621196 ensures that - The output of getAbsolutePath can never change for a given relative path. - File.getPath() and File.getAbsolutePath() become interchangeable wrt. lower level (Libcore.os) APIs. Change-Id: I5598a2b1c5de65b59d69324f98656ffe031290f0
|
d45b1db47a0258ecb532671e87ebd5ec3df28498 |
|
11-May-2013 |
Elliott Hughes <enh@google.com> |
Clean up two unnecessary 'implements' clauses. Bug: 3484927 Change-Id: I29ce16d47f880399894c84940dbe9f091831fa06
|
b1f55cb6f95928be969a8fe5c7447e13f14d0a68 |
|
19-Jul-2011 |
Elliott Hughes <enh@google.com> |
Fix FileInputStream/FileOutputStream on unowned FileDescriptors. We were relying on the fd being invalid to prevent us from performing activity on a closed stream. Unfortunately, this didn't work with our clever scheme to avoid having to treat the two cases separately. Go back to a simple scheme with one FileDescriptor and a boolean that tells us whether or not we should close it. If we don't close it, we switch it out for an invalid FileDescriptor so we won't continue to act on the unowned FileDescriptor. Bug: 4361076 Change-Id: I1851926fd2847ea63d91a8e0680a7430ecb16453
|
0b736ebc4efef64f2db1999aea90297ad8196146 |
|
20-May-2011 |
Elliott Hughes <enh@google.com> |
Move the stuff to bridge between io/net/nio semantics and POSIX semantics. IoUtils should be more generally useful. Change-Id: I5665f2a94d226ada3077a30045549a53cc741cf0
|
462bdac45c10f43d88d8f07f6994e272a27c14a2 |
|
30-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add close(2). This is sufficient for non-socket fds, but may need to change to support the asynchronous socket close monitor. (Hopefully not; I'd rather lift that into Java.) I've also changed the semantics of IoUtils.close to match those desired by all callers: ignore null/invalid FileDescriptors. Bug: 3107501 Change-Id: Iad5c31c8f0f34d2a5ab1ed4581509b46af28bd1f
|
8b15dcc5890963edad4dfcf558cc16027c7985e5 |
|
29-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add sendfile(2). This patch marks the end of OSFileSystem. Having to support a Java "long*" for sendfile(2) gave me an opportunity to go back and improve my ioctl(2) to use a corresponding "int*" equivalent, instead of its previous special-case hack. Bug: 3107501 Change-Id: I9fde4777700552263fab4fe9aeb556174163e3dc
|
461d0d860814c68154d8dd06d24f94118f33d28a |
|
29-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add ioctl(2) for int*. I'm not adding the "struct ifreq" stuff yet because that's really hairy and I plan on rewriting the NetworkInterface implementation anyway, so it'll mainly be based on /proc. With any luck, we won't even need those other ioctls then. I'm not sure _this_ ioctl is a good idea, but it does seem like a slight improvement on the old code, and we can always move it back out if/when these APIs become more public. Bug: 3107501 Change-Id: Iceac15e4a107c33bfc8795976a747c2ffa59a183
|
78c7cc547101002b9f9043cf3845970719d1bda8 |
|
26-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add write(2). Note that this is a functional change, because the old code was wrong: it assumed that short writes don't happen. I thought we'd (I'd) cleaned this up just recently, but it looks like I must have only gone through the network code. Embarrassing. This also cleans up the previous read change a bit, factoring out a bit more duplication, and taking advantage of the fact that we now get decent exceptions thrown from invalid FileDescriptors (meaning we can remove explicit checks). Bug: 3107501 Change-Id: I8bd5324836c9d151dceaef5b84ec523a67391b64
|
26c7025a7a919044771fb89031161bd26fe03032 |
|
26-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add read(2). For both byte[]s and ByteBuffers. Bug: 3107501 Change-Id: I93b781069ade4507371c8fe8c5fda0163fbb2dbb
|
0ac77ac8e915bff1a863e371f9b363033f9cf759 |
|
23-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add open(2). Bug: 3107501 Change-Id: I404030b4c678862465d04f723a6a324663e0af25
|
dedaccdfa07c370a58cba08b096133ad9eec0ec3 |
|
18-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add lseek(2). Bug: 3107501 Change-Id: Ie27e2ae1c7d37de5f02b1d81ee2005182339f881
|
52724d3ebd4ccaaa4b9f5576e329d4272cde8ea9 |
|
17-Mar-2011 |
Elliott Hughes <enh@google.com> |
Add fsync(2) and fdatasync(2). Interesting parts to this change: * first BlockGuard support (and general delegation support). * first rethrowing of ErrnoException as IOException. * switching FileChannelImpl from int to FileDescriptor. The special case in FileDescriptor.sync has been removed. Testing with the RI showed that it doesn't treat syncing a FileDescriptor that corresponds to a socket as a special case --- it throws SyncFailedException just like normal. Bug: 3107501 Change-Id: I99faf120bd802aec0397a79772ed38c5e1542fed
|
cdf7a1f942469221bcfd63d9cdf71851b011eaf0 |
|
16-Mar-2011 |
Elliott Hughes <enh@google.com> |
Expose POSIX constants. And use them, too. This patch is a little confusing because we already had constants in Java that were using the POSIX names but that didn't actually correspond to the constants whose names they'd stolen. Ugh. Bug: 3107501 Change-Id: Ib64a109c9340b0ecdf80bec91074206c001f455a
|
ff8234c90ecab9f1db368924bf92a5b16460f9b5 |
|
08-Mar-2011 |
Elliott Hughes <enh@google.com> |
Factor out our single-byte InputStream.read/OutputStream.write implementations. Change-Id: I00106a51a32ea84a39256d5629369170b892a039
|
eb8027492e81d5d3a0d1cd49494c59f9a03eeaa3 |
|
07-Mar-2011 |
Elliott Hughes <enh@google.com> |
Remove useless overrides of InputStream.read(byte[]) and OutputStream.write(byte[]). For the particular stream in the bug, the useless override assumes that the implementation of read(byte[], int, int) or write(byte[], int, int) doesn't do anything special. A dangerous and non-local assumption. (In the bug, we need to change the three-argument write.) Bug: http://code.google.com/p/android/issues/detail?id=15304 Change-Id: I915d4a2e20c98f8e7f5775b555ae77d496a535d0
|
0f524004b71b732c888d10eab57008bc65d8a3e0 |
|
20-Jan-2011 |
Owen Lin <owenlin@google.com> |
Skip bytes by reading if the file is not seekable. And also add unit test for FileInputStream.skip() for a pipe. bug: 3298498 Change-Id: Iceecdd42654700e00f15b53759a3761e1c4da943
|
ad41624e761bcf1af9c8008eb45187fc13983717 |
|
07-Jan-2011 |
Elliott Hughes <enh@google.com> |
Retire SecurityManager. This change removes all the code that was calling getSecurityManager, and removes all use of AccessController.doPrivileged. It also changes the implementation of AccessController so it doesn't actually do anything; it's only there for source-level compatibility. Bug: 2585285 Change-Id: I1f0295a4f12bce0316d8073011d8593fee116f71
|
a1603838fe9e865575c87982e32c6343740e464c |
|
11-Dec-2010 |
Elliott Hughes <enh@google.com> |
Lots more bounds-checking/exception-throwing consistency. Overflow-safe checks all round, plus better detail messages. This isn't quite everything, but it's a large chunk of the work. Most notably, this is all of io and nio. There are numerous changes of exception priority here, and the harmony tests noticed a subset of them in the nio code. I've modified our checked-out copy of the tests to accept any of the throwable exceptions. Change-Id: Id185f1228fb9a1d5fc9494e78375b5623fb0fe14
|
bd3f08d95b31543b5f1fe3d93594efc9c8a2879b |
|
05-Nov-2010 |
Brian Carlstrom <bdc@google.com> |
Remove CloseGuard warnings for FileInputStream/FileOutputStream created from FileDescriptors Change-Id: Ie3c0b9926810136fbbf48294e50f8a4f63f1eb0e
|
12f2d8e2760b78c673b7a187b9062b3938a03147 |
|
12-Oct-2010 |
Brian Carlstrom <bdc@google.com> |
Revised CloseGuard usage pattern - CloseGuard.get() instants are now "unopened" - In constructor cases, guard.open("...") is now at the end - In metod cases, guard.open("...") is now after resource acquisition - guard null pointer checks in finalizers in case constructor threw exception Bug: 2645458 Change-Id: Ieb874a8c33b347768a9fa7437b3dd16f3d56d886
|
f7aab022dcbfcd8f27b409ab92b4bca4a84d0b8a |
|
30-Sep-2010 |
Brian Carlstrom <bdc@google.com> |
CloseGuard: finalizers for closeable objects should log complaints Introducing CloseGuard which warns when resources are implictly cleaned up by finalizers when an explicit termination method, to use the Effective Java "Issue 7: Avoid finalizers" terminology, should have been used by the caller. libcore classes that can use CloseGuard now do so. Bug: 3041575 Change-Id: I4a4e3554addaf3075c823feb0a0ff0ad1c1f6196
|
e2f58c9501eac730d048199906dc41fe8e4cd6e9 |
|
29-Sep-2010 |
Brian Carlstrom <bdc@google.com> |
Scrub missing calls to super.finalize() Bug: 3024226 Change-Id: I6642cb9d4929ba72244529efe4ebdfa595ae4fa7
|
024784c977a744708ab0bcefc4337d491e429937 |
|
21-Sep-2010 |
Jesse Wilson <jessewilson@google.com> |
Love for FileInputStream and FileOutputStream. This changes FileOutputStream to open its channel lazily. Doing so requires a new field, mode. It saves the allocation of the channel and its accompanying infrastructure in the common case. This adds example usage complete with the necessary buffers, and removed documentation that was redundant from the superclass. Change-Id: Ib23d12cef075169a574fddedcaf1fec018eb726c http://b/3018687
|
ae704b984c10a63883cc366e823d53902d6ac7a9 |
|
21-Sep-2010 |
Elliott Hughes <enh@google.com> |
Minor tidy-up. The nio implementation is still a bit of a mess because Java doesn't have any kind of "module" concept, nor "friend". But this makes it a little less untidy, and makes the deliberate access control subversions a little more explicit, and makes various things less accessible than they were. Change-Id: I514b1e24000b91f86b768ed408fedae115dc3080
|
3db0d1b07a79c3c871b0aa0929674adae3081b4f |
|
28-Aug-2010 |
Elliott Hughes <enh@google.com> |
Remove the accessors hiding our IFileSystem and INetworkSystem. These accessors aren't buying us anything, are costing us something, and have encouraged caching of instances in fields all over the place. Lose all that cruft. I think we all agree that we want to merge IFileSystem and INetworkSystem at some point, but I'll do that some other day. Change-Id: I07696ec9650d0395ec31a71a74300e818a3fed91
|
99a89dd6f0a0e1396aa9b3feebf15ea31f703d3a |
|
04-Aug-2010 |
Elliott Hughes <enh@google.com> |
Rewrite the nio Pipe to use a Unix pipe behind the scenes. We were using an AF_INET or AF_INET6 socket to implement the nio Pipe, which was causing trouble for people on systems where IPv6 wasn't working yet. This patch switches over to pipe(2). My first implementation used socketpair(2) and retained the SocketChannelImpls, but it still seemed a bit off to be asking for a full-duplex pipe to implement a unidirectional channel, and it required hacks in the networking code to cope with the AF_LOCAL family, and in the BlockGuard for the isLingeringSocket test. This implementation uses pipe(2) and FileChannelImpl. It breaks a few tests, but the tests are wrong, and it actually brings us closer to the RI's behavior of throwing IOException "broken pipe" when writing to a broken pipe. Rather than keep throwing junk into the FileSystem/NetworkSystem classes, and resolving the question of which of those setNonBlocking belonged in (answer: neither; this is a false Windows-style dichotomy that isn't helpful here), I've added a new IoUtils with a few generally useful methods. The remainder of this patch switches over existing code. We could probably make FileDescriptor.descriptor private now I've exposed accessors, but this change is large enough already... Bug: 2735373 Bug: http://code.google.com/p/android/issues/detail?id=9431 Change-Id: I6b6d1e50bdddd435e71c31105a73c9d4fd135d7e
|
aaacdb095b10293286adbfd94af2fd83b8dae3a8 |
|
22-Jul-2010 |
Elliott Hughes <enh@google.com> |
Remove File's cached UTF-8 byte[]. This doesn't really improve File.getCanonicalPath and its helpers much, but it improves everything else, and feels like a step in the right direction. Benchmarking shows only a tiny difference in the uncommon case of a reused File, and a significant increase in performance in the more likely case of a single-use File. Before: benchmark us Exists 26.14 ExistsReuse 5.08 After: benchmark us Exists 13.90 ExistsReuse 5.23 Bug: 2281992 Change-Id: Ibc6fd2581983ae8a57bf4b7f49196c76ad41169e
|
b1396870f92135aa140bd2b86221768dea5bc11d |
|
25-May-2010 |
Elliott Hughes <enh@google.com> |
Remove the luni localized exception messages. Also fix a bug I introduced in KXmlSerializer: s.isEmpty() is not equivalent to "".equals(s) if s is allowed to be null. Bug: 1251121 Change-Id: I41a0a98ffb49f214041c9110f824d327af5c34e8
|
a008cf079f1cb812ec42a4fcc941fe170cc9b40d |
|
13-May-2010 |
Elliott Hughes <enh@google.com> |
Minor file system changes. Use fstat(2) instead of three seek(2)s to get the length of a file. Java's readv should return -1 at EOF rather than 0. The size() == 0 check in FileChannelImpl was (apparently) bogus. (These changes are basically the same as harmony changes, and fix existing harmony tests, so no new tests.) Change-Id: I302611f777e91571b95654e03d0a3a41e1f97968
|
582d926fbf5f5fd4800def67f86ecfedee44681e |
|
05-Apr-2010 |
Elliott Hughes <enh@google.com> |
Froyo InputStream.available documentation improvement. This method causes a lot of confusion, and we can do a lot better. (Ideally, the API would either not exist or be something like "public boolean ready()".) I've removed poor-quality documentation overrides too, so the full documentation is visible in most places. (InflaterInputStream is an obvious exception.) Also, to a lesser extent, improve the InputStream.skip documentation. Change-Id: I6d6cd788e6a32ad4a2613d1e381610f1ad8575fe
|
49e79cdc1aadb2922178e8905a7907df0bdaf7b3 |
|
12-Mar-2010 |
Elliott Hughes <enh@google.com> |
Use ioctl(FIONREAD) rather than recv(MSG_PEEK) to implement Socket.available. As well as avoiding unnecessary work, this also means we can reuse the native code we already have for ioctl(FIONREAD), though we need to change the interface to take FileDescriptor rather than int, and extract the int on the native side. Change-Id: I4c6d9e4e72e514e3e7872c7f882bda5441059915
|
93a4b2a6cc35a72aa5a58027025f3e18c0ec2e64 |
|
05-Dec-2009 |
Elliott Hughes <enh@google.com> |
More java.io.File cleanup. Two changes: 1. Change the createNewFile JNI to match the Java interface, so we can lose the glue. (Also make the Java/JNI names match, and sort the table of native method names alphabetically.) 2. Fix the caching of the path byte sequence so we're caching the exact byte sequence we want to hand to JNI. Also switch to caching the byte[] at construction time, rather than hiding it behind an accessor. There's a deliberate functional change here too: previously we were inconsistent about which encoding was in use. Sometimes it was explicitly UTF-8, other times the default platform encoding (which happens to be UTF-8 on Android). Now we always use UTF-8. (But note that the File.list methods, which I haven't got to yet, still return a mix of UTF-8 and platform-encoded strings.) Bug: 2281992
|
4fefecee9d4a5d2a4510f516b4015607b19e8d09 |
|
13-Nov-2009 |
Jean-Baptiste Queru <jbq@google.com> |
eclair snapshot
|
5839b909d9528b7726e678a4b696ed37df15d897 |
|
10-Oct-2009 |
Jesse Wilson <jessewilson@google.com> |
Udating luni to Harmony r823222. Highlights: - InputStream.skip concurrency issue - "better" messages in bound exceptions for streams and arrays - prefer fewer writes to underlying streams (using byte[] buffers) - Rename subclasses to not reuse names from their superclasses - PlatformAddressFactory.allocMap bugfix Plus some spelling fixes, style fixes, serial version UIDs and other boilerplate improvements.
|
109fc1115e7afd2907544b805eaa2cc8a0e2635f |
|
01-Oct-2009 |
Elliott Hughes <enh@google.com> |
Simplify FileInputStream.skip to match the RI. The RI throws IOException on any non-seekable stream, including stdin. This patch removes harmony's special-case hack for stdin, and the native cruft that wasn't even necessary if you did want a special hack for stdin. Bug: 1542253
|
f5597e626ecf7949d249dea08c1a2964d890ec11 |
|
25-Jul-2009 |
Jesse Wilson <jessewilson@google.com> |
Integrate luni module (but not tests) to Harmony r772995. Notable changes - Stripped "@since Android 1.0" from many files. Most files are now 100% the same in Dalvik and Harmony. - AbstractStringBuilder.reverse() supports surrogates - AbstractStringBuilder shares less to waste less memory - Bitset optimized - BufferedInputStream changed to support unsynchronized close() - BufferedOutputStream does flushInternal - BufferedReader supports EBCDIC NEL - Collections.synchronizedList().indexOf() does a copy for more concurrency - Classes in nio module changed: DatagramChannelImpl, SocketChannelImpl and ServerSocketChannelImpl (these depend on internal APIs changed in this update) - DataInputStream/DataOutputStream now use a small buffer to limit the number of times the underlying stream is accessed - Date now has a minutes offset, more efficient toString() - ExposedByteArrayInputStream: new internal class - DeleteOnExit moved to top-level class - FileDescriptor.isValid() now non-native - Float, Double lessThan optimized (fix for compare(-0.0F, 0.0F) still pending) - FileURLConnection now guesses content types from streams - HashMap iterator changes - Hashtable iterator changes - INetworkSystem - removes bind2(), createMulticastSocket, sendStream(), - renames createSocket to createStreamSocket - JarURLConnection rewritten - LinkedHashMap: new iterator - Locale, Currency, TimeZone: now use ICU in Harmony, plain Java in Dalvik - ObjectInputStream: Accessor objects in Harmony, direct native in Dalvik - ProxyClassFile - many changes - String - optimized ascii for toLowerCase, toUpperCase, compare - Timer - rewritten - TreeMap - rewritten - URLClassLoader - new - URLConnection - new guessContentTypeFromStream(), uses org.apache.harmony.awt.www.content to lookup content type handlers
|
adc854b798c1cfe3bfd4c27d68d5cee38ca617da |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
1c0fed63c71ddb230f3b304aac12caffbedf2f21 |
|
04-Mar-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //depot/cupcake/@135843
|
a0881d052ee72e3f7e773374e9b1aa75fbd6be4c |
|
10-Jan-2009 |
The Android Open Source Project <initial-contribution@android.com> |
auto import from //branches/cupcake/...@125939
|
dd828f42a5c83b4270d4fbf6fce2da1878f1e84a |
|
18-Dec-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Code drop from //branches/cupcake/...@124589
|
fdb2704414a9ed92394ada0d1395e4db86889465 |
|
21-Oct-2008 |
The Android Open Source Project <initial-contribution@android.com> |
Initial Contribution
|