OSDN Git Service

initial commit from 1.97b zip archive
[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         Sts = FALSE;\r
68         if((m_hDll = LoadLibrary("jre32.dll")) != NULL)\r
69         {\r
70                 m_lpJre2Open = (LPJRE2OPEN)GetProcAddress(m_hDll, "Jre2Open");\r
71                 m_lpJre2Compile = (LPJRE2COMPILE)GetProcAddress(m_hDll, "Jre2Compile");\r
72                 m_lpJre2MatchInfo = (LPJRE2GETMATCHINFO)GetProcAddress(m_hDll, "Jre2GetMatchInfo");\r
73                 m_lpJre2Close = (LPJRE2CLOSE)GetProcAddress(m_hDll, "Jre2Close");\r
74                 m_lpJreGetVersion = (LPJREGETVERSION)GetProcAddress(m_hDll, "JreGetVersion");\r
75                 m_lpGetJreMessage = (LPGETJREMESSAGE)GetProcAddress(m_hDll, "GetJreMessage");\r
76 \r
77                 if((m_lpJre2Open != NULL) &&\r
78                    (m_lpJre2Compile != NULL) &&\r
79                    (m_lpJre2MatchInfo != NULL) &&\r
80                    (m_lpJre2Close != NULL) &&\r
81                    (m_lpJreGetVersion != NULL) &&\r
82                    (m_lpJreGetVersion != NULL))\r
83                 {\r
84                         memset(&m_jreData, 0, sizeof(JRE2));\r
85                         m_jreData.dwSize = sizeof(JRE2);\r
86                         m_jreData.wTranslate = 1;\r
87 \r
88                         if((*m_lpJre2Open)(&m_jreData) == TRUE)\r
89                                 Sts = TRUE;\r
90                         else\r
91                                 ReleaseJre();\r
92                 }\r
93 \r
94         }\r
95         return(Sts);;\r
96 }\r
97 \r
98 \r
99 /*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ð\83\8a\83\8a\81[\83X\82·\82é --------------------------------------\r
100 *\r
101 *       Parameter\r
102 *               \82È\82µ\r
103 *\r
104 *       Return Value\r
105 *               \82È\82µ\r
106 *----------------------------------------------------------------------------*/\r
107 \r
108 void ReleaseJre(void)\r
109 {\r
110         if(m_hDll != NULL)\r
111                 FreeLibrary(m_hDll);\r
112         m_hDll = NULL;\r
113 \r
114         return;\r
115 }\r
116 \r
117 \r
118 /*----- \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ------------------------------\r
119 *\r
120 *       Parameter\r
121 *               \82È\82µ\r
122 *\r
123 *       Return Value\r
124 *               int \90³\8bK\95\\8c»\83\89\83C\83u\83\89\83\8a\82ª\8eg\82¦\82é\82©\82Ç\82¤\82©\r
125 *                       TRUE/FALSE\r
126 *----------------------------------------------------------------------------*/\r
127 \r
128 int AskJreUsable(void)\r
129 {\r
130         int Sts;\r
131 \r
132         Sts = FALSE;\r
133         if(m_hDll != NULL)\r
134                 Sts = TRUE;\r
135 \r
136         return(Sts);\r
137 }\r
138 \r
139 \r
140 /*----- \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
141 *\r
142 *       Parameter\r
143 *               \82È\82µ\r
144 *\r
145 *       Return Value\r
146 *               int \83o\81[\83W\83\87\83\93\r
147 *----------------------------------------------------------------------------*/\r
148 \r
149 int GetJreVersion(void)\r
150 {\r
151         int Ver;\r
152 \r
153         Ver = -1;\r
154         if(m_hDll != NULL)\r
155                 Ver = (*m_lpJreGetVersion)();\r
156 \r
157         return(Ver);\r
158 }\r
159 \r
160 \r
161 /*----- \90³\8bK\95\\8c»\8c\9f\8dõ\8e®\82ð\83R\83\93\83p\83C\83\8b\82·\82é ----------------------------------------\r
162 *\r
163 *       Parameter\r
164 *               kchar *Str : \8c\9f\8dõ\8e®\r
165 *\r
166 *       Return Value\r
167 *               int \83X\83e\81[\83^\83X\r
168 *                       TRUE/FALSE\r
169 *----------------------------------------------------------------------------*/\r
170 \r
171 int JreCompileStr(char *Str)\r
172 {\r
173         int Sts;\r
174 \r
175         Sts = FALSE;\r
176         if(m_hDll != NULL)\r
177                 Sts = (*m_lpJre2Compile)(&m_jreData, Str);\r
178 \r
179         return(Sts);\r
180 }\r
181 \r
182 \r
183 /*----- \95\8e\9a\97ñ\82ª\88ê\92v\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82· ----------------------------------------\r
184 *\r
185 *       Parameter\r
186 *               char *Str : \95\8e\9a\97ñ\r
187 *               UINT nStart : \8c\9f\8dõ\8aJ\8en\88Ê\92u\r
188 *\r
189 *       Return Value\r
190 *               char *\8c©\82Â\82©\82Á\82½\88Ê\92u\r
191 *                       NULL=\8c©\82Â\82©\82ç\82È\82©\82Á\82½\r
192 *----------------------------------------------------------------------------*/\r
193 \r
194 char *JreGetStrMatchInfo(char *Str, UINT nStart)\r
195 {\r
196         char *Ret;\r
197 \r
198         Ret = NULL;\r
199         if(m_hDll != NULL)\r
200         {\r
201                 m_jreData.nStart = nStart;\r
202                 if((*m_lpJre2MatchInfo)(&m_jreData, Str) == TRUE)\r
203                          Ret = Str + m_jreData.nPosition;\r
204         }\r
205         return(Ret);\r
206 }\r
207 \r
208 \r