diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2014-04-19 11:11:30 +0200 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2014-04-19 11:11:30 +0200 |
commit | 812520315318e358d2d9daf9ca709578af1efe40 (patch) | |
tree | d5dff4f4c06aa4554707a6ad717dc73a576313d0 /storage/connect/osutil.c | |
parent | cc7a08c9410335237e6c19f84d9c5d08938b8e8a (diff) | |
parent | b43e82dce63c07abe8de740b3bf18a33600ccac0 (diff) | |
download | mariadb-git-812520315318e358d2d9daf9ca709578af1efe40.tar.gz |
- Commit merged files
modified:
storage/connect/CMakeLists.txt
storage/connect/connect.h
storage/connect/global.h
storage/connect/ha_connect.cc
storage/connect/ha_connect.h
storage/connect/myconn.cpp
storage/connect/myconn.h
storage/connect/mysql-test/connect/r/pivot.result
storage/connect/mysql-test/connect/suite.pm
storage/connect/mysql-test/connect/t/pivot.test
storage/connect/myutil.cpp
storage/connect/osutil.c
storage/connect/plgdbsem.h
storage/connect/plugutil.c
storage/connect/tabmysql.cpp
storage/connect/tabpivot.cpp
storage/connect/tabutil.cpp
storage/connect/user_connect.cc
storage/connect/valblk.cpp
storage/connect/valblk.h
storage/connect/value.cpp
storage/connect/value.h
storage/connect/xindex.cpp
storage/connect/xindex.h
Diffstat (limited to 'storage/connect/osutil.c')
-rw-r--r-- | storage/connect/osutil.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/storage/connect/osutil.c b/storage/connect/osutil.c index 3c1ca0147c6..66985847ce7 100644 --- a/storage/connect/osutil.c +++ b/storage/connect/osutil.c @@ -16,6 +16,7 @@ my_bool CloseFileHandle(HANDLE h) #include <sys/stat.h> #include <ctype.h> #include <fcntl.h> +#include <pwd.h> extern FILE *debug; @@ -172,16 +173,23 @@ char *_fullpath(char *absPath, const char *relPath, size_t maxLength) // Fixme char *p; - if( *relPath == '\\' || *relPath == '/' ) { + if ( *relPath == '\\' || *relPath == '/' ) { strncpy(absPath, relPath, maxLength); - } else if(*relPath == '~') { + } else if (*relPath == '~') { // get the path to the home directory - // Fixme - strncpy(absPath, relPath, maxLength); - } else { + struct passwd *pw = getpwuid(getuid()); + const char *homedir = pw->pw_dir; + + if (homedir) + strcat(strncpy(absPath, homedir, maxLength), relPath + 1); + else + strncpy(absPath, relPath, maxLength); + + } else { char buff[2*_MAX_PATH]; - assert(getcwd(buff, _MAX_PATH) != NULL); + p= getcwd(buff, _MAX_PATH); + assert(p); strcat(buff,"/"); strcat(buff, relPath); strncpy(absPath, buff, maxLength); |