summaryrefslogtreecommitdiff
path: root/spamfilter/folders.c
blob: 182a2d1f184cac306e4ecb49c211385169107fc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*

"Spam Filter"-Plugin for Miranda IM

Copyright 2003-2006 Heiko Herkenrath

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program ("SpamFilter-License.txt"); if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/


// -- Includes
#include "common.h"

// -- Variables
HANDLE hDefinitionsFolder = NULL;
HANDLE hCustomFolder = NULL;

// -----------------------------------------


BOOL GetDefinitionsPath(WCHAR* pszReturn, BOOL bCustomFile, WCHAR* pszAppend)
{
	// pszReturn muss MAX_PATH groß sein
	BOOL bReturn = FALSE;

	if ((bCustomFile && hCustomFolder) || (!bCustomFile && hDefinitionsFolder))
	{
		FOLDERSGETDATA fgd;

		if (!pszReturn) return FALSE;
		ZeroMemory(&fgd, sizeof(fgd));
		fgd.cbSize = sizeof(fgd);
		fgd.nMaxPathSize = MAX_PATH;
		fgd.szPathT = pszReturn;

		if (CallService(MS_FOLDERS_GET_PATH, (WPARAM)(bCustomFile?hCustomFolder:hDefinitionsFolder), (LPARAM)&fgd) == 0)
		{
			if (pszAppend) PathAppend(pszReturn, pszAppend);
			bReturn = TRUE;
		}
	}

	// Custom Folder Plugin not installed (using standard folder)
	if (!bReturn)
		bReturn = PConstructLocalPath(pszReturn, bCustomFile?CSIDL_EXT_MIRANDAPROFILE:CSIDL_EXT_EXECUTABLE, DATA_SUBDIRECTORY, pszAppend, NULL);

	return bReturn;
}


BOOL IsCustomFoldersAvailable(void)
{
	return (hCustomFolder || hDefinitionsFolder);
}


// ------------------------------------


void InitFolders(void)
{
	// Enable Custom Folder Plugin support (needs new version!)
	if (ServiceExists(MS_FOLDERS_REGISTER_PATH) && ServiceExists(MS_FOLDERS_GET_PATH))
	{
		FOLDERSDATA fd;

		ZeroMemory(&fd, sizeof(fd));
		fd.cbSize = sizeof(fd);
		#if defined(UNICODE)
			fd.flags = FF_UNICODE;
		#endif
		mir_snprintf(fd.szSection, ARRAYSIZE(fd.szSection), "%s", Translate("Spam Filter"));

		// Definitions Folder
		mir_snprintf(fd.szName, ARRAYSIZE(fd.szName), "%s", Translate("Spam Definitions"));
		fd.szFormatT = _T("%miranda_path%\\")DATA_SUBDIRECTORY; // readonly allocated
		hDefinitionsFolder = (HANDLE)CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM)&fd);

		// Custom Definitions Folder
		mir_snprintf(fd.szName, ARRAYSIZE(fd.szName), "%s", Translate("Customized Words"));
		fd.szFormatT = _T("%profile_path%\\")DATA_SUBDIRECTORY; // readonly allocated
		hCustomFolder = (HANDLE)CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM)&fd);
	}
}


void UninitFolders(void)
{
}