mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
- On Linux, closing an INI table removes it from the inihandl cache
modified: storage/connect/inihandl.c storage/connect/osutil.h storage/connect/tabsys.cpp - Clean. Remove some unused functions modified: storage/connect/plgdbsem.h storage/connect/plgdbutl.cpp
This commit is contained in:
parent
0df7a43e22
commit
1e55712f5e
5 changed files with 66 additions and 9 deletions
|
@ -99,10 +99,10 @@ static PROFILE *MRUProfile[N_CACHED_PROFILES] = {NULL};
|
|||
#define PROFILE_MAX_LINE_LEN 1024
|
||||
|
||||
/* Wine profile name in $HOME directory; must begin with slash */
|
||||
static const char PROFILE_WineIniName[] = "/.winerc";
|
||||
//static const char PROFILE_WineIniName[] = "/.winerc";
|
||||
|
||||
/* Wine profile: the profile file being used */
|
||||
static char PROFILE_WineIniUsed[MAX_PATHNAME_LEN] = "";
|
||||
//static char PROFILE_WineIniUsed[MAX_PATHNAME_LEN] = "";
|
||||
|
||||
/* Check for comments in profile */
|
||||
#define IS_ENTRY_COMMENT(str) ((str)[0] == ';')
|
||||
|
@ -560,6 +560,55 @@ static BOOL PROFILE_Open(LPCSTR filename)
|
|||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* PROFILE_Close
|
||||
*
|
||||
* Flush the named profile to disk and remove it from the cache.
|
||||
***********************************************************************/
|
||||
static void PROFILE_Close(LPCSTR filename)
|
||||
{
|
||||
int i;
|
||||
BOOL close = FALSE;
|
||||
struct stat buf;
|
||||
PROFILE *tempProfile;
|
||||
|
||||
if (trace > 1)
|
||||
htrc("PROFILE_Close: CurProfile=%p N=%d\n", CurProfile, N_CACHED_PROFILES);
|
||||
|
||||
/* Check for a match */
|
||||
for (i = 0; i < N_CACHED_PROFILES; i++) {
|
||||
if (trace > 1)
|
||||
htrc("MRU=%s i=%d\n", SVP(MRUProfile[i]->filename), i);
|
||||
|
||||
if (MRUProfile[i]->filename && !strcmp(filename, MRUProfile[i]->filename)) {
|
||||
if (i) {
|
||||
/* Make the profile to close current */
|
||||
tempProfile = MRUProfile[i];
|
||||
MRUProfile[i] = MRUProfile[0];
|
||||
MRUProfile[0] = tempProfile;
|
||||
CurProfile=tempProfile;
|
||||
} // endif i
|
||||
|
||||
if (trace > 1) {
|
||||
if (!stat(CurProfile->filename, &buf) && CurProfile->mtime == buf.st_mtime)
|
||||
htrc("(%s): already opened (mru=%d)\n", filename, i);
|
||||
else
|
||||
htrc("(%s): already opened, needs refreshing (mru=%d)\n", filename, i);
|
||||
|
||||
} // endif trace
|
||||
|
||||
close = TRUE;
|
||||
break;
|
||||
} // endif filename
|
||||
|
||||
} // endfor i
|
||||
|
||||
if (close)
|
||||
PROFILE_ReleaseFile();
|
||||
|
||||
} // end of PROFILE_Close
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* PROFILE_DeleteSection
|
||||
*
|
||||
|
|
|
@ -32,6 +32,8 @@ char *_fullpath(char *absPath, const char *relPath, size_t maxLength);
|
|||
BOOL MessageBeep(uint);
|
||||
unsigned long _filelength(int fd);
|
||||
|
||||
void PROFILE_Close(LPCSTR filename);
|
||||
|
||||
int GetPrivateProfileString(
|
||||
LPCTSTR lpAppName, // section name
|
||||
LPCTSTR lpKeyName, // key name
|
||||
|
|
|
@ -559,9 +559,9 @@ DllExport PDBUSER PlgGetUser(PGLOBAL g);
|
|||
DllExport PCATLG PlgGetCatalog(PGLOBAL g, bool jump = true);
|
||||
DllExport bool PlgSetXdbPath(PGLOBAL g, PSZ, PSZ, char *, int, char *, int);
|
||||
DllExport void PlgDBfree(MBLOCK&);
|
||||
DllExport PSZ GetIniString(PGLOBAL, void *, LPCSTR, LPCSTR, LPCSTR, LPCSTR);
|
||||
DllExport int GetIniSize(char *, char *, char *, char *);
|
||||
DllExport bool WritePrivateProfileInt(LPCSTR, LPCSTR, int, LPCSTR);
|
||||
//lExport PSZ GetIniString(PGLOBAL, void *, LPCSTR, LPCSTR, LPCSTR, LPCSTR);
|
||||
//lExport int GetIniSize(char *, char *, char *, char *);
|
||||
//lExport bool WritePrivateProfileInt(LPCSTR, LPCSTR, int, LPCSTR);
|
||||
DllExport void NewPointer(PTABS, void *, void *);
|
||||
|
||||
|
||||
|
|
|
@ -411,12 +411,13 @@ char *PlgGetDataPath(PGLOBAL g)
|
|||
{
|
||||
PCATLG cat = PlgGetCatalog(g, false);
|
||||
|
||||
if (!cat)
|
||||
return GetIniString(g, NULL, "DataBase", "DataPath", "", plgini);
|
||||
//if (!cat)
|
||||
// return GetIniString(g, NULL, "DataBase", "DataPath", "", plgini);
|
||||
|
||||
return cat->GetDataPath();
|
||||
return (cat) ? cat->GetDataPath() : NULL;
|
||||
} // end of PlgGetDataPath
|
||||
|
||||
#if 0
|
||||
/***********************************************************************/
|
||||
/* PlgGetXdbPath: sets the fully qualified file name of a database */
|
||||
/* description file in lgn and the new datapath in dp. */
|
||||
|
@ -513,6 +514,7 @@ bool PlgSetXdbPath(PGLOBAL g, PSZ dbname, PSZ dbpath,
|
|||
|
||||
return false;
|
||||
} // end of PlgSetXdbPath
|
||||
#endif // 0
|
||||
|
||||
/***********************************************************************/
|
||||
/* Extract from a path name the required component. */
|
||||
|
@ -1040,6 +1042,7 @@ void PlugCleanup(PGLOBAL g, bool dofree)
|
|||
|
||||
} // end of PlugCleanup
|
||||
|
||||
#if 0
|
||||
/***********************************************************************/
|
||||
/* That stupid Windows 98 does not provide this function. */
|
||||
/***********************************************************************/
|
||||
|
@ -1116,6 +1119,7 @@ DllExport PSZ GetIniString(PGLOBAL g, void *mp, LPCSTR sec, LPCSTR key,
|
|||
|
||||
return p;
|
||||
} // end of GetIniString
|
||||
#endif // 0
|
||||
|
||||
/***********************************************************************/
|
||||
/* GetAmName: return the name correponding to an AM code. */
|
||||
|
|
|
@ -388,7 +388,9 @@ int TDBINI::DeleteDB(PGLOBAL g, int irc)
|
|||
/***********************************************************************/
|
||||
void TDBINI::CloseDB(PGLOBAL g)
|
||||
{
|
||||
// Nothing to do
|
||||
#if !defined(WIN32)
|
||||
PROFILE_Close(Ifile);
|
||||
#endif // !WIN32
|
||||
} // end of CloseDB
|
||||
|
||||
// ------------------------ INICOL functions ----------------------------
|
||||
|
|
Loading…
Reference in a new issue