diff options
| author | Joe Onorato <joeo@android.com> | 2009-06-18 18:23:43 -0700 |
|---|---|---|
| committer | Joe Onorato <joeo@android.com> | 2009-06-18 18:41:11 -0700 |
| commit | 5d605dc56b036232e885f6ec36b888b729673060 (patch) | |
| tree | 8a29f6a2feb495cbac08bb43b08e0ca9b8cf7dce /core | |
| parent | d2d9ceb7305d593c1b767bbb05de0082a9af4109 (diff) | |
| download | frameworks_base-5d605dc56b036232e885f6ec36b888b729673060.zip frameworks_base-5d605dc56b036232e885f6ec36b888b729673060.tar.gz frameworks_base-5d605dc56b036232e885f6ec36b888b729673060.tar.bz2 | |
backup stuff
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/com/android/internal/backup/LocalTransport.java | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/core/java/com/android/internal/backup/LocalTransport.java b/core/java/com/android/internal/backup/LocalTransport.java index 5caa015..3ef8666 100644 --- a/core/java/com/android/internal/backup/LocalTransport.java +++ b/core/java/com/android/internal/backup/LocalTransport.java @@ -80,28 +80,35 @@ public class LocalTransport extends IBackupTransport.Stub { byte[] buf = new byte[bufSize]; while (changeSet.readNextHeader()) { String key = changeSet.getKey(); + String base64Key = new String(Base64.encode(key.getBytes())); + File entityFile = new File(packageDir, base64Key); + int dataSize = changeSet.getDataSize(); - String base64Key = new String(Base64.encode(key.getBytes())); if (DEBUG) Log.v(TAG, "Got change set key=" + key + " size=" + dataSize + " key64=" + base64Key); - if (dataSize > bufSize) { - bufSize = dataSize; - buf = new byte[bufSize]; - } - changeSet.readEntityData(buf, 0, dataSize); - if (DEBUG) Log.v(TAG, " + data size " + dataSize); - File entityFile = new File(packageDir, base64Key); - FileOutputStream entity = new FileOutputStream(entityFile); - try { - entity.write(buf, 0, dataSize); - } catch (IOException e) { - Log.e(TAG, "Unable to update key file " - + entityFile.getAbsolutePath()); - err = -1; - } finally { - entity.close(); + if (dataSize >= 0) { + FileOutputStream entity = new FileOutputStream(entityFile); + + if (dataSize > bufSize) { + bufSize = dataSize; + buf = new byte[bufSize]; + } + changeSet.readEntityData(buf, 0, dataSize); + if (DEBUG) Log.v(TAG, " data size " + dataSize); + + try { + entity.write(buf, 0, dataSize); + } catch (IOException e) { + Log.e(TAG, "Unable to update key file " + + entityFile.getAbsolutePath()); + err = -1; + } finally { + entity.close(); + } + } else { + entityFile.delete(); } } } catch (IOException e) { @@ -172,7 +179,8 @@ public class LocalTransport extends IBackupTransport.Stub { int size = (int) f.length(); byte[] buf = new byte[size]; in.read(buf); - out.writeEntityHeader(f.getName(), size); + String key = new String(Base64.decode(f.getName())); + out.writeEntityHeader(key, size); out.writeEntityData(buf, size); } } catch (Exception e) { |
