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 9 by Douglas Thrift, 2003-11-05T22:59:04-08:00 vs.
Revision 11 by Douglas Thrift, 2003-11-06T20:37:52-08:00

# Line 1 | Line 1
1 < // Host Update
2 < //
3 < // Douglas Thrift
4 < //
5 < // $Id$
6 <
7 < #include "Host.hpp"
8 <
9 < Host::Host()
10 < {
11 <        address = new struct sockaddr;
12 < }
13 <
14 < Host::~Host()
15 < {
16 <        delete address;
17 < }
1 > // Host Update
2 > //
3 > // Douglas Thrift
4 > //
5 > // $Id$
6 >
7 > #include "Host.hpp"
8 >
9 > Host::Host(const string& host, const string& name, const string& address)
10 > {
11 > #ifdef _WIN32
12 >        if (count == 0)
13 >        {
14 >                if (WSAStartup(MAKEWORD(2, 0), &data) != 0)
15 >                {
16 >                        cerr << "Host(): WSAStartup()\n";
17 >                        exit(1);
18 >                }
19 >        }
20 >
21 >        count++;
22 > #endif
23 >
24 >        this->address = new struct in_addr;
25 >
26 >        setHost(host);
27 >        if (name != "") setName(name, address == "");
28 >        if (address != "") setAddress(address, name == "");
29 > }
30 >
31 > Host::~Host()
32 > {
33 >        delete address;
34 >
35 > #ifdef _WIN32
36 >        count--;
37 >
38 >        if (count == 0)
39 >        {
40 >                if (WSACleanup() != 0)
41 >                {
42 >                        cerr << "~Host(): WSACleanup()\n";
43 >                        exit(1);
44 >                }
45 >        }
46 > #endif
47 > }
48 >
49 > void Host::setName(const string& name, bool lookup)
50 > {
51 >        this->name = name;
52 >
53 >        if (lookup)
54 >        {
55 >                struct hostent* ent = gethostbyname(this->name.c_str());
56 >
57 >                memcpy(address, *(ent->h_addr_list), ent->h_length);
58 >        }
59 > }
60 >
61 > void Host::setAddress(const string& address, bool lookup)
62 > {
63 >        in_addr_t value = inet_addr(address.c_str());
64 >
65 >        if (value == INADDR_NONE)
66 >        {
67 >                cerr << "Host.setAddress(): INADDR_NONE\n";
68 >                exit(1);
69 >        }
70 >        else
71 >        {
72 >                memcpy(this->address, &value, sizeof(in_addr_t));
73 >        }
74 >
75 >        if (lookup)
76 >        {
77 >                cerr << "Here!\n";
78 >                struct hostent* ent = gethostbyaddr((char*)(this->address),
79 >                        sizeof(in_addr), AF_INET);
80 >
81 >                name = ent->h_name;
82 >        }
83 > }
84 >
85 > void Host::operator++()
86 > {
87 >        ifstream fin(host.c_str());
88 >
89 >        getline(fin, name);
90 >
91 >        fin.read((char*)(address), sizeof(in_addr));
92 >        fin.close();
93 > }
94 >
95 > void Host::operator--()
96 > {
97 >        ofstream fout(host.c_str());
98 >
99 >        fout << name << '\n';
100 >
101 >        fout.write((char*)(address), sizeof(in_addr));
102 >        fout.close();
103 > }
104 >
105 > #ifdef _WIN32
106 >
107 > unsigned Host::count = 0;
108 > WSADATA Host::data;
109 >
110 > #endif

Comparing HostUpdate/Host.cpp (property svn:eol-style):
Revision 9 by Douglas Thrift, 2003-11-05T22:59:04-08:00 vs.
Revision 11 by Douglas Thrift, 2003-11-06T20:37:52-08:00

# Line 0 | Line 1
1 + native

Comparing HostUpdate/Host.cpp (property svn:keywords):
Revision 9 by Douglas Thrift, 2003-11-05T22:59:04-08:00 vs.
Revision 11 by Douglas Thrift, 2003-11-06T20:37:52-08:00

# Line 0 | Line 1
1 + Id

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines