Changeset 49235 in vbox for trunk/src/VBox/Main/src-server/HostDnsServiceResolvConf.cpp
- Timestamp:
- Oct 22, 2013 6:56:03 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 90144
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-server/HostDnsServiceResolvConf.cpp
r48955 r49235 3 3 #include <VBox/com/ptr.h> 4 4 5 #include "HostDnsService.h"6 5 7 6 #ifdef RT_OS_OS2 … … 19 18 #include <iprt/err.h> 20 19 #include <iprt/file.h> 20 #include <iprt/critsect.h> 21 21 22 22 #include <VBox/log.h> 23 24 #include <string> 25 #include <vector> 26 27 #include "HostDnsService.h" 28 29 30 struct HostDnsServiceResolvConf::Data 31 { 32 Data(const char *fileName):resolvConfFilename(fileName){}; 33 34 std::string resolvConfFilename; 35 }; 36 37 38 const std::string& HostDnsServiceResolvConf::resolvConf() 39 { 40 return m->resolvConfFilename; 41 } 23 42 24 43 … … 51 70 52 71 53 HostDnsServiceResolvConf:: HostDnsServiceResolvConf(const char* aResolvConfFilename)72 HostDnsServiceResolvConf::~HostDnsServiceResolvConf() 54 73 { 55 m_ResolvConfFilename = com::Utf8Str(aResolvConfFilename);74 if (m) delete m; 56 75 } 57 76 58 77 59 H ostDnsServiceResolvConf::~HostDnsServiceResolvConf()78 HRESULT HostDnsServiceResolvConf::init(const char *aResolvConfFileName) 60 79 { 61 m_ResolvConfFilename.setNull(); 62 RTFileClose(m_ResolvConfFile); 63 } 80 HostDnsMonitor::init(); 64 81 65 HRESULT HostDnsServiceResolvConf::init(const VirtualBox *aParent) 66 { 67 HRESULT hrc; 68 69 int rc = RTFileOpen(&m_ResolvConfFile, m_ResolvConfFilename.c_str(), 70 RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_NONE); 71 AssertRCReturn(rc, E_FAIL); 72 73 74 hrc = HostDnsService::init(aParent); 75 AssertComRCReturn(hrc, hrc); 76 77 78 79 hrc = update(); 80 AssertComRCReturn(hrc, hrc); 82 m = new Data(aResolvConfFileName); 83 readResolvConf(); 81 84 82 85 return S_OK; … … 84 87 85 88 86 HRESULT HostDnsServiceResolvConf:: update()89 HRESULT HostDnsServiceResolvConf::readResolvConf() 87 90 { 88 91 char buff[256]; … … 91 94 bool fWarnTooManyDnsServers = false; 92 95 struct in_addr tmp_addr; 93 int rc;94 96 size_t bytes; 97 HostDnsInformation info; 98 RTFILE resolvConfFile; 95 99 96 while ( RT_SUCCESS(rc = fileGets(m_ResolvConfFile, buff, sizeof(buff), &bytes)) 100 int rc = RTFileOpen(&resolvConfFile, m->resolvConfFilename.c_str(), 101 RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_NONE); 102 AssertRCReturn(rc, E_FAIL); 103 104 while ( RT_SUCCESS(rc = fileGets(resolvConfFile, buff, sizeof(buff), &bytes)) 97 105 && rc != VERR_EOF) 98 106 { … … 110 118 continue; 111 119 112 m_llNameServers.push_back(com::Utf8Str(buff2));120 info.servers.push_back(std::string(buff2)); 113 121 114 122 cNameserversFound++; … … 122 130 123 131 if (tok != NULL) 124 m_DomainName = com::Utf8Str(tok);132 info.domain = std::string(tok); 125 133 } 126 134 } 127 135 136 RTFileClose(resolvConfFile); 137 138 setInfo(info); 139 128 140 return S_OK; 129 130 141 }
Note:
See TracChangeset
for help on using the changeset viewer.