00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "load_prc_file.h"
00016 #include "configPageManager.h"
00017 #include "configVariableManager.h"
00018 #include "virtualFileSystem.h"
00019 #include "config_express.h"
00020 #include "config_util.h"
00021 #include "hashVal.h"
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 ConfigPage *
00042 load_prc_file(const Filename &filename) {
00043 Filename path = filename;
00044 path.set_text();
00045
00046 ConfigPageManager *cp_mgr = ConfigPageManager::get_global_ptr();
00047
00048 VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr();
00049 vfs->resolve_filename(path, cp_mgr->get_search_path()) ||
00050 vfs->resolve_filename(path, get_model_path());
00051
00052 istream *file = vfs->open_read_file(path, true);
00053 if (file == (istream *)NULL) {
00054 util_cat.error()
00055 << "Unable to open " << path << "\n";
00056 return NULL;
00057 }
00058
00059 util_cat.info()
00060 << "Reading " << path << "\n";
00061
00062 ConfigPage *page = cp_mgr->make_explicit_page(path);
00063 bool read_ok = page->read_prc(*file);
00064 vfs->close_read_file(file);
00065
00066 if (read_ok) {
00067 return page;
00068
00069 } else {
00070 util_cat.info()
00071 << "Unable to read " << path << "\n";
00072 cp_mgr->delete_explicit_page(page);
00073 return NULL;
00074 }
00075 }
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 EXPCL_PANDA_PUTIL ConfigPage *
00090 load_prc_file_data(const string &name, const string &data) {
00091 istringstream strm(data);
00092
00093 ConfigPageManager *cp_mgr = ConfigPageManager::get_global_ptr();
00094
00095 ConfigPage *page = cp_mgr->make_explicit_page(name);
00096 bool read_ok = page->read_prc(strm);
00097
00098 if (read_ok) {
00099 page->set_trust_level(1);
00100 return page;
00101
00102 } else {
00103 util_cat.info()
00104 << "Unable to read explicit prc data " << name << "\n";
00105 cp_mgr->delete_explicit_page(page);
00106 return NULL;
00107 }
00108 }
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 bool
00122 unload_prc_file(ConfigPage *page) {
00123 ConfigPageManager *cp_mgr = ConfigPageManager::get_global_ptr();
00124 return cp_mgr->delete_explicit_page(page);
00125 }
00126
00127
00128 #ifdef HAVE_OPENSSL
00129
00130
00131
00132
00133
00134
00135
00136 void
00137 hash_prc_variables(HashVal &hash) {
00138 ostringstream strm;
00139 ConfigVariableManager *cv_mgr = ConfigVariableManager::get_global_ptr();
00140 cv_mgr->write_prc_variables(strm);
00141 hash.hash_string(strm.str());
00142 }
00143
00144 #endif // HAVE_OPENSSL