diff options
Diffstat (limited to 'plugins/SeenPlugin/src/file.cpp')
-rw-r--r-- | plugins/SeenPlugin/src/file.cpp | 85 |
1 files changed, 26 insertions, 59 deletions
diff --git a/plugins/SeenPlugin/src/file.cpp b/plugins/SeenPlugin/src/file.cpp index f8afc15c8d..91572bcb96 100644 --- a/plugins/SeenPlugin/src/file.cpp +++ b/plugins/SeenPlugin/src/file.cpp @@ -20,39 +20,34 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "seen.h"
+BOOL g_bFileActive;
+TCHAR *g_ptszFileStamp, *g_ptszFileName;
+
/////////////////////////////////////////////////////////////////////////////////////////
// Prepares the log file:
// - calculates the absolute path (and store it in the db)
// - creates the directory
-int InitFileOutput(void)
+void InitFileOutput(void)
{
- TCHAR szfpath[MAX_PATH], szmpath[MAX_PATH];
- GetModuleFileName(NULL, szmpath, MAX_PATH);
-
- DBVARIANT dbv;
- if (!db_get_ts(NULL, S_MOD, "FileName", &dbv)) {
- _tcsncpy(szfpath, dbv.ptszVal, MAX_PATH);
- db_free(&dbv);
- }
- else _tcsncpy(szfpath, DEFAULT_FILENAME, MAX_PATH);
-
- if (szfpath[0] == '\\')
- _tcsncpy(szfpath, szfpath + 1, MAX_PATH);
-
- TCHAR *str = _tcsrchr(szmpath, '\\');
- if (str != NULL)
- *++str = 0;
-
- _tcsncat(szmpath, szfpath, MAX_PATH);
- _tcsncpy(szfpath, szmpath, MAX_PATH);
-
- str = _tcsrchr(szmpath, '\\');
- if (str != NULL)
- *++str = 0;
+ ptrT tszFileName(db_get_tsa(NULL, S_MOD, "FileName"));
+ if (tszFileName == NULL)
+ tszFileName = mir_tstrdup(DEFAULT_FILENAME);
+ replaceStrT(g_ptszFileName, VARST(tszFileName));
+
+ TCHAR *tszPath = NEWTSTR_ALLOCA(g_ptszFileName);
+ TCHAR *p = _tcsrchr(tszPath, '\\');
+ if (p) *p = 0;
+ CreateDirectoryTreeT(tszPath);
+
+ ptrT tszFileStamp(db_get_tsa(NULL, S_MOD, "FileStamp"));
+ replaceStrT(g_ptszFileStamp, (tszFileStamp == NULL) ? DEFAULT_FILESTAMP : tszFileStamp);
+}
- db_set_ts(NULL, S_MOD, "PathToFile", szfpath);
- return 0;
+void UninitFileOutput()
+{
+ mir_free(g_ptszFileName);
+ mir_free(g_ptszFileStamp);
}
/////////////////////////////////////////////////////////////////////////////////////////
@@ -60,38 +55,10 @@ int InitFileOutput(void) void FileWrite(MCONTACT hcontact)
{
- TCHAR szout[1024];
-
- DBVARIANT dbv;
- if (!db_get_ts(NULL, S_MOD, "PathToFile", &dbv)) {
- _tcsncpy(szout, ParseString(dbv.ptszVal, hcontact, 1), SIZEOF(szout));
- db_free(&dbv);
- }
- else _tcsncpy(szout, DEFAULT_FILENAME, SIZEOF(szout));
-
- HANDLE fhout = CreateFile(szout, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL);
- if (fhout == INVALID_HANDLE_VALUE) {
- TCHAR fullpath[1024];
- _tcsncpy(fullpath, szout, SIZEOF(fullpath));
- TCHAR *dirpath = _tcsrchr(fullpath, '\\');
- if (dirpath != NULL)
- *dirpath = '\0';
- CreateDirectoryTreeT(fullpath);
- fhout = CreateFile(szout, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL);
- if (fhout == INVALID_HANDLE_VALUE)
- return;
+ FILE *log = _tfopen(ParseString(g_ptszFileName, hcontact, 1), _T("a"));
+ if (log != NULL) {
+ _fputts(ParseString(g_ptszFileStamp, hcontact, 1), log);
+ fputs("\r\n", log);
+ fclose(log);
}
- SetFilePointer(fhout, 0, 0, FILE_END);
-
- if (!db_get_ts(NULL, S_MOD, "FileStamp", &dbv)) {
- _tcsncpy(szout, ParseString(dbv.ptszVal, hcontact, 1), SIZEOF(szout));
- db_free(&dbv);
- }
- else _tcsncpy(szout, ParseString(DEFAULT_FILESTAMP, hcontact, 1), SIZEOF(szout));
-
- DWORD byteswritten;
- WriteFile(fhout, _T2A(szout), (DWORD)_tcslen(szout), &byteswritten, NULL);
- WriteFile(fhout, "\r\n", 2, &byteswritten, NULL);
-
- CloseHandle(fhout);
}
|