summaryrefslogtreecommitdiff
path: root/storage/connect/osutil.c
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2014-04-19 11:11:30 +0200
committerOlivier Bertrand <bertrandop@gmail.com>2014-04-19 11:11:30 +0200
commit812520315318e358d2d9daf9ca709578af1efe40 (patch)
treed5dff4f4c06aa4554707a6ad717dc73a576313d0 /storage/connect/osutil.c
parentcc7a08c9410335237e6c19f84d9c5d08938b8e8a (diff)
parentb43e82dce63c07abe8de740b3bf18a33600ccac0 (diff)
downloadmariadb-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.c20
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);