mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
94e5d7de85
modified: storage/connect/CMakeLists.txt modified: storage/connect/JavaWrappers.jar modified: storage/connect/colblk.h modified: storage/connect/filter.cpp modified: storage/connect/filter.h modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h modified: storage/connect/jdbccat.h modified: storage/connect/jdbconn.cpp modified: storage/connect/jdbconn.h modified: storage/connect/mongofam.cpp modified: storage/connect/mongofam.h modified: storage/connect/mycat.cc modified: storage/connect/mycat.h modified: storage/connect/tabext.h modified: storage/connect/tabjdbc.cpp modified: storage/connect/tabjdbc.h modified: storage/connect/tabjson.cpp modified: storage/connect/tabjson.h modified: storage/connect/tabmgo.cpp modified: storage/connect/tabmgo.h created: storage/connect/Mongo2Interface.java created: storage/connect/Mongo3Interface.java created: storage/connect/cmgoconn.cpp created: storage/connect/cmgoconn.h created: storage/connect/javaconn.cpp created: storage/connect/javaconn.h created: storage/connect/jmgfam.cpp created: storage/connect/jmgfam.h created: storage/connect/jmgoconn.cpp created: storage/connect/jmgoconn.h created: storage/connect/mongo.cpp created: storage/connect/mongo.h created: storage/connect/tabjmg.cpp created: storage/connect/tabjmg.h - tdbp not initialized when catched exception in CntGetTDB (connect.cc line 188) modified: storage/connect/connect.h - CheckCleanup should sometimes doing cleanup on pure info Sometimes MariaDB loops on info to get the size of all tables in a database. This can sometimes fail by exhausted memory. CheckCleanup now have a force boolean parameter (defaulting to false) modified: storage/connect/ha_connect.cc modified: storage/connect/user_connect.cc modified: storage/connect/user_connect.h Change the copyright of some source files modified: storage/connect/connect.cc modified: storage/connect/connect.h modified: storage/connect/engmsg.h modified: storage/connect/global.h modified: storage/connect/ha_connect.cc modified: storage/connect/ha_connect.h modified: storage/connect/msgid.h modified: storage/connect/mycat.cc modified: storage/connect/mycat.h modified: storage/connect/os.h modified: storage/connect/osutil.c modified: storage/connect/osutil.h modified: storage/connect/user_connect.cc modified: storage/connect/user_connect.h
179 lines
3.8 KiB
C
179 lines
3.8 KiB
C
/* Copyright (C) MariaDB Corporation Ab */
|
|
#include "my_global.h"
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include "osutil.h"
|
|
|
|
#ifdef __WIN__
|
|
my_bool CloseFileHandle(HANDLE h)
|
|
{
|
|
return !CloseHandle(h);
|
|
} /* end of CloseFileHandle */
|
|
|
|
#else /* UNIX */
|
|
/* code to handle Linux and Solaris */
|
|
#include <unistd.h>
|
|
#include <sys/stat.h>
|
|
#include <ctype.h>
|
|
#include <fcntl.h>
|
|
#include <pwd.h>
|
|
|
|
extern FILE *debug;
|
|
|
|
/***********************************************************************/
|
|
/* Define some functions not existing in the UNIX library. */
|
|
/***********************************************************************/
|
|
PSZ strupr(PSZ p)
|
|
{
|
|
register int i;
|
|
|
|
for (i = 0; p[i]; i++)
|
|
p[i] = toupper(p[i]);
|
|
|
|
return (p);
|
|
} /* end of strupr */
|
|
|
|
PSZ strlwr(PSZ p)
|
|
{
|
|
register int i;
|
|
|
|
for (i = 0; p[i]; i++)
|
|
p[i] = tolower(p[i]);
|
|
|
|
return (p);
|
|
} /* end of strlwr */
|
|
|
|
/***********************************************************************/
|
|
/* Define the splitpath function not existing in the UNIX library. */
|
|
/***********************************************************************/
|
|
void _splitpath(LPCSTR name, LPSTR drive, LPSTR dir, LPSTR fn, LPSTR ft)
|
|
{
|
|
LPCSTR p2, p = name;
|
|
|
|
#ifdef DEBTRACE
|
|
htrc("SplitPath: name=%s [%s (%d)]\n",
|
|
XSTR(name), XSTR(__FILE__), __LINE__);
|
|
#endif
|
|
|
|
if (drive) *drive = '\0';
|
|
if (dir) *dir = '\0';
|
|
if (fn) *fn = '\0';
|
|
if (ft) *ft = '\0';
|
|
|
|
if ((p2 = strrchr(p, '/'))) {
|
|
p2++;
|
|
if (dir) strncat(dir, p, p2 - p);
|
|
p = p2;
|
|
} /* endif p2 */
|
|
|
|
if ((p2 = strrchr(p, '.'))) {
|
|
if (fn) strncat(fn, p, p2 - p);
|
|
if (ft) strcpy(ft, p2);
|
|
} else
|
|
if (fn) strcpy(fn, p);
|
|
|
|
#ifdef DEBTRACE
|
|
htrc("SplitPath: name=%s drive=%s dir=%s filename=%s type=%s [%s(%d)]\n",
|
|
XSTR(name), XSTR(drive), XSTR(dir), XSTR(fn), XSTR(ft), __FILE__, __LINE__);
|
|
#endif
|
|
} /* end of _splitpath */
|
|
|
|
/***********************************************************************/
|
|
/* Define the makepath function not existing in the UNIX library. */
|
|
/***********************************************************************/
|
|
void _makepath(LPSTR name, LPCSTR drive __attribute__((unused)), LPCSTR dir, LPCSTR fn, LPCSTR ft)
|
|
{
|
|
int n;
|
|
|
|
if (!name)
|
|
return;
|
|
else
|
|
*name = '\0';
|
|
|
|
if (dir && (n = strlen(dir)) > 0) {
|
|
strcpy(name, dir);
|
|
|
|
if (name[n-1] != '/')
|
|
strcat(name, "/");
|
|
|
|
} /* endif dir */
|
|
|
|
if (fn)
|
|
strcat(name, fn);
|
|
|
|
if (ft && strlen(ft)) {
|
|
if (*ft != '.')
|
|
strcat(name, ".");
|
|
|
|
strcat(name, ft);
|
|
} /* endif ft */
|
|
|
|
} /* end of _makepath */
|
|
|
|
my_bool CloseFileHandle(HANDLE h)
|
|
{
|
|
return (close(h)) ? TRUE : FALSE;
|
|
} /* end of CloseFileHandle */
|
|
|
|
int GetLastError()
|
|
{
|
|
return errno;
|
|
} /* end of GetLastError */
|
|
|
|
unsigned long _filelength(int fd)
|
|
{
|
|
struct stat st;
|
|
|
|
if (fd == -1)
|
|
return 0;
|
|
|
|
if (fstat(fd, &st) != 0)
|
|
return 0;
|
|
|
|
return st.st_size;
|
|
} /* end of _filelength */
|
|
|
|
char *_fullpath(char *absPath, const char *relPath, size_t maxLength)
|
|
{
|
|
// Fixme
|
|
char *p;
|
|
|
|
if ( *relPath == '\\' || *relPath == '/' ) {
|
|
strncpy(absPath, relPath, maxLength);
|
|
} else if (*relPath == '~') {
|
|
// get the path to the home directory
|
|
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];
|
|
|
|
p= getcwd(buff, _MAX_PATH);
|
|
assert(p);
|
|
strcat(buff,"/");
|
|
strcat(buff, relPath);
|
|
strncpy(absPath, buff, maxLength);
|
|
} /* endif's relPath */
|
|
|
|
p = absPath;
|
|
|
|
for(; *p; p++)
|
|
if (*p == '\\')
|
|
*p = '/';
|
|
|
|
return absPath;
|
|
} /* end of _fullpath */
|
|
|
|
BOOL MessageBeep(uint i __attribute__((unused)))
|
|
{
|
|
// Fixme
|
|
return TRUE;
|
|
} /* end of MessageBeep */
|
|
|
|
#endif // UNIX
|