b25888b419
www: http://www.wxwidgets.org/ from Andrew Dalgleish < openbsd at ajd dot net dot au > many thanks for much persistence!
51 lines
1.6 KiB
Plaintext
51 lines
1.6 KiB
Plaintext
$OpenBSD: patch-src_common_db_cpp,v 1.1.1.1 2004/07/16 21:01:35 todd Exp $
|
|
--- src/common/db.cpp.orig Mon Dec 16 23:56:26 2002
|
|
+++ src/common/db.cpp Sat May 3 10:59:20 2003
|
|
@@ -81,6 +81,15 @@ wxChar const *SQL_CATALOG_FILENAME =
|
|
extern wxList TablesInUse;
|
|
#endif
|
|
|
|
+FILE* fopen_create(char *path, char *mode)
|
|
+{
|
|
+ // Only open the file if it does not already exist
|
|
+ int fd = open(path, O_WRONLY | O_CREAT | O_EXCL, 0600)
|
|
+ if (fd < 0)
|
|
+ return NULL;
|
|
+ return fdopen(fd, mode);
|
|
+}
|
|
+
|
|
// SQL Log defaults to be used by GetDbConnection
|
|
wxDbSqlLogState SQLLOGstate = sqlLogOFF;
|
|
|
|
@@ -2994,7 +3003,7 @@ bool wxDb::Catalog(const wxChar *userID,
|
|
wxChar typeName[30+1];
|
|
SDWORD precision, length;
|
|
|
|
- FILE *fp = fopen(fileName.c_str(),wxT("wt"));
|
|
+ FILE *fp = fopen_create(fileName.c_str(),wxT("wt"));
|
|
if (fp == NULL)
|
|
return(FALSE);
|
|
|
|
@@ -3331,7 +3340,10 @@ bool wxDb::SetSqlLogging(wxDbSqlLogState
|
|
{
|
|
if (fpSqlLog == 0)
|
|
{
|
|
- fpSqlLog = fopen(filename, (append ? wxT("at") : wxT("wt")));
|
|
+ if (append)
|
|
+ fpSqlLog = fopen(filename, wxT("at"));
|
|
+ else
|
|
+ fpSqlLog = fopen_create(filename, wxT("wt"));
|
|
if (fpSqlLog == NULL)
|
|
return(FALSE);
|
|
}
|
|
@@ -3442,8 +3454,7 @@ wxDBMS wxDb::Dbms(void)
|
|
return(dbmsType);
|
|
|
|
wxChar baseName[25+1];
|
|
- wxStrncpy(baseName,dbInf.dbmsName,25);
|
|
- baseName[25] = 0;
|
|
+ strlcpy(baseName,dbInf.dbmsName,sizeof(baseName));
|
|
|
|
// RGG 20001025 : add support for Interbase
|
|
// GT : Integrated to base classes on 20001121
|