diff options
author | danglassey <danglassey> | 2002-08-14 09:57:17 +0000 |
---|---|---|
committer | danglassey <danglassey> | 2002-08-14 09:57:17 +0000 |
commit | c9458897ebbb739d8db83c80e06512d8a612f743 (patch) | |
tree | f8c5381045887e34388cc6b26cfccc254bf766dc /doc/api-documentation/html/swmgr_8cpp-source.html | |
download | sword-sf-cvs-c9458897ebbb739d8db83c80e06512d8a612f743.tar.gz |
*** empty log message ***
Diffstat (limited to 'doc/api-documentation/html/swmgr_8cpp-source.html')
-rw-r--r-- | doc/api-documentation/html/swmgr_8cpp-source.html | 1069 |
1 files changed, 1069 insertions, 0 deletions
diff --git a/doc/api-documentation/html/swmgr_8cpp-source.html b/doc/api-documentation/html/swmgr_8cpp-source.html new file mode 100644 index 0000000..ba8d877 --- /dev/null +++ b/doc/api-documentation/html/swmgr_8cpp-source.html @@ -0,0 +1,1069 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>swmgr.cpp Source File</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.2.15 --> +<center> +<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center> +<hr><h1>swmgr.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font> +00002 <font class="comment"> * swmgr.cpp - implementaion of class SWMgr used to interact with an install</font> +00003 <font class="comment"> * base of sword modules.</font> +00004 <font class="comment"> *</font> +00005 <font class="comment"> * $Id: swmgr_8cpp-source.html,v 1.3 2002/06/20 20:23:10 mgruner Exp $</font> +00006 <font class="comment"> *</font> +00007 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</font> +00008 <font class="comment"> * CrossWire Bible Society</font> +00009 <font class="comment"> * P. O. Box 2528</font> +00010 <font class="comment"> * Tempe, AZ 85280-2528</font> +00011 <font class="comment"> *</font> +00012 <font class="comment"> * This program is free software; you can redistribute it and/or modify it</font> +00013 <font class="comment"> * under the terms of the GNU General Public License as published by the</font> +00014 <font class="comment"> * Free Software Foundation version 2.</font> +00015 <font class="comment"> *</font> +00016 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font> +00017 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font> +00018 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font> +00019 <font class="comment"> * General Public License for more details.</font> +00020 <font class="comment"> *</font> +00021 <font class="comment"> */</font> +00022 +00023 <font class="preprocessor">#include <stdio.h></font> +00024 <font class="preprocessor">#include <stdlib.h></font> +00025 <font class="preprocessor">#include <fcntl.h></font> +00026 +00027 <font class="preprocessor">#ifndef __GNUC__</font> +00028 <font class="preprocessor"></font><font class="preprocessor">#include <io.h></font> +00029 <font class="preprocessor">#else</font> +00030 <font class="preprocessor"></font><font class="preprocessor">#include <unistd.h></font> +00031 <font class="preprocessor">#include <unixstr.h></font> +00032 <font class="preprocessor">#endif</font> +00033 <font class="preprocessor"></font><font class="preprocessor">#include <sys/stat.h></font> +00034 <font class="preprocessor">#ifndef _MSC_VER</font> +00035 <font class="preprocessor"></font><font class="preprocessor">#include <iostream.h></font> +00036 <font class="preprocessor">#endif</font> +00037 <font class="preprocessor"></font><font class="preprocessor">#include <dirent.h></font> +00038 +00039 <font class="preprocessor">#include <swmgr.h></font> +00040 <font class="preprocessor">#include <rawtext.h></font> +00041 <font class="preprocessor">#include <rawgenbook.h></font> +00042 <font class="preprocessor">#include <rawcom.h></font> +00043 <font class="preprocessor">#include <hrefcom.h></font> +00044 <font class="preprocessor">#include <rawld.h></font> +00045 <font class="preprocessor">#include <rawld4.h></font> +00046 <font class="preprocessor">#include <utilfuns.h></font> +00047 <font class="preprocessor">#include <gbfplain.h></font> +00048 <font class="preprocessor">#include <thmlplain.h></font> +00049 <font class="preprocessor">#include <gbfstrongs.h></font> +00050 <font class="preprocessor">#include <gbffootnotes.h></font> +00051 <font class="preprocessor">#include <gbfheadings.h></font> +00052 <font class="preprocessor">#include <gbfmorph.h></font> +00053 <font class="preprocessor">#include <thmlstrongs.h></font> +00054 <font class="preprocessor">#include <thmlfootnotes.h></font> +00055 <font class="preprocessor">#include <thmlheadings.h></font> +00056 <font class="preprocessor">#include <thmlmorph.h></font> +00057 <font class="preprocessor">#include <thmllemma.h></font> +00058 <font class="preprocessor">#include <thmlscripref.h></font> +00059 <font class="preprocessor">#include <cipherfil.h></font> +00060 <font class="preprocessor">#include <rawfiles.h></font> +00061 <font class="preprocessor">#include <ztext.h></font> +00062 <font class="preprocessor">#include <zld.h></font> +00063 <font class="preprocessor">#include <zcom.h></font> +00064 <font class="preprocessor">#include <lzsscomprs.h></font> +00065 <font class="preprocessor">#include <utf8greekaccents.h></font> +00066 <font class="preprocessor">#include <utf8cantillation.h></font> +00067 <font class="preprocessor">#include <utf8hebrewpoints.h></font> +00068 <font class="preprocessor">#include <greeklexattribs.h></font> +00069 <font class="preprocessor">#include <swfiltermgr.h></font> +00070 +00071 +00072 +00073 <font class="preprocessor">#ifdef ICU</font> +00074 <font class="preprocessor"></font><font class="preprocessor">#include <utf8transliterator.h></font> +00075 <font class="preprocessor">#endif</font> +00076 <font class="preprocessor"></font> +00077 <font class="preprocessor">#ifndef EXCLUDEZLIB</font> +00078 <font class="preprocessor"></font><font class="preprocessor">#include <zipcomprs.h></font> +00079 <font class="preprocessor">#endif</font> +00080 <font class="preprocessor"></font> +<a name="l00081"></a><a class="code" href="class_s_w_mgr.html#p0">00081</a> <font class="keywordtype">bool</font> <a class="code" href="class_s_w_mgr.html#p0">SWMgr::debug</a> = <font class="keyword">false</font>; +00082 +00083 <font class="preprocessor">#ifdef GLOBCONFPATH</font> +00084 <font class="preprocessor"></font><font class="keyword">const</font> <font class="keywordtype">char</font> *SWMgr::globalConfPath = GLOBCONFPATH; +00085 <font class="preprocessor">#else</font> +00086 <font class="preprocessor"></font><font class="keyword">const</font> <font class="keywordtype">char</font> *SWMgr::globalConfPath = <font class="stringliteral">"/etc/sword.conf:/usr/local/etc/sword.conf"</font>; +00087 <font class="preprocessor">#endif</font> +00088 <font class="preprocessor"></font> +00089 <font class="keywordtype">void</font> SWMgr::init() { +00090 SWFilter *tmpFilter = 0; +00091 configPath = 0; +00092 <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a> = 0; +00093 configType = 0; +00094 myconfig = 0; +00095 mysysconfig = 0; +00096 homeConfig = 0; +00097 +00098 +00099 cipherFilters.clear(); +00100 optionFilters.clear(); +00101 cleanupFilters.clear(); +00102 +00103 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_strongs.html">GBFStrongs</a>(); +00104 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFStrongs"</font>, tmpFilter)); +00105 cleanupFilters.push_back(tmpFilter); +00106 +00107 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_footnotes.html">GBFFootnotes</a>(); +00108 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFFootnotes"</font>, tmpFilter)); +00109 cleanupFilters.push_back(tmpFilter); +00110 +00111 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_morph.html">GBFMorph</a>(); +00112 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFMorph"</font>, tmpFilter)); +00113 cleanupFilters.push_back(tmpFilter); +00114 +00115 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_g_b_f_headings.html">GBFHeadings</a>(); +00116 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GBFHeadings"</font>, tmpFilter)); +00117 cleanupFilters.push_back(tmpFilter); +00118 +00119 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_strongs.html">ThMLStrongs</a>(); +00120 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLStrongs"</font>, tmpFilter)); +00121 cleanupFilters.push_back(tmpFilter); +00122 +00123 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_footnotes.html">ThMLFootnotes</a>(); +00124 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLFootnotes"</font>, tmpFilter)); +00125 cleanupFilters.push_back(tmpFilter); +00126 +00127 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_morph.html">ThMLMorph</a>(); +00128 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLMorph"</font>, tmpFilter)); +00129 cleanupFilters.push_back(tmpFilter); +00130 +00131 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_headings.html">ThMLHeadings</a>(); +00132 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLHeadings"</font>, tmpFilter)); +00133 cleanupFilters.push_back(tmpFilter); +00134 +00135 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_lemma.html">ThMLLemma</a>(); +00136 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLLemma"</font>, tmpFilter)); +00137 cleanupFilters.push_back(tmpFilter); +00138 +00139 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_th_m_l_scripref.html">ThMLScripref</a>(); +00140 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"ThMLScripref"</font>, tmpFilter)); +00141 cleanupFilters.push_back(tmpFilter); +00142 +00143 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_greek_accents.html">UTF8GreekAccents</a>(); +00144 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"UTF8GreekAccents"</font>, tmpFilter)); +00145 cleanupFilters.push_back(tmpFilter); +00146 +00147 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_hebrew_points.html">UTF8HebrewPoints</a>(); +00148 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"UTF8HebrewPoints"</font>, tmpFilter)); +00149 cleanupFilters.push_back(tmpFilter); +00150 +00151 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_u_t_f8_cantillation.html">UTF8Cantillation</a>(); +00152 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"UTF8Cantillation"</font>, tmpFilter)); +00153 cleanupFilters.push_back(tmpFilter); +00154 +00155 tmpFilter = <font class="keyword">new</font> <a class="code" href="class_greek_lex_attribs.html">GreekLexAttribs</a>(); +00156 optionFilters.insert(FilterMap::value_type(<font class="stringliteral">"GreekLexAttribs"</font>, tmpFilter)); +00157 cleanupFilters.push_back(tmpFilter); +00158 +00159 <font class="comment">/* UTF8Transliterator needs to be handled differently because it should always available as an option, for all modules</font> +00160 <font class="comment">#ifdef ICU</font> +00161 <font class="comment"> tmpFilter = new UTF8Transliterator();</font> +00162 <font class="comment"> optionFilters.insert(FilterMap::value_type("UTF8Transliterator", tmpFilter));</font> +00163 <font class="comment"> cleanupFilters.push_back(tmpFilter);</font> +00164 <font class="comment">#endif</font> +00165 <font class="comment">*/</font> +00166 gbfplain = <font class="keyword">new</font> <a class="code" href="class_g_b_f_plain.html">GBFPlain</a>(); +00167 cleanupFilters.push_back(gbfplain); +00168 +00169 thmlplain = <font class="keyword">new</font> <a class="code" href="class_th_m_l_plain.html">ThMLPlain</a>(); +00170 cleanupFilters.push_back(thmlplain); +00171 } +00172 +00173 +<a name="l00174"></a><a class="code" href="class_s_w_mgr.html#a1">00174</a> <a class="code" href="class_s_w_mgr.html#a0">SWMgr::SWMgr</a>(SWFilterMgr *filterMgr) { +00175 commonInit(0, 0, <font class="keyword">true</font>, filterMgr); +00176 } +00177 +00178 +<a name="l00179"></a><a class="code" href="class_s_w_mgr.html#a0">00179</a> <a class="code" href="class_s_w_mgr.html#a0">SWMgr::SWMgr</a>(<a class="code" href="class_s_w_config.html">SWConfig</a> *iconfig, <a class="code" href="class_s_w_config.html">SWConfig</a> *isysconfig, <font class="keywordtype">bool</font> autoload, SWFilterMgr *filterMgr) { +00180 commonInit(iconfig, isysconfig, autoload, filterMgr); +00181 } +00182 +00183 +00184 <font class="keywordtype">void</font> SWMgr::commonInit(<a class="code" href="class_s_w_config.html">SWConfig</a> * iconfig, <a class="code" href="class_s_w_config.html">SWConfig</a> * isysconfig, <font class="keywordtype">bool</font> autoload, SWFilterMgr *filterMgr) { +00185 this->filterMgr = filterMgr; +00186 <font class="keywordflow">if</font> (filterMgr) +00187 filterMgr->setParentMgr(<font class="keyword">this</font>); +00188 +00189 init(); +00190 +00191 <font class="keywordflow">if</font> (iconfig) { +00192 <a class="code" href="class_s_w_mgr.html#m0">config</a> = iconfig; +00193 myconfig = 0; +00194 } +00195 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a> = 0; +00196 <font class="keywordflow">if</font> (isysconfig) { +00197 sysconfig = isysconfig; +00198 mysysconfig = 0; +00199 } +00200 <font class="keywordflow">else</font> sysconfig = 0; +00201 +00202 <font class="keywordflow">if</font> (autoload) +00203 <a class="code" href="class_s_w_mgr.html#a5">Load</a>(); +00204 } +00205 +00206 +<a name="l00207"></a><a class="code" href="class_s_w_mgr.html#a2">00207</a> <a class="code" href="class_s_w_mgr.html#a0">SWMgr::SWMgr</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *iConfigPath, <font class="keywordtype">bool</font> autoload, SWFilterMgr *filterMgr) { +00208 +00209 string path; +00210 +00211 this->filterMgr = filterMgr; +00212 <font class="keywordflow">if</font> (filterMgr) +00213 filterMgr->setParentMgr(<font class="keyword">this</font>); +00214 +00215 init(); +00216 +00217 path = iConfigPath; +00218 <font class="keywordflow">if</font> ((iConfigPath[strlen(iConfigPath)-1] != <font class="charliteral">'\\'</font>) && (iConfigPath[strlen(iConfigPath)-1] != <font class="charliteral">'/'</font>)) +00219 path += <font class="stringliteral">"/"</font>; +00220 <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) { +00221 stdstr(&<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00222 path += <font class="stringliteral">"mods.conf"</font>; +00223 stdstr(&configPath, path.c_str()); +00224 } +00225 <font class="keywordflow">else</font> { +00226 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) { +00227 stdstr(&<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00228 path += <font class="stringliteral">"mods.d"</font>; +00229 stdstr(&configPath, path.c_str()); +00230 configType = 1; +00231 } +00232 } +00233 +00234 <a class="code" href="class_s_w_mgr.html#m0">config</a> = 0; +00235 sysconfig = 0; +00236 +00237 <font class="keywordflow">if</font> (autoload && configPath) +00238 <a class="code" href="class_s_w_mgr.html#a5">Load</a>(); +00239 } +00240 +00241 +<a name="l00242"></a><a class="code" href="class_s_w_mgr.html#a3">00242</a> <a class="code" href="class_s_w_mgr.html#a3">SWMgr::~SWMgr</a>() { +00243 +00244 DeleteMods(); +00245 +00246 <font class="keywordflow">for</font> (FilterList::iterator it = cleanupFilters.begin(); it != cleanupFilters.end(); it++) +00247 <font class="keyword">delete</font> (*it); +00248 +00249 <font class="keywordflow">if</font> (homeConfig) +00250 <font class="keyword">delete</font> homeConfig; +00251 +00252 <font class="keywordflow">if</font> (myconfig) +00253 <font class="keyword">delete</font> myconfig; +00254 +00255 <font class="keywordflow">if</font> (prefixPath) +00256 <font class="keyword">delete</font> [] <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>; +00257 +00258 <font class="keywordflow">if</font> (configPath) +00259 <font class="keyword">delete</font> [] configPath; +00260 +00261 <font class="keywordflow">if</font> (filterMgr) +00262 <font class="keyword">delete</font> filterMgr; +00263 } +00264 +00265 +00266 <font class="keywordtype">void</font> SWMgr::findConfig(<font class="keywordtype">char</font> *configType, <font class="keywordtype">char</font> **prefixPath, <font class="keywordtype">char</font> **configPath) { +00267 string path; +00268 ConfigEntMap::iterator entry; +00269 +00270 <font class="keywordtype">char</font> *envsworddir = getenv (<font class="stringliteral">"SWORD_PATH"</font>); +00271 <font class="keywordtype">char</font> *envhomedir = getenv (<font class="stringliteral">"HOME"</font>); +00272 +00273 *configType = 0; +00274 +00275 <font class="preprocessor">#ifndef _MSC_VER</font> +00276 <font class="preprocessor"></font> <font class="comment">// check working directory</font> +00277 <font class="keywordflow">if</font> (debug) +00278 cerr << <font class="stringliteral">"Checking working directory for mods.conf..."</font>; +00279 <font class="preprocessor">#endif</font> +00280 <font class="preprocessor"></font> +00281 <font class="keywordflow">if</font> (FileMgr::existsFile(<font class="stringliteral">"."</font>, <font class="stringliteral">"mods.conf"</font>)) { +00282 +00283 <font class="preprocessor">#ifndef _MSC_VER</font> +00284 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00285 cerr << <font class="stringliteral">"found\n"</font>; +00286 <font class="preprocessor">#endif</font> +00287 <font class="preprocessor"></font> +00288 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, <font class="stringliteral">"./"</font>); +00289 stdstr(configPath, <font class="stringliteral">"./mods.conf"</font>); +00290 <font class="keywordflow">return</font>; +00291 } +00292 +00293 <font class="preprocessor">#ifndef _MSC_VER</font> +00294 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00295 cerr << <font class="stringliteral">"\nChecking working directory for mods.d..."</font>; +00296 <font class="preprocessor">#endif</font> +00297 <font class="preprocessor"></font> +00298 <font class="keywordflow">if</font> (FileMgr::existsDir(<font class="stringliteral">"."</font>, <font class="stringliteral">"mods.d"</font>)) { +00299 +00300 <font class="preprocessor">#ifndef _MSC_VER</font> +00301 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00302 cerr << <font class="stringliteral">"found\n"</font>; +00303 <font class="preprocessor">#endif</font> +00304 <font class="preprocessor"></font> +00305 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, <font class="stringliteral">"./"</font>); +00306 stdstr(configPath, <font class="stringliteral">"./mods.d"</font>); +00307 *configType = 1; +00308 <font class="keywordflow">return</font>; +00309 } +00310 +00311 +00312 <font class="comment">// check environment variable SWORD_PATH</font> +00313 <font class="preprocessor">#ifndef _MSC_VER</font> +00314 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00315 cerr << <font class="stringliteral">"\nChecking SWORD_PATH..."</font>; +00316 <font class="preprocessor">#endif</font> +00317 <font class="preprocessor"></font> +00318 <font class="keywordflow">if</font> (envsworddir != NULL) { +00319 +00320 <font class="preprocessor">#ifndef _MSC_VER</font> +00321 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00322 cerr << <font class="stringliteral">"found ("</font> << envsworddir << <font class="stringliteral">")\n"</font>; +00323 <font class="preprocessor">#endif</font> +00324 <font class="preprocessor"></font> +00325 path = envsworddir; +00326 <font class="keywordflow">if</font> ((envsworddir[strlen(envsworddir)-1] != <font class="charliteral">'\\'</font>) && (envsworddir[strlen(envsworddir)-1] != <font class="charliteral">'/'</font>)) +00327 path += <font class="stringliteral">"/"</font>; +00328 +00329 <font class="preprocessor">#ifndef _MSC_VER</font> +00330 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00331 cerr << <font class="stringliteral">"\nChecking $SWORD_PATH for mods.conf..."</font>; +00332 <font class="preprocessor">#endif</font> +00333 <font class="preprocessor"></font> +00334 <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) { +00335 +00336 <font class="preprocessor">#ifndef _MSC_VER</font> +00337 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00338 cerr << <font class="stringliteral">"found\n"</font>; +00339 <font class="preprocessor">#endif</font> +00340 <font class="preprocessor"></font> +00341 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00342 path += <font class="stringliteral">"mods.conf"</font>; +00343 stdstr(configPath, path.c_str()); +00344 <font class="keywordflow">return</font>; +00345 } +00346 +00347 <font class="preprocessor">#ifndef _MSC_VER</font> +00348 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00349 cerr << <font class="stringliteral">"\nChecking $SWORD_PATH for mods.d..."</font>; +00350 <font class="preprocessor">#endif</font> +00351 <font class="preprocessor"></font> +00352 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) { +00353 +00354 <font class="preprocessor">#ifndef _MSC_VER</font> +00355 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00356 cerr << <font class="stringliteral">"found\n"</font>; +00357 <font class="preprocessor">#endif</font> +00358 <font class="preprocessor"></font> +00359 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00360 path += <font class="stringliteral">"mods.d"</font>; +00361 stdstr(configPath, path.c_str()); +00362 *configType = 1; +00363 <font class="keywordflow">return</font>; +00364 } +00365 } +00366 +00367 +00368 <font class="comment">// check for systemwide globalConfPath</font> +00369 +00370 <font class="preprocessor">#ifndef _MSC_VER</font> +00371 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00372 cerr << <font class="stringliteral">"\nParsing "</font> << globalConfPath << <font class="stringliteral">"..."</font>; +00373 <font class="preprocessor">#endif</font> +00374 <font class="preprocessor"></font> +00375 <font class="keywordtype">char</font> *globPaths = 0; +00376 <font class="keywordtype">char</font> *gfp; +00377 stdstr(&globPaths, globalConfPath); +00378 <font class="keywordflow">for</font> (gfp = strtok(globPaths, <font class="stringliteral">":"</font>); gfp; gfp = strtok(0, <font class="stringliteral">":"</font>)) { +00379 +00380 <font class="preprocessor"> #ifndef _MSC_VER</font> +00381 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00382 cerr << <font class="stringliteral">"\nChecking for "</font> << gfp << <font class="stringliteral">"..."</font>; +00383 <font class="preprocessor">#endif</font> +00384 <font class="preprocessor"></font> +00385 <font class="keywordflow">if</font> (FileMgr::existsFile(gfp)) +00386 <font class="keywordflow">break</font>; +00387 } +00388 +00389 <font class="keywordflow">if</font> (gfp) { +00390 +00391 <font class="preprocessor">#ifndef _MSC_VER</font> +00392 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00393 cerr << <font class="stringliteral">"found\n"</font>; +00394 <font class="preprocessor">#endif</font> +00395 <font class="preprocessor"></font> +00396 <a class="code" href="class_s_w_config.html">SWConfig</a> etcconf(gfp); +00397 <font class="keywordflow">if</font> ((entry = etcconf.<a class="code" href="class_s_w_config.html#m1">Sections</a>[<font class="stringliteral">"Install"</font>].find(<font class="stringliteral">"DataPath"</font>)) != etcconf.<a class="code" href="class_s_w_config.html#m1">Sections</a>[<font class="stringliteral">"Install"</font>].end()) { +00398 path = (*entry).second; +00399 <font class="keywordflow">if</font> (((*entry).second.c_str()[strlen((*entry).second.c_str())-1] != <font class="charliteral">'\\'</font>) && ((*entry).second.c_str()[strlen((*entry).second.c_str())-1] != <font class="charliteral">'/'</font>)) +00400 path += <font class="stringliteral">"/"</font>; +00401 +00402 <font class="preprocessor">#ifndef _MSC_VER</font> +00403 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00404 cerr << <font class="stringliteral">"DataPath in "</font> << gfp << <font class="stringliteral">" is set to: "</font> << path; +00405 <font class="preprocessor">#endif</font> +00406 <font class="preprocessor"></font> +00407 <font class="preprocessor">#ifndef _MSC_VER</font> +00408 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00409 cerr << <font class="stringliteral">"\nChecking for mods.conf in DataPath "</font>; +00410 <font class="preprocessor">#endif</font> +00411 <font class="preprocessor"></font> <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) { +00412 +00413 <font class="preprocessor">#ifndef _MSC_VER</font> +00414 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00415 cerr << <font class="stringliteral">"found\n"</font>; +00416 <font class="preprocessor">#endif</font> +00417 <font class="preprocessor"></font> +00418 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00419 path += <font class="stringliteral">"mods.conf"</font>; +00420 stdstr(configPath, path.c_str()); +00421 <font class="keyword">delete</font> [] globPaths; +00422 <font class="keywordflow">return</font>; +00423 } +00424 +00425 <font class="preprocessor">#ifndef _MSC_VER</font> +00426 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00427 cerr << <font class="stringliteral">"\nChecking for mods.d in DataPath "</font>; +00428 <font class="preprocessor">#endif</font> +00429 <font class="preprocessor"></font> +00430 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) { +00431 +00432 <font class="preprocessor">#ifndef _MSC_VER</font> +00433 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00434 cerr << <font class="stringliteral">"found\n"</font>; +00435 <font class="preprocessor">#endif</font> +00436 <font class="preprocessor"></font> +00437 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00438 path += <font class="stringliteral">"mods.d"</font>; +00439 stdstr(configPath, path.c_str()); +00440 *configType = 1; +00441 <font class="keyword">delete</font> [] globPaths; +00442 <font class="keywordflow">return</font>; +00443 } +00444 } +00445 } +00446 +00447 <font class="keyword">delete</font> [] globPaths; +00448 +00449 <font class="comment">// check ~/.sword/</font> +00450 +00451 <font class="preprocessor">#ifndef _MSC_VER</font> +00452 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00453 cerr << <font class="stringliteral">"\nChecking home directory for ~/.sword/mods.conf"</font> << path; +00454 <font class="preprocessor">#endif</font> +00455 <font class="preprocessor"></font> +00456 <font class="keywordflow">if</font> (envhomedir != NULL) { +00457 path = envhomedir; +00458 <font class="keywordflow">if</font> ((envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'\\'</font>) && (envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'/'</font>)) +00459 path += <font class="stringliteral">"/"</font>; +00460 path += <font class="stringliteral">".sword/"</font>; +00461 <font class="keywordflow">if</font> (FileMgr::existsFile(path.c_str(), <font class="stringliteral">"mods.conf"</font>)) { +00462 +00463 <font class="preprocessor">#ifndef _MSC_VER</font> +00464 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00465 cerr << <font class="stringliteral">" found\n"</font>; +00466 <font class="preprocessor">#endif</font> +00467 <font class="preprocessor"></font> +00468 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00469 path += <font class="stringliteral">"mods.conf"</font>; +00470 stdstr(configPath, path.c_str()); +00471 <font class="keywordflow">return</font>; +00472 } +00473 +00474 <font class="preprocessor">#ifndef _MSC_VER</font> +00475 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00476 cerr << <font class="stringliteral">"\nChecking home directory for ~/.sword/mods.d"</font> << path; +00477 <font class="preprocessor">#endif</font> +00478 <font class="preprocessor"></font> +00479 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) { +00480 +00481 <font class="preprocessor">#ifndef _MSC_VER</font> +00482 <font class="preprocessor"></font><font class="keywordflow">if</font> (debug) +00483 cerr << <font class="stringliteral">"found\n"</font>; +00484 <font class="preprocessor">#endif</font> +00485 <font class="preprocessor"></font> +00486 stdstr(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00487 path += <font class="stringliteral">"mods.d"</font>; +00488 stdstr(configPath, path.c_str()); +00489 *configType = 2; +00490 <font class="keywordflow">return</font>; +00491 } +00492 } +00493 } +00494 +00495 +00496 <font class="keywordtype">void</font> SWMgr::loadConfigDir(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath) +00497 { +00498 DIR *dir; +00499 <font class="keyword">struct </font>dirent *ent; +00500 string newmodfile; +00501 +00502 <font class="keywordflow">if</font> ((dir = opendir(ipath))) { +00503 rewinddir(dir); +00504 <font class="keywordflow">while</font> ((ent = readdir(dir))) { +00505 <font class="keywordflow">if</font> ((strcmp(ent->d_name, <font class="stringliteral">"."</font>)) && (strcmp(ent->d_name, <font class="stringliteral">".."</font>))) { +00506 newmodfile = ipath; +00507 <font class="keywordflow">if</font> ((ipath[strlen(ipath)-1] != <font class="charliteral">'\\'</font>) && (ipath[strlen(ipath)-1] != <font class="charliteral">'/'</font>)) +00508 newmodfile += <font class="stringliteral">"/"</font>; +00509 newmodfile += ent->d_name; +00510 <font class="keywordflow">if</font> (config) { +00511 <a class="code" href="class_s_w_config.html">SWConfig</a> tmpConfig(newmodfile.c_str()); +00512 *<a class="code" href="class_s_w_mgr.html#m0">config</a> += tmpConfig; +00513 } +00514 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(newmodfile.c_str()); +00515 } +00516 } +00517 closedir(dir); +00518 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_mgr.html#m0">config</a>) { <font class="comment">// if no .conf file exist yet, create a default</font> +00519 newmodfile = ipath; +00520 <font class="keywordflow">if</font> ((ipath[strlen(ipath)-1] != <font class="charliteral">'\\'</font>) && (ipath[strlen(ipath)-1] != <font class="charliteral">'/'</font>)) +00521 newmodfile += <font class="stringliteral">"/"</font>; +00522 newmodfile += <font class="stringliteral">"globals.conf"</font>; +00523 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(newmodfile.c_str()); +00524 } +00525 } +00526 } +00527 +00528 +00529 <font class="comment">/***********************************************************************</font> +00530 <font class="comment"> * SWMgr::Load - loads actual modules</font> +00531 <font class="comment"> *</font> +00532 <font class="comment"> * RET: status - 0 = ok; -1 no config found; 1 = no modules installed</font> +00533 <font class="comment"> *</font> +00534 <font class="comment"> */</font> +00535 +<a name="l00536"></a><a class="code" href="class_s_w_mgr.html#a5">00536</a> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_mgr.html#a5">SWMgr::Load</a>() { +00537 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> ret = 0; +00538 +00539 <font class="keywordflow">if</font> (!<a class="code" href="class_s_w_mgr.html#m0">config</a>) { <font class="comment">// If we weren't passed a config object at construction, find a config file</font> +00540 <font class="keywordflow">if</font> (!configPath) <font class="comment">// If we weren't passed a config path at construction...</font> +00541 findConfig(&configType, &<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, &configPath); +00542 <font class="keywordflow">if</font> (configPath) { +00543 <font class="keywordflow">if</font> (configType) +00544 loadConfigDir(configPath); +00545 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = <font class="keyword">new</font> <a class="code" href="class_s_w_config.html">SWConfig</a>(configPath); +00546 } +00547 } +00548 +00549 <font class="keywordflow">if</font> (config) { +00550 SectionMap::iterator Sectloop, Sectend; +00551 ConfigEntMap::iterator Entryloop, Entryend; +00552 +00553 DeleteMods(); +00554 +00555 <font class="keywordflow">for</font> (Sectloop = <a class="code" href="class_s_w_mgr.html#m0">config</a>-><a class="code" href="class_s_w_config.html#m1">Sections</a>.lower_bound(<font class="stringliteral">"Globals"</font>), Sectend = <a class="code" href="class_s_w_mgr.html#m0">config</a>-><a class="code" href="class_s_w_config.html#m1">Sections</a>.upper_bound(<font class="stringliteral">"Globals"</font>); Sectloop != Sectend; Sectloop++) { <font class="comment">// scan thru all 'Globals' sections</font> +00556 <font class="keywordflow">for</font> (Entryloop = (*Sectloop).second.lower_bound(<font class="stringliteral">"AutoInstall"</font>), Entryend = (*Sectloop).second.upper_bound(<font class="stringliteral">"AutoInstall"</font>); Entryloop != Entryend; Entryloop++) <font class="comment">// scan thru all AutoInstall entries</font> +00557 <a class="code" href="class_s_w_mgr.html#a4">InstallScan</a>((*Entryloop).second.c_str()); <font class="comment">// Scan AutoInstall entry directory for new modules and install</font> +00558 } +00559 <font class="keywordflow">if</font> (configType) { <font class="comment">// force reload on config object because we may have installed new modules</font> +00560 <font class="keyword">delete</font> myconfig; +00561 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = 0; +00562 loadConfigDir(configPath); +00563 } +00564 <font class="keywordflow">else</font> <a class="code" href="class_s_w_mgr.html#m0">config</a>-><a class="code" href="class_s_w_config.html#a2">Load</a>(); +00565 +00566 CreateMods(); +00567 +00568 <font class="comment">// augment config with ~/.sword/mods.d if it exists ---------------------</font> +00569 <font class="keywordtype">char</font> *envhomedir = getenv (<font class="stringliteral">"HOME"</font>); +00570 <font class="keywordflow">if</font> (envhomedir != NULL && configType != 2) { <font class="comment">// 2 = user only</font> +00571 string path = envhomedir; +00572 <font class="keywordflow">if</font> ((envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'\\'</font>) && (envhomedir[strlen(envhomedir)-1] != <font class="charliteral">'/'</font>)) +00573 path += <font class="stringliteral">"/"</font>; +00574 path += <font class="stringliteral">".sword/"</font>; +00575 <font class="keywordflow">if</font> (FileMgr::existsDir(path.c_str(), <font class="stringliteral">"mods.d"</font>)) { +00576 <font class="keywordtype">char</font> *savePrefixPath = 0; +00577 <font class="keywordtype">char</font> *saveConfigPath = 0; +00578 <a class="code" href="class_s_w_config.html">SWConfig</a> *saveConfig = 0; +00579 stdstr(&savePrefixPath, <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>); +00580 stdstr(&<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, path.c_str()); +00581 path += <font class="stringliteral">"mods.d"</font>; +00582 stdstr(&saveConfigPath, configPath); +00583 stdstr(&configPath, path.c_str()); +00584 saveConfig = <a class="code" href="class_s_w_mgr.html#m0">config</a>; +00585 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = 0; +00586 loadConfigDir(configPath); +00587 +00588 CreateMods(); +00589 +00590 stdstr(&<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>, savePrefixPath); +00591 <font class="keyword">delete</font> []savePrefixPath; +00592 stdstr(&configPath, saveConfigPath); +00593 <font class="keyword">delete</font> []saveConfigPath; +00594 (*saveConfig) += *<a class="code" href="class_s_w_mgr.html#m0">config</a>; +00595 homeConfig = myconfig; +00596 <a class="code" href="class_s_w_mgr.html#m0">config</a> = myconfig = saveConfig; +00597 } +00598 } +00599 <font class="comment">// -------------------------------------------------------------------------</font> +00600 <font class="keywordflow">if</font> ( !<a class="code" href="class_s_w_mgr.html#m2">Modules</a>.size() ) <font class="comment">// config exists, but no modules</font> +00601 ret = 1; +00602 +00603 } +00604 <font class="keywordflow">else</font> { +00605 SWLog::systemlog->LogError(<font class="stringliteral">"SWMgr: Can't find 'mods.conf' or 'mods.d'. Try setting:\n\tSWORD_PATH=<directory containing mods.conf>\n\tOr see the README file for a full description of setup options (%s)"</font>, (configPath) ? configPath : <font class="stringliteral">"<configPath is null>"</font>); +00606 ret = -1; +00607 } +00608 +00609 <font class="keywordflow">return</font> ret; +00610 } +00611 +00612 <a class="code" href="class_s_w_module.html">SWModule</a> *SWMgr::CreateMod(string name, string driver, ConfigEntMap &section) +00613 { +00614 string description, datapath, misc1; +00615 ConfigEntMap::iterator entry; +00616 <a class="code" href="class_s_w_module.html">SWModule</a> *newmod = 0; +00617 string lang, sourceformat, encoding; +00618 <font class="keywordtype">signed</font> <font class="keywordtype">char</font> direction, enc, markup; +00619 +00620 description = ((entry = section.find(<font class="stringliteral">"Description"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00621 lang = ((entry = section.find(<font class="stringliteral">"Lang"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"en"</font>; +00622 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00623 encoding = ((entry = section.find(<font class="stringliteral">"Encoding"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00624 datapath = <a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>; +00625 <font class="keywordflow">if</font> ((<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>[strlen(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>)-1] != <font class="charliteral">'\\'</font>) && (<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>[strlen(<a class="code" href="class_s_w_mgr.html#m3">prefixPath</a>)-1] != <font class="charliteral">'/'</font>)) +00626 datapath += <font class="stringliteral">"/"</font>; +00627 misc1 += ((entry = section.find(<font class="stringliteral">"DataPath"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00628 <font class="keywordtype">char</font> *buf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ strlen(misc1.c_str()) + 1 ]; +00629 <font class="keywordtype">char</font> *buf2 = buf; +00630 strcpy(buf, misc1.c_str()); +00631 <font class="comment">// for (; ((*buf2) && ((*buf2 == '.') || (*buf2 == '/') || (*buf2 == '\\'))); buf2++);</font> +00632 <font class="keywordflow">for</font> (; ((*buf2) && ((*buf2 == <font class="charliteral">'/'</font>) || (*buf2 == <font class="charliteral">'\\'</font>))); buf2++); +00633 <font class="keywordflow">if</font> (*buf2) +00634 datapath += buf2; +00635 <font class="keyword">delete</font> [] buf; +00636 +00637 section[<font class="stringliteral">"AbsoluteDataPath"</font>] = datapath; +00638 +00639 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"GBF"</font>)) +00640 markup = FMT_GBF; +00641 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"ThML"</font>)) +00642 markup = FMT_THML; +00643 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"OSIS"</font>)) +00644 markup = FMT_OSIS; +00645 <font class="keywordflow">else</font> +00646 markup = FMT_PLAIN; +00647 +00648 <font class="keywordflow">if</font> (!stricmp(encoding.c_str(), <font class="stringliteral">"SCSU"</font>)) +00649 enc = ENC_SCSU; +00650 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(encoding.c_str(), <font class="stringliteral">"UTF-8"</font>)) { +00651 enc = ENC_UTF8; +00652 } +00653 <font class="keywordflow">else</font> enc = ENC_LATIN1; +00654 +00655 <font class="keywordflow">if</font> ((entry = section.find(<font class="stringliteral">"Direction"</font>)) == section.end()) { +00656 direction = DIRECTION_LTR; +00657 } +00658 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp((*entry).second.c_str(), <font class="stringliteral">"rtol"</font>)) { +00659 direction = DIRECTION_RTL; +00660 } +00661 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp((*entry).second.c_str(), <font class="stringliteral">"bidi"</font>)) { +00662 direction = DIRECTION_BIDI; +00663 } +00664 <font class="keywordflow">else</font> { +00665 direction = DIRECTION_LTR; +00666 } +00667 +00668 <font class="keywordflow">if</font> ((!stricmp(driver.c_str(), <font class="stringliteral">"zText"</font>)) || (!stricmp(driver.c_str(), <font class="stringliteral">"zCom"</font>))) { +00669 SWCompress *compress = 0; +00670 <font class="keywordtype">int</font> blockType = CHAPTERBLOCKS; +00671 misc1 = ((entry = section.find(<font class="stringliteral">"BlockType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"CHAPTER"</font>; +00672 <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"VERSE"</font>)) +00673 blockType = VERSEBLOCKS; +00674 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"CHAPTER"</font>)) +00675 blockType = CHAPTERBLOCKS; +00676 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"BOOK"</font>)) +00677 blockType = BOOKBLOCKS; +00678 +00679 misc1 = ((entry = section.find(<font class="stringliteral">"CompressType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"LZSS"</font>; +00680 <font class="preprocessor">#ifndef EXCLUDEZLIB</font> +00681 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"ZIP"</font>)) +00682 compress = <font class="keyword">new</font> ZipCompress(); +00683 <font class="keywordflow">else</font> +00684 <font class="preprocessor">#endif</font> +00685 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"LZSS"</font>)) +00686 compress = <font class="keyword">new</font> LZSSCompress(); +00687 +00688 <font class="keywordflow">if</font> (compress) { +00689 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"zText"</font>)) +00690 newmod = <font class="keyword">new</font> zText(datapath.c_str(), name.c_str(), description.c_str(), blockType, compress, 0, enc, direction, markup, lang.c_str()); +00691 <font class="keywordflow">else</font> newmod = <font class="keyword">new</font> zCom(datapath.c_str(), name.c_str(), description.c_str(), blockType, compress, 0, enc, direction, markup, lang.c_str()); +00692 } +00693 } +00694 +00695 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawText"</font>)) { +00696 newmod = <font class="keyword">new</font> RawText(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str()); +00697 } +00698 +00699 <font class="comment">// backward support old drivers</font> +00700 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawGBF"</font>)) { +00701 newmod = <font class="keyword">new</font> RawText(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str()); +00702 } +00703 +00704 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawCom"</font>)) { +00705 newmod = <font class="keyword">new</font> RawCom(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str()); +00706 } +00707 +00708 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawFiles"</font>)) { +00709 newmod = <font class="keyword">new</font> RawFiles(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str()); +00710 } +00711 +00712 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"HREFCom"</font>)) { +00713 misc1 = ((entry = section.find(<font class="stringliteral">"Prefix"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00714 newmod = <font class="keyword">new</font> HREFCom(datapath.c_str(), misc1.c_str(), name.c_str(), description.c_str()); +00715 } +00716 +00717 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawLD"</font>)) +00718 newmod = <font class="keyword">new</font> RawLD(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str()); +00719 +00720 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawLD4"</font>)) +00721 newmod = <font class="keyword">new</font> RawLD4(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str()); +00722 +00723 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"zLD"</font>)) { +00724 SWCompress *compress = 0; +00725 <font class="keywordtype">int</font> blockCount; +00726 misc1 = ((entry = section.find(<font class="stringliteral">"BlockCount"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"200"</font>; +00727 blockCount = atoi(misc1.c_str()); +00728 blockCount = (blockCount) ? blockCount : 200; +00729 +00730 misc1 = ((entry = section.find(<font class="stringliteral">"CompressType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">"LZSS"</font>; +00731 <font class="preprocessor">#ifndef EXCLUDEZLIB</font> +00732 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"ZIP"</font>)) +00733 compress = <font class="keyword">new</font> ZipCompress(); +00734 <font class="keywordflow">else</font> +00735 <font class="preprocessor">#endif</font> +00736 <font class="preprocessor"></font> <font class="keywordflow">if</font> (!stricmp(misc1.c_str(), <font class="stringliteral">"LZSS"</font>)) +00737 compress = <font class="keyword">new</font> LZSSCompress(); +00738 +00739 <font class="keywordflow">if</font> (compress) { +00740 newmod = <font class="keyword">new</font> zLD(datapath.c_str(), name.c_str(), description.c_str(), blockCount, compress, 0, enc, direction, markup, lang.c_str()); +00741 } +00742 } +00743 +00744 <font class="keywordflow">if</font> (!stricmp(driver.c_str(), <font class="stringliteral">"RawGenBook"</font>)) { +00745 newmod = <font class="keyword">new</font> RawGenBook(datapath.c_str(), name.c_str(), description.c_str(), 0, enc, direction, markup, lang.c_str()); +00746 } +00747 <font class="comment">// if a specific module type is set in the config, use this</font> +00748 <font class="keywordflow">if</font> ((entry = section.find(<font class="stringliteral">"Type"</font>)) != section.end()) +00749 newmod-><a class="code" href="class_s_w_module.html#a17">Type</a>(entry->second.c_str()); +00750 +00751 newmod-><a class="code" href="class_s_w_module.html#a5">setConfig</a>(&section); +00752 <font class="keywordflow">return</font> newmod; +00753 } +00754 +00755 +00756 <font class="keywordtype">void</font> SWMgr::AddGlobalOptions(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) { +00757 <font class="keywordflow">for</font> (;start != end; start++) { +00758 FilterMap::iterator it; +00759 it = optionFilters.find((*start).second); +00760 <font class="keywordflow">if</font> (it != optionFilters.end()) { +00761 module-><a class="code" href="class_s_w_module.html#a54">AddOptionFilter</a>((*it).second); <font class="comment">// add filter to module and option as a valid option</font> +00762 OptionsList::iterator loop; +00763 <font class="keywordflow">for</font> (loop = options.begin(); loop != options.end(); loop++) { +00764 <font class="keywordflow">if</font> (!strcmp((*loop).c_str(), (*it).second->getOptionName())) +00765 <font class="keywordflow">break</font>; +00766 } +00767 <font class="keywordflow">if</font> (loop == options.end()) <font class="comment">// if we have not yet included the option</font> +00768 options.push_back((*it).second->getOptionName()); +00769 } +00770 } +00771 <font class="keywordflow">if</font> (filterMgr) +00772 filterMgr->AddGlobalOptions(module, section, start, end); +00773 } +00774 +00775 +00776 <font class="keywordtype">void</font> SWMgr::AddLocalOptions(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &section, ConfigEntMap::iterator start, ConfigEntMap::iterator end) +00777 { +00778 <font class="keywordflow">for</font> (;start != end; start++) { +00779 FilterMap::iterator it; +00780 it = optionFilters.find((*start).second); +00781 <font class="keywordflow">if</font> (it != optionFilters.end()) { +00782 module-><a class="code" href="class_s_w_module.html#a54">AddOptionFilter</a>((*it).second); <font class="comment">// add filter to module</font> +00783 } +00784 } +00785 +00786 <font class="keywordflow">if</font> (filterMgr) +00787 filterMgr->AddLocalOptions(module, section, start, end); +00788 } +00789 +00790 +<a name="l00791"></a><a class="code" href="class_s_w_mgr.html#b11">00791</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b11">SWMgr::AddRawFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &section) { +00792 string sourceformat, cipherKey; +00793 ConfigEntMap::iterator entry; +00794 +00795 cipherKey = ((entry = section.find(<font class="stringliteral">"CipherKey"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00796 <font class="keywordflow">if</font> (!cipherKey.empty()) { +00797 SWFilter *cipherFilter = <font class="keyword">new</font> CipherFilter(cipherKey.c_str()); +00798 cipherFilters.insert(FilterMap::value_type(module-><a class="code" href="class_s_w_module.html#a15">Name</a>(), cipherFilter)); +00799 cleanupFilters.push_back(cipherFilter); +00800 module-><a class="code" href="class_s_w_module.html#a51">AddRawFilter</a>(cipherFilter); +00801 } +00802 +00803 <font class="keywordflow">if</font> (filterMgr) +00804 filterMgr->AddRawFilters(module, section); +00805 } +00806 +00807 +<a name="l00808"></a><a class="code" href="class_s_w_mgr.html#b8">00808</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b8">SWMgr::AddEncodingFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &section) { +00809 +00810 <font class="keywordflow">if</font> (filterMgr) +00811 filterMgr->AddEncodingFilters(module, section); +00812 } +00813 +00814 +<a name="l00815"></a><a class="code" href="class_s_w_mgr.html#b9">00815</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b9">SWMgr::AddRenderFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &section) { +00816 string sourceformat; +00817 ConfigEntMap::iterator entry; +00818 +00819 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00820 +00821 <font class="comment">// Temporary: To support old module types</font> +00822 <font class="comment">// TODO: Remove at 1.6.0 release?</font> +00823 <font class="keywordflow">if</font> (sourceformat.empty()) { +00824 sourceformat = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00825 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"RawGBF"</font>)) +00826 sourceformat = <font class="stringliteral">"GBF"</font>; +00827 <font class="keywordflow">else</font> sourceformat = <font class="stringliteral">""</font>; +00828 } +00829 +00830 <font class="comment">// process module - eg. follows</font> +00831 <font class="comment">// if (!stricmp(sourceformat.c_str(), "GBF")) {</font> +00832 <font class="comment">// module->AddRenderFilter(gbftortf);</font> +00833 <font class="comment">// }</font> +00834 +00835 <font class="keywordflow">if</font> (filterMgr) +00836 filterMgr->AddRenderFilters(module, section); +00837 +00838 } +00839 +00840 +<a name="l00841"></a><a class="code" href="class_s_w_mgr.html#b10">00841</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#b10">SWMgr::AddStripFilters</a>(<a class="code" href="class_s_w_module.html">SWModule</a> *module, ConfigEntMap &section) +00842 { +00843 string sourceformat; +00844 ConfigEntMap::iterator entry; +00845 +00846 sourceformat = ((entry = section.find(<font class="stringliteral">"SourceType"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00847 <font class="comment">// Temporary: To support old module types</font> +00848 <font class="keywordflow">if</font> (sourceformat.empty()) { +00849 sourceformat = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00850 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"RawGBF"</font>)) +00851 sourceformat = <font class="stringliteral">"GBF"</font>; +00852 <font class="keywordflow">else</font> sourceformat = <font class="stringliteral">""</font>; +00853 } +00854 +00855 <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"GBF"</font>)) { +00856 module-><a class="code" href="class_s_w_module.html#a49">AddStripFilter</a>(gbfplain); +00857 } +00858 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (!stricmp(sourceformat.c_str(), <font class="stringliteral">"ThML"</font>)) { +00859 module-><a class="code" href="class_s_w_module.html#a49">AddStripFilter</a>(thmlplain); +00860 } +00861 +00862 <font class="keywordflow">if</font> (filterMgr) +00863 filterMgr->AddStripFilters(module, section); +00864 +00865 } +00866 +00867 +00868 <font class="keywordtype">void</font> SWMgr::CreateMods() { +00869 SectionMap::iterator it; +00870 ConfigEntMap::iterator start; +00871 ConfigEntMap::iterator end; +00872 ConfigEntMap::iterator entry; +00873 <a class="code" href="class_s_w_module.html">SWModule</a> *newmod; +00874 string driver, misc1; +00875 <font class="keywordflow">for</font> (it = <a class="code" href="class_s_w_mgr.html#m0">config</a>-><a class="code" href="class_s_w_config.html#m1">Sections</a>.begin(); it != <a class="code" href="class_s_w_mgr.html#m0">config</a>-><a class="code" href="class_s_w_config.html#m1">Sections</a>.end(); it++) { +00876 ConfigEntMap &section = (*it).second; +00877 newmod = 0; +00878 +00879 driver = ((entry = section.find(<font class="stringliteral">"ModDrv"</font>)) != section.end()) ? (*entry).second : (string)<font class="stringliteral">""</font>; +00880 <font class="keywordflow">if</font> (!driver.empty()) { +00881 newmod = CreateMod((*it).first, driver, section); +00882 <font class="keywordflow">if</font> (newmod) { +00883 start = (*it).second.lower_bound(<font class="stringliteral">"GlobalOptionFilter"</font>); +00884 end = (*it).second.upper_bound(<font class="stringliteral">"GlobalOptionFilter"</font>); +00885 AddGlobalOptions(newmod, section, start, end); +00886 +00887 start = (*it).second.lower_bound(<font class="stringliteral">"LocalOptionFilter"</font>); +00888 end = (*it).second.upper_bound(<font class="stringliteral">"LocalOptionFilter"</font>); +00889 AddLocalOptions(newmod, section, start, end); +00890 +00891 <a class="code" href="class_s_w_mgr.html#b11">AddRawFilters</a>(newmod, section); +00892 <a class="code" href="class_s_w_mgr.html#b10">AddStripFilters</a>(newmod, section); +00893 <a class="code" href="class_s_w_mgr.html#b9">AddRenderFilters</a>(newmod, section); +00894 <a class="code" href="class_s_w_mgr.html#b8">AddEncodingFilters</a>(newmod, section); +00895 +00896 <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.insert(ModMap::value_type(newmod-><a class="code" href="class_s_w_module.html#a15">Name</a>(), newmod)); +00897 } +00898 } +00899 } +00900 } +00901 +00902 +00903 <font class="keywordtype">void</font> SWMgr::DeleteMods() { +00904 +00905 ModMap::iterator it; +00906 +00907 <font class="keywordflow">for</font> (it = <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.begin(); it != <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.end(); it++) +00908 <font class="keyword">delete</font> (*it).second; +00909 +00910 <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.clear(); +00911 } +00912 +00913 +<a name="l00914"></a><a class="code" href="class_s_w_mgr.html#a4">00914</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#a4">SWMgr::InstallScan</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *dirname) +00915 { +00916 DIR *dir; +00917 <font class="keyword">struct </font>dirent *ent; +00918 <font class="keywordtype">int</font> conffd = 0; +00919 string newmodfile; +00920 string targetName; +00921 +00922 <font class="keywordflow">if</font> (!access(dirname, 04)) { +00923 <font class="keywordflow">if</font> ((dir = opendir(dirname))) { +00924 rewinddir(dir); +00925 <font class="keywordflow">while</font> ((ent = readdir(dir))) { +00926 <font class="keywordflow">if</font> ((strcmp(ent->d_name, <font class="stringliteral">"."</font>)) && (strcmp(ent->d_name, <font class="stringliteral">".."</font>))) { +00927 newmodfile = dirname; +00928 <font class="keywordflow">if</font> ((dirname[strlen(dirname)-1] != <font class="charliteral">'\\'</font>) && (dirname[strlen(dirname)-1] != <font class="charliteral">'/'</font>)) +00929 newmodfile += <font class="stringliteral">"/"</font>; +00930 newmodfile += ent->d_name; +00931 <font class="keywordflow">if</font> (configType) { +00932 <font class="keywordflow">if</font> (<a class="code" href="class_s_w_mgr.html#m0">config</a> > 0) +00933 close(conffd); +00934 targetName = configPath; +00935 <font class="keywordflow">if</font> ((configPath[strlen(configPath)-1] != <font class="charliteral">'\\'</font>) && (configPath[strlen(configPath)-1] != <font class="charliteral">'/'</font>)) +00936 targetName += <font class="stringliteral">"/"</font>; +00937 targetName += ent->d_name; +00938 conffd = open(targetName.c_str(), O_WRONLY|O_CREAT, S_IREAD|S_IWRITE); +00939 } +00940 <font class="keywordflow">else</font> { +00941 <font class="keywordflow">if</font> (conffd < 1) { +00942 conffd = open(<a class="code" href="class_s_w_mgr.html#m0">config</a>-><a class="code" href="class_s_w_config.html#m0">filename</a>.c_str(), O_WRONLY|O_APPEND); +00943 <font class="keywordflow">if</font> (conffd > 0) +00944 lseek(conffd, 0L, SEEK_END); +00945 } +00946 } +00947 AddModToConfig(conffd, newmodfile.c_str()); +00948 unlink(newmodfile.c_str()); +00949 } +00950 } +00951 <font class="keywordflow">if</font> (conffd > 0) +00952 close(conffd); +00953 closedir(dir); +00954 } +00955 } +00956 } +00957 +00958 +00959 <font class="keywordtype">char</font> SWMgr::AddModToConfig(<font class="keywordtype">int</font> conffd, <font class="keyword">const</font> <font class="keywordtype">char</font> *fname) +00960 { +00961 <font class="keywordtype">int</font> modfd; +00962 <font class="keywordtype">char</font> ch; +00963 +00964 SWLog::systemlog->LogTimedInformation(<font class="stringliteral">"Found new module [%s]. Installing..."</font>, fname); +00965 modfd = open(fname, O_RDONLY); +00966 ch = <font class="charliteral">'\n'</font>; +00967 write(conffd, &ch, 1); +00968 <font class="keywordflow">while</font> (read(modfd, &ch, 1) == 1) +00969 write(conffd, &ch, 1); +00970 ch = <font class="charliteral">'\n'</font>; +00971 write(conffd, &ch, 1); +00972 close(modfd); +00973 <font class="keywordflow">return</font> 0; +00974 } +00975 +00976 +<a name="l00977"></a><a class="code" href="class_s_w_mgr.html#a6">00977</a> <font class="keywordtype">void</font> <a class="code" href="class_s_w_mgr.html#a6">SWMgr::setGlobalOption</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *option, <font class="keyword">const</font> <font class="keywordtype">char</font> *value) +00978 { +00979 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) { +00980 <font class="keywordflow">if</font> ((*it).second->getOptionName()) { +00981 <font class="keywordflow">if</font> (!stricmp(option, (*it).second->getOptionName())) +00982 (*it).second->setOptionValue(value); +00983 } +00984 } +00985 } +00986 +00987 +<a name="l00988"></a><a class="code" href="class_s_w_mgr.html#a7">00988</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_mgr.html#a7">SWMgr::getGlobalOption</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *option) +00989 { +00990 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) { +00991 <font class="keywordflow">if</font> ((*it).second->getOptionName()) { +00992 <font class="keywordflow">if</font> (!stricmp(option, (*it).second->getOptionName())) +00993 <font class="keywordflow">return</font> (*it).second->getOptionValue(); +00994 } +00995 } +00996 <font class="keywordflow">return</font> 0; +00997 } +00998 +00999 +<a name="l01000"></a><a class="code" href="class_s_w_mgr.html#a8">01000</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_mgr.html#a8">SWMgr::getGlobalOptionTip</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *option) +01001 { +01002 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) { +01003 <font class="keywordflow">if</font> ((*it).second->getOptionName()) { +01004 <font class="keywordflow">if</font> (!stricmp(option, (*it).second->getOptionName())) +01005 <font class="keywordflow">return</font> (*it).second->getOptionTip(); +01006 } +01007 } +01008 <font class="keywordflow">return</font> 0; +01009 } +01010 +01011 +<a name="l01012"></a><a class="code" href="class_s_w_mgr.html#a9">01012</a> OptionsList <a class="code" href="class_s_w_mgr.html#a9">SWMgr::getGlobalOptions</a>() +01013 { +01014 <font class="keywordflow">return</font> options; +01015 } +01016 +01017 +01018 OptionsList SWMgr::getGlobalOptionValues(<font class="keyword">const</font> <font class="keywordtype">char</font> *option) +01019 { +01020 OptionsList options; +01021 <font class="keywordflow">for</font> (FilterMap::iterator it = optionFilters.begin(); it != optionFilters.end(); it++) { +01022 <font class="keywordflow">if</font> ((*it).second->getOptionName()) { +01023 <font class="keywordflow">if</font> (!stricmp(option, (*it).second->getOptionName())) { +01024 options = (*it).second->getOptionValues(); +01025 <font class="keywordflow">break</font>; <font class="comment">// just find the first one. All option filters with the same option name should expect the same values</font> +01026 } +01027 } +01028 } +01029 <font class="keywordflow">return</font> options; +01030 } +01031 +01032 +<a name="l01033"></a><a class="code" href="class_s_w_mgr.html#a11">01033</a> <font class="keywordtype">signed</font> <font class="keywordtype">char</font> <a class="code" href="class_s_w_mgr.html#a11">SWMgr::setCipherKey</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *modName, <font class="keyword">const</font> <font class="keywordtype">char</font> *key) { +01034 FilterMap::iterator it; +01035 ModMap::iterator it2; +01036 +01037 <font class="comment">// check for filter that already exists</font> +01038 it = cipherFilters.find(modName); +01039 <font class="keywordflow">if</font> (it != cipherFilters.end()) { +01040 ((CipherFilter *)(*it).second)->getCipher()->setCipherKey(key); +01041 <font class="keywordflow">return</font> 0; +01042 } +01043 <font class="comment">// check if module exists</font> +01044 <font class="keywordflow">else</font> { +01045 it2 = <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.find(modName); +01046 <font class="keywordflow">if</font> (it2 != <a class="code" href="class_s_w_mgr.html#m2">Modules</a>.end()) { +01047 SWFilter *cipherFilter = <font class="keyword">new</font> CipherFilter(key); +01048 cipherFilters.insert(FilterMap::value_type(modName, cipherFilter)); +01049 cleanupFilters.push_back(cipherFilter); +01050 (*it2).second->AddRawFilter(cipherFilter); +01051 <font class="keywordflow">return</font> 0; +01052 } +01053 } +01054 <font class="keywordflow">return</font> -1; +01055 } +</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 2002 for The Sword Project by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 +width=110 height=53></a>1.2.15 </small></address> +</body> +</html> |