From: ho.namkoong Date: Wed, 13 Nov 2013 10:56:50 +0000 (+0900) Subject: SDB: fix pull bug in Windows X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F39%2F12339%2F1;p=sdk%2Ftools%2Fsdb.git SDB: fix pull bug in Windows 1. If pull path contains device like c:, d:, e:, so on... it shows error message 2. sdb is killed if destination path is device like c:\, d:\, e:\, and so on... Change-Id: Id536515960968ddb7ab7314136226b30c8b30196 --- diff --git a/src/file_sync_client.c b/src/file_sync_client.c index 37a1c59..fc317a6 100644 --- a/src/file_sync_client.c +++ b/src/file_sync_client.c @@ -199,8 +199,14 @@ int do_sync_copy(char* srcp, char* dstp, FILE_FUNC* srcF, FILE_FUNC* dstF, int i } } - if(src_dir == -1 || dst_dir == -1) { - LOG_ERROR("src_dir: %d, dst_dir %d\n", src_dir, dst_dir); + if(src_dir == -1) { + fprintf(stderr, "source directory %s is not a file or directory\n", src_dir); + finalize(src_fd, dst_fd, srcF, dstF); + return 1; + } + + if(dst_dir == -1) { + fprintf(stderr, "source directory %s is not a file or directory\n", src_dir); finalize(src_fd, dst_fd, srcF, dstF); return 1; } diff --git a/src/utils.c b/src/utils.c index baa2245..ec5c386 100755 --- a/src/utils.c +++ b/src/utils.c @@ -25,6 +25,7 @@ #include "fdevent.h" #include "sdb_constants.h" +#include "strutils.h" #define TRACE_TAG TRACE_SDB @@ -42,6 +43,19 @@ int is_directory(char* path) { struct stat st; if(stat(path, &st)) { + +#if defined(OS_WINDOWS) + // For checking drives like c:, d: + if(s_strnlen(path, 3) == 2) { + if(*(path+1) == ':') { + char drive = *path; + if( (drive >= 65 && drive <= 90) || (drive >= 97 && drive <= 122)) { + return 1; + } + } + } +#endif + fprintf(stderr,"cannot stat '%s': %s\n", path, strerror(errno)); return -1; } @@ -89,7 +103,7 @@ void append_file(char* result_path, char* dir, char* append_dir) { int len = strlen(append_dir); if(len > 0) { - if(append_dir[0] == '/') { + if(append_dir[0] == '/' || append_dir[0] == '\\') { tmp_append = append_dir + 1; } else { @@ -101,7 +115,7 @@ void append_file(char* result_path, char* dir, char* append_dir) { } int dir_len = strlen(dir); - if(dir_len > 0 && dir[dir_len -1] != '/') { + if(dir_len > 0 && dir[dir_len -1] != '/' && dir[dir_len -1] != '\\') { snprintf(result_path, PATH_MAX, "%s/%s",dir, tmp_append); } else { diff --git a/src/utils_windows.c b/src/utils_windows.c index 9fb3b07..04c3225 100755 --- a/src/utils_windows.c +++ b/src/utils_windows.c @@ -346,7 +346,6 @@ static int check_file_err(HANDLE h) { return 1; } - _fh_close(h); DWORD err = GetLastError(); if(err == ERROR_PATH_NOT_FOUND) {