ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/repos/HostUpdate/Host.cpp
(Generate patch)

Comparing HostUpdate/Host.cpp (file contents):
Revision 13 by Douglas Thrift, 2003-11-07T12:17:57-08:00 vs.
Revision 22 by Douglas Thrift, 2003-11-10T23:58:38-08:00

# Line 9 | Line 9
9   Host::Host(const string& host, const string& name, const string& address, const
10          string& platform)
11   {
12 +        memset(&this->address, 0, sizeof(in_addr));
13 +
14   #ifdef _WIN32
15          if (count == 0)
16          {
# Line 22 | Line 24 | Host::Host(const string& host, const str
24          count++;
25   #endif
26  
25        this->address = new struct in_addr;
26
27          setHost(host);
28          if (name != "") setName(name, address == "");
29          if (address != "") setAddress(address, name == "");
# Line 32 | Line 32 | Host::Host(const string& host, const str
32  
33   Host::~Host()
34   {
35        delete address;
36
35   #ifdef _WIN32
36          count--;
37  
# Line 56 | Line 54 | void Host::setName(const string& name, b
54          {
55                  struct hostent* ent = gethostbyname(this->name.c_str());
56  
57 <                memcpy(address, *(ent->h_addr_list), ent->h_length);
57 >                memcpy(&address, *(ent->h_addr_list), ent->h_length);
58          }
59   }
60  
# Line 67 | Line 65 | void Host::setAddress(const string& addr
65          if (value == INADDR_NONE)
66          {
67                  cerr << "Host.setAddress(): INADDR_NONE\n";
70                exit(1);
68          }
69          else
70          {
71 <                memcpy(this->address, &value, sizeof(in_addr_t));
71 >                memcpy(&this->address, &value, sizeof(in_addr_t));
72          }
73  
74          if (lookup)
75          {
76 <                struct hostent* ent = gethostbyaddr((char*)(this->address),
76 >                struct hostent* ent = gethostbyaddr((char*)(&this->address),
77                          sizeof(in_addr), AF_INET);
78  
79                  if (ent != NULL) name = ent->h_name;
# Line 89 | Line 86 | bool Host::operator==(const Host& host)
86          {
87                  if (name == host.name)
88                  {
89 <                        if (address == host.address)
89 >                        if (string(inet_ntoa(address)) == inet_ntoa(host.address))
90                          {
91                                  return platform == host.platform;
92                          }
# Line 111 | Line 108 | bool Host::operator==(const Host& host)
108  
109   Host Host::operator++()
110   {
111 <        ifstream fin(host.c_str());
111 >        string file = string("hosts") + slash + host;
112 >
113 >        ifstream fin(file.c_str());
114  
115          if (fin.is_open())
116          {
117                  getline(fin, name);
118 <                fin.read((char*)(address), sizeof(in_addr));
118 >
119 >                string address;
120 >
121 >                getline(fin, address);
122 >
123 >                in_addr_t value = inet_addr(address.c_str());
124 >
125 >                if (value == INADDR_NONE)
126 >                {
127 >                        cerr << "Host.operator++(): INADDR_NONE\n";
128 >                }
129 >                else
130 >                {
131 >                        memcpy(&this->address, &value, sizeof(in_addr_t));
132 >                }
133 >
134                  getline(fin, platform);
135                  fin.close();
136          }
# Line 135 | Line 149 | Host Host::operator++(int)
149  
150   Host Host::operator--()
151   {
152 <        ofstream fout(host.c_str());
139 <
140 <        fout << name << '\n';
152 >        string file = string("hosts") + slash + host;
153  
154 <        fout.write((char*)(address), sizeof(in_addr));
154 >        ofstream fout(file.c_str());
155  
156 <        fout << platform;
156 >        fout << name << '\n'
157 >                << inet_ntoa(address) << '\n'
158 >                << platform << '\n';
159  
160          fout.close();
161  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines