mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-01-19 17:51:42 +08:00
Merge pull request #293 from mdbtools/no-wordexp
SQL: Allow spaces in DB names (remove wordexp.h)
This commit is contained in:
@@ -30,7 +30,6 @@ AC_PROG_YACC
|
|||||||
dnl Checks for header files.
|
dnl Checks for header files.
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
AC_CHECK_HEADERS(fcntl.h limits.h unistd.h xlocale.h)
|
AC_CHECK_HEADERS(fcntl.h limits.h unistd.h xlocale.h)
|
||||||
AC_CHECK_HEADERS(wordexp.h)
|
|
||||||
AC_CHECK_LIB(mswstr, DBLCMapStringW)
|
AC_CHECK_LIB(mswstr, DBLCMapStringW)
|
||||||
AC_CHECK_DECLS([program_invocation_short_name], [], [], [[
|
AC_CHECK_DECLS([program_invocation_short_name], [], [], [[
|
||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
|
|||||||
@@ -20,11 +20,6 @@
|
|||||||
#define _XOPEN_SOURCE
|
#define _XOPEN_SOURCE
|
||||||
#include "mdbsql.h"
|
#include "mdbsql.h"
|
||||||
|
|
||||||
#ifdef HAVE_WORDEXP_H
|
|
||||||
#define HAVE_WORDEXP
|
|
||||||
#include <wordexp.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_STRPTIME
|
#ifdef HAVE_STRPTIME
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -191,35 +186,9 @@ mdb_sql_close(MdbSQL *sql)
|
|||||||
|
|
||||||
MdbHandle *mdb_sql_open(MdbSQL *sql, char *db_name)
|
MdbHandle *mdb_sql_open(MdbSQL *sql, char *db_name)
|
||||||
{
|
{
|
||||||
char *db_namep = db_name;
|
sql->mdb = mdb_open(db_name, MDB_NOFLAGS);
|
||||||
|
if ((!sql->mdb) && (!strstr(db_name, ".mdb"))) {
|
||||||
#ifdef HAVE_WORDEXP
|
char *tmpstr = g_strconcat(db_name, ".mdb", NULL);
|
||||||
wordexp_t words;
|
|
||||||
int need_free_words = 0;
|
|
||||||
|
|
||||||
switch (wordexp(db_name, &words, 0))
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
if (words.we_wordc>0)
|
|
||||||
{
|
|
||||||
db_namep = words.we_wordv[0];
|
|
||||||
}
|
|
||||||
need_free_words = 1;
|
|
||||||
break;
|
|
||||||
case WRDE_NOSPACE:
|
|
||||||
// If the error was WRDE_NOSPACE, then perhaps part of the result was allocated.
|
|
||||||
need_free_words = 1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Some other error
|
|
||||||
need_free_words = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
sql->mdb = mdb_open(db_namep, MDB_NOFLAGS);
|
|
||||||
if ((!sql->mdb) && (!strstr(db_namep, ".mdb"))) {
|
|
||||||
char *tmpstr = (char *) g_strconcat(db_namep, ".mdb", NULL);
|
|
||||||
sql->mdb = mdb_open(tmpstr, MDB_NOFLAGS);
|
sql->mdb = mdb_open(tmpstr, MDB_NOFLAGS);
|
||||||
g_free(tmpstr);
|
g_free(tmpstr);
|
||||||
}
|
}
|
||||||
@@ -227,13 +196,6 @@ MdbHandle *mdb_sql_open(MdbSQL *sql, char *db_name)
|
|||||||
mdb_sql_error(sql, "Unable to locate database %s", db_name);
|
mdb_sql_error(sql, "Unable to locate database %s", db_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_WORDEXP
|
|
||||||
if ( need_free_words )
|
|
||||||
{
|
|
||||||
wordfree(&words);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return sql->mdb;
|
return sql->mdb;
|
||||||
}
|
}
|
||||||
static MdbSargNode *
|
static MdbSargNode *
|
||||||
|
|||||||
Reference in New Issue
Block a user