OSDN Git Service

This version may be nearly stable.
[ffftp/ffftp.git] / regexp.c
1 /*=============================================================================\r
2 *\r
3 *                                                               \90³\8bK\95\\8c»\8c\9f\8dõ\r
4 *\r
5 ===============================================================================\r
6 / Copyright (C) 1997-2007 Sota. All rights reserved.\r
7 /\r
8 / Redistribution and use in source and binary forms, with or without \r
9 / modification, are permitted provided that the following conditions \r
10 / are met:\r
11 /\r
12 /  1. Redistributions of source code must retain the above copyright \r
13 /     notice, this list of conditions and the following disclaimer.\r
14 /  2. Redistributions in binary form must reproduce the above copyright \r
15 /     notice, this list of conditions and the following disclaimer in the \r
16 /     documentation and/or other materials provided with the distribution.\r
17 /\r
18 / THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR \r
19 / IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \r
20 / OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \r
21 / IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, \r
22 / INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, \r
23 / BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF \r
24 / USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON \r
25 / ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
26 / (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF \r
27 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
28 /============================================================================*/\r
29 \r
30 #define STRICT\r
31 #include <stdio.h>\r
32 #include <stdlib.h>\r
33 #include <winsock.h>\r
34 #include <windowsx.h>\r
35 \r
36 #include "common.h"\r
37 #include "jreusr.h"\r
38 \r
39 \r
40 /*===== \83\8d\81[\83J\83\8b\82È\83\8f\81[\83N =====*/\r
41 \r
42 static JRE2 m_jreData;\r
43 static HINSTANCE m_hDll = NULL;\r
44 static LPJRE2OPEN m_lpJre2Open = NULL;\r
45 static LPJRE2COMPILE m_lpJre2Compile = NULL;\r
46 static LPJRE2GETMATCHINFO m_lpJre2MatchInfo = NULL;\r
47 static LPJRE2CLOSE m_lpJre2Close = NULL;\r
48 static LPJREGETVERSION m_lpJreGetVersion = NULL;\r
49 static LPGETJREMESSAGE m_lpGetJreMessage = NULL;\r
50 \r
51 \r
52 \r
53 /*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ð\83\8d\81[\83h\82·\82é ----------------------------------------\r
54 *\r
55 *       Parameter\r
56 *               \82È\82µ\r
57 *\r
58 *       Return Value\r
59 *               int \83X\83e\81[\83^\83X\r
60 *                       TRUE/FALSE\r
61 *----------------------------------------------------------------------------*/\r
62 \r
63 int LoadJre(void)\r
64 {\r
65         int Sts;\r
66 \r
67         // UTF-8\91Î\89\9e\r
68         // JRE32.DLL\82ÍUTF-8\82É\94ñ\91Î\89\9e\r
69 #ifdef DISABLE_JRE32DLL\r
70         return FALSE;\r
71 #endif\r
72         Sts = FALSE;\r
73         if((m_hDll = LoadLibrary("jre32.dll")) != NULL)\r
74         {\r
75                 m_lpJre2Open = (LPJRE2OPEN)GetProcAddress(m_hDll, "Jre2Open");\r
76                 m_lpJre2Compile = (LPJRE2COMPILE)GetProcAddress(m_hDll, "Jre2Compile");\r
77                 m_lpJre2MatchInfo = (LPJRE2GETMATCHINFO)GetProcAddress(m_hDll, "Jre2GetMatchInfo");\r
78                 m_lpJre2Close = (LPJRE2CLOSE)GetProcAddress(m_hDll, "Jre2Close");\r
79                 m_lpJreGetVersion = (LPJREGETVERSION)GetProcAddress(m_hDll, "JreGetVersion");\r
80                 m_lpGetJreMessage = (LPGETJREMESSAGE)GetProcAddress(m_hDll, "GetJreMessage");\r
81 \r
82                 if((m_lpJre2Open != NULL) &&\r
83                    (m_lpJre2Compile != NULL) &&\r
84                    (m_lpJre2MatchInfo != NULL) &&\r
85                    (m_lpJre2Close != NULL) &&\r
86                    (m_lpJreGetVersion != NULL) &&\r
87                    (m_lpJreGetVersion != NULL))\r
88                 {\r
89                         memset(&m_jreData, 0, sizeof(JRE2));\r
90                         m_jreData.dwSize = sizeof(JRE2);\r
91                         m_jreData.wTranslate = 1;\r
92 \r
93                         if((*m_lpJre2Open)(&m_jreData) == TRUE)\r
94                                 Sts = TRUE;\r
95                         else\r
96                                 ReleaseJre();\r
97                 }\r
98 \r
99         }\r
100         return(Sts);;\r
101 }\r
102 \r
103 \r
104 /*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ð\83\8a\83\8a\81[\83X\82·\82é --------------------------------------\r
105 *\r
106 *       Parameter\r
107 *               \82È\82µ\r
108 *\r
109 *       Return Value\r
110 *               \82È\82µ\r
111 *----------------------------------------------------------------------------*/\r
112 \r
113 void ReleaseJre(void)\r
114 {\r
115         if(m_hDll != NULL)\r
116                 FreeLibrary(m_hDll);\r
117         m_hDll = NULL;\r
118 \r
119         return;\r
120 }\r
121 \r
122 \r
123 /*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------------\r
124 *\r
125 *       Parameter\r
126 *               \82È\82µ\r
127 *\r
128 *       Return Value\r
129 *               int \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\r
130 *                       TRUE/FALSE\r
131 *----------------------------------------------------------------------------*/\r
132 \r
133 int AskJreUsable(void)\r
134 {\r
135         int Sts;\r
136 \r
137         Sts = FALSE;\r
138         if(m_hDll != NULL)\r
139                 Sts = TRUE;\r
140 \r
141         return(Sts);\r
142 }\r
143 \r
144 \r
145 /*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82Ì\83o\81[\83W\83\87\83\93\82ð\95Ô\82· a---------------------------------\r
146 *\r
147 *       Parameter\r
148 *               \82È\82µ\r
149 *\r
150 *       Return Value\r
151 *               int \83o\81[\83W\83\87\83\93\r
152 *----------------------------------------------------------------------------*/\r
153 \r
154 int GetJreVersion(void)\r
155 {\r
156         int Ver;\r
157 \r
158         Ver = -1;\r
159         if(m_hDll != NULL)\r
160                 Ver = (*m_lpJreGetVersion)();\r
161 \r
162         return(Ver);\r
163 }\r
164 \r
165 \r
166 /*----- \90³\8bK\95\\8c»\8c\9f\8dõ\8e®\82ð\83R\83\93\83p\83C\83\8b\82·\82é ----------------------------------------\r
167 *\r
168 *       Parameter\r
169 *               kchar *Str : \8c\9f\8dõ\8e®\r
170 *\r
171 *       Return Value\r
172 *               int \83X\83e\81[\83^\83X\r
173 *                       TRUE/FALSE\r
174 *----------------------------------------------------------------------------*/\r
175 \r
176 int JreCompileStr(char *Str)\r
177 {\r
178         int Sts;\r
179 \r
180         Sts = FALSE;\r
181         if(m_hDll != NULL)\r
182                 Sts = (*m_lpJre2Compile)(&m_jreData, Str);\r
183 \r
184         return(Sts);\r
185 }\r
186 \r
187 \r
188 /*----- \95\8e\9a\97ñ\82ª\88ê\92v\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------------------\r
189 *\r
190 *       Parameter\r
191 *               char *Str : \95\8e\9a\97ñ\r
192 *               UINT nStart : \8c\9f\8dõ\8aJ\8en\88Ê\92u\r
193 *\r
194 *       Return Value\r
195 *               char *\8c©\82Â\82©\82Á\82½\88Ê\92u\r
196 *                       NULL=\8c©\82Â\82©\82ç\82È\82©\82Á\82½\r
197 *----------------------------------------------------------------------------*/\r
198 \r
199 char *JreGetStrMatchInfo(char *Str, UINT nStart)\r
200 {\r
201         char *Ret;\r
202 \r
203         Ret = NULL;\r
204         if(m_hDll != NULL)\r
205         {\r
206                 m_jreData.nStart = nStart;\r
207                 if((*m_lpJre2MatchInfo)(&m_jreData, Str) == TRUE)\r
208                          Ret = Str + m_jreData.nPosition;\r
209         }\r
210         return(Ret);\r
211 }\r
212 \r
213 \r