diff options
| author | Christopher Tate <ctate@google.com> | 2011-12-12 15:39:07 -0800 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2011-12-12 15:39:07 -0800 |
| commit | 1f4bada6674e052eb44e174c6abbb0a9948f498a (patch) | |
| tree | 489dc760a339cab38a2c76d7aa889e13bc73a237 /adb | |
| parent | 13805ae9595e0e85a98632439abfaf2893630338 (diff) | |
| parent | 650307df33fc834c251df71c78b00cc0ae6529b7 (diff) | |
| download | system_core-1f4bada6674e052eb44e174c6abbb0a9948f498a.tar.gz system_core-1f4bada6674e052eb44e174c6abbb0a9948f498a.tar.bz2 system_core-1f4bada6674e052eb44e174c6abbb0a9948f498a.zip | |
am 650307df: am b1dfffe6: Fix \'adb backup\' on Windows
* commit '650307df33fc834c251df71c78b00cc0ae6529b7':
Fix 'adb backup' on Windows
Diffstat (limited to 'adb')
| -rw-r--r-- | adb/commandline.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/adb/commandline.c b/adb/commandline.c index 9f4ae97b..31ba3acc 100644 --- a/adb/commandline.c +++ b/adb/commandline.c @@ -581,9 +581,29 @@ static int logcat(transport_type transport, char* serial, int argc, char **argv) return 0; } +static int mkdirs(char *path) +{ + int ret; + char *x = path + 1; + + for(;;) { + x = adb_dirstart(x); + if(x == 0) return 0; + *x = 0; + ret = adb_mkdir(path, 0775); + *x = OS_PATH_SEPARATOR; + if((ret < 0) && (errno != EEXIST)) { + return ret; + } + x++; + } + return 0; +} + static int backup(int argc, char** argv) { char buf[4096]; - const char* filename = "./backup.ab"; + char default_name[32]; + const char* filename = strcpy(default_name, "./backup.ab"); int fd, outFd; int i, j; @@ -606,7 +626,9 @@ static int backup(int argc, char** argv) { /* bare "adb backup" or "adb backup -f filename" are not valid invocations */ if (argc < 2) return usage(); - outFd = adb_open_mode(filename, O_WRONLY | O_CREAT | O_TRUNC, 0640); + adb_unlink(filename); + mkdirs((char *)filename); + outFd = adb_creat(filename, 0640); if (outFd < 0) { fprintf(stderr, "adb: unable to open file %s\n", filename); return -1; |
