5c2882b25c
This change adds a fixed-size metadata block at the head of each file's content entity. The block is versioned, and fixed-size on the theory that it might be nice to be able to recover the content (if not the full metadata) of the files if we're ever confronted with data backed up some hypothetical future helper that stored expanded metadata. The net effect is that now on restore, we assign the same access mode to the file that it originally had when backed up. Also, some of the code was failing to properly free transient heap-based buffers when it encountered errors. This has been fixed with the addition of a tiny stack-based object whose job it is to free() its designated pointer from its destructor. |
||
---|---|---|
.. | ||
Android.mk | ||
Asset.cpp | ||
AssetDir.cpp | ||
AssetManager.cpp | ||
BackupData.cpp | ||
BackupHelpers.cpp | ||
Binder.cpp | ||
BpBinder.cpp | ||
BufferedTextOutput.cpp | ||
CallStack.cpp | ||
CharacterData.h | ||
Debug.cpp | ||
executablepath_darwin.cpp | ||
executablepath_linux.cpp | ||
FileMap.cpp | ||
futex_synchro.c | ||
IDataConnection.cpp | ||
IInterface.cpp | ||
IMemory.cpp | ||
InetAddress.cpp | ||
IPCThreadState.cpp | ||
IPermissionController.cpp | ||
IServiceManager.cpp | ||
LogSocket.cpp | ||
MemoryBase.cpp | ||
MemoryDealer.cpp | ||
MemoryHeapBase.cpp | ||
MemoryHeapPmem.cpp | ||
misc.cpp | ||
MODULE_LICENSE_APACHE2 | ||
NOTICE | ||
Parcel.cpp | ||
Pipe.cpp | ||
ported.cpp | ||
ProcessState.cpp | ||
README | ||
RefBase.cpp | ||
ResourceTypes.cpp | ||
SharedBuffer.cpp | ||
Socket.cpp | ||
Static.cpp | ||
StopWatch.cpp | ||
String8.cpp | ||
String16.cpp | ||
SystemClock.cpp | ||
TextOutput.cpp | ||
Threads.cpp | ||
TimerProbe.cpp | ||
Timers.cpp | ||
Unicode.cpp | ||
VectorImpl.cpp | ||
ZipEntry.cpp | ||
ZipFile.cpp | ||
ZipFileCRO.cpp | ||
ZipFileRO.cpp | ||
ZipUtils.cpp |
Android Utility Function Library If you need a feature that is native to Linux but not present on other platforms, construct a platform-dependent implementation that shares the Linux interface. That way the actual device runs as "light" as possible. If that isn't feasible, create a system-independent interface and hide the details. The ultimate goal is *not* to create a super-duper platform abstraction layer. The goal is to provide an optimized solution for Linux with reasonable implementations for other platforms.