1 |
douglas |
104 |
// Windows XP FAQ Poll |
2 |
|
|
// |
3 |
|
|
// Douglas Thrift |
4 |
|
|
// |
5 |
|
|
// Poller.cpp |
6 |
|
|
|
7 |
|
|
#include "Poller.h" |
8 |
|
|
|
9 |
|
|
Poller::Poller() |
10 |
|
|
{ |
11 |
douglas |
118 |
string mailbox = session->list("\"\" \"" + account.getMailbox() + "\""); |
12 |
|
|
|
13 |
|
|
if (mailbox.find(account.getMailbox()) == string::npos) |
14 |
|
|
{ |
15 |
|
|
cerr << program << ": Mailbox does not exist: " << account.getMailbox() |
16 |
|
|
<< "\n"; |
17 |
|
|
|
18 |
|
|
exit(1); |
19 |
|
|
} |
20 |
douglas |
104 |
} |
21 |
|
|
|
22 |
douglas |
118 |
void Poller::poll(bool nodelete, const string& file) |
23 |
douglas |
104 |
{ |
24 |
douglas |
118 |
this->nodelete = nodelete; |
25 |
douglas |
119 |
this->file = file; |
26 |
|
|
|
27 |
|
|
load(); |
28 |
|
|
|
29 |
|
|
// |
30 |
|
|
|
31 |
|
|
// save(); |
32 |
douglas |
104 |
} |
33 |
douglas |
119 |
|
34 |
|
|
void Poller::load() |
35 |
|
|
{ |
36 |
|
|
ifstream fin(file.c_str()); |
37 |
|
|
if (!fin.is_open()) |
38 |
|
|
{ |
39 |
|
|
ofstream fout(file.c_str()); |
40 |
|
|
|
41 |
|
|
fout << "_find_\n" |
42 |
|
|
<< "reply=0\n" |
43 |
|
|
<< "news=0\n" |
44 |
|
|
<< "sig=0\n" |
45 |
|
|
<< "search=0\n" |
46 |
|
|
<< "link=0\n" |
47 |
|
|
<< "browse=0\n" |
48 |
|
|
<< "other=0\n" |
49 |
|
|
<< "_help_\n" |
50 |
|
|
<< "solved=0\n" |
51 |
|
|
<< "note=0\n" |
52 |
|
|
<< "link=0\n" |
53 |
|
|
<< "news=0\n" |
54 |
|
|
<< "lazy=0\n" |
55 |
|
|
<< "_improve_\n" |
56 |
|
|
<< "nothing=0\n" |
57 |
|
|
<< "links=0\n" |
58 |
|
|
<< "suggest=0\n"; |
59 |
|
|
|
60 |
|
|
fout.close(); |
61 |
|
|
|
62 |
|
|
fin.open(file.c_str()); |
63 |
|
|
} |
64 |
|
|
|
65 |
|
|
do |
66 |
|
|
{ |
67 |
|
|
enum { FIND, HELP, IMPROVE } type; |
68 |
|
|
string vote; |
69 |
|
|
unsigned count; |
70 |
|
|
string text; |
71 |
|
|
|
72 |
|
|
getline(fin, vote, '='); |
73 |
|
|
if (debug) cerr << "vote = " << vote << "\n"; |
74 |
|
|
|
75 |
|
|
if (vote == "_find_") |
76 |
|
|
{ |
77 |
|
|
type = FIND; |
78 |
|
|
continue; |
79 |
|
|
} |
80 |
|
|
else if (vote == "_help_") |
81 |
|
|
{ |
82 |
|
|
type = HELP; |
83 |
|
|
continue; |
84 |
|
|
} |
85 |
|
|
else if (vote == "_improve_") |
86 |
|
|
{ |
87 |
|
|
type = IMPROVE; |
88 |
|
|
continue; |
89 |
|
|
} |
90 |
|
|
else if (vote == "approved" || vote == "approve") |
91 |
|
|
{ |
92 |
|
|
getline(fin, text); |
93 |
|
|
} |
94 |
|
|
else |
95 |
|
|
{ |
96 |
|
|
fin >> count; |
97 |
|
|
fin.get(); |
98 |
|
|
} |
99 |
|
|
|
100 |
|
|
switch (type) |
101 |
|
|
{ |
102 |
|
|
case FIND: |
103 |
|
|
if (vote == "reply") |
104 |
|
|
{ |
105 |
|
|
find.reply = count; |
106 |
|
|
} |
107 |
|
|
else if (vote == "news") |
108 |
|
|
{ |
109 |
|
|
find.news = count; |
110 |
|
|
} |
111 |
|
|
else if (vote == "sig") |
112 |
|
|
{ |
113 |
|
|
find.sig = count; |
114 |
|
|
} |
115 |
|
|
else if (vote == "search") |
116 |
|
|
{ |
117 |
|
|
find.search = count; |
118 |
|
|
} |
119 |
|
|
else if (vote == "link") |
120 |
|
|
{ |
121 |
|
|
find.link = count; |
122 |
|
|
} |
123 |
|
|
else if (vote == "browse") |
124 |
|
|
{ |
125 |
|
|
find.browse = count; |
126 |
|
|
} |
127 |
|
|
else if (vote == "other") |
128 |
|
|
{ |
129 |
|
|
find.other = count; |
130 |
|
|
} |
131 |
|
|
else if (vote == "approved") |
132 |
|
|
{ |
133 |
|
|
find.approved.push_back(text); |
134 |
|
|
} |
135 |
|
|
else if (vote == "approve") |
136 |
|
|
{ |
137 |
|
|
find.approve.push_back(text); |
138 |
|
|
} |
139 |
|
|
break; |
140 |
|
|
case HELP: |
141 |
|
|
if (vote == "solved") |
142 |
|
|
{ |
143 |
|
|
help.solved = count; |
144 |
|
|
} |
145 |
|
|
else if (vote == "note") |
146 |
|
|
{ |
147 |
|
|
help.note = count; |
148 |
|
|
} |
149 |
|
|
else if (vote == "link") |
150 |
|
|
{ |
151 |
|
|
help.link = count; |
152 |
|
|
} |
153 |
|
|
else if (vote == "news") |
154 |
|
|
{ |
155 |
|
|
help.news = count; |
156 |
|
|
} |
157 |
|
|
else if (vote == "lazy") |
158 |
|
|
{ |
159 |
|
|
help.lazy = count; |
160 |
|
|
} |
161 |
|
|
break; |
162 |
|
|
case IMPROVE: |
163 |
|
|
if (vote == "nothing") |
164 |
|
|
{ |
165 |
|
|
improve.nothing = count; |
166 |
|
|
} |
167 |
|
|
else if (vote == "links") |
168 |
|
|
{ |
169 |
|
|
improve.links = count; |
170 |
|
|
} |
171 |
|
|
else if (vote == "suggest") |
172 |
|
|
{ |
173 |
|
|
improve.suggest = count; |
174 |
|
|
} |
175 |
|
|
else if (vote == "approved") |
176 |
|
|
{ |
177 |
|
|
improve.approved.push_back(text); |
178 |
|
|
} |
179 |
|
|
else if (vote == "approve") |
180 |
|
|
{ |
181 |
|
|
improve.approve.push_back(text); |
182 |
|
|
} |
183 |
|
|
break; |
184 |
|
|
} |
185 |
|
|
} |
186 |
|
|
while (fin.good()); |
187 |
|
|
|
188 |
|
|
fin.close(); |
189 |
|
|
} |
190 |
|
|
|
191 |
|
|
void Poller::save() |
192 |
|
|
{ |
193 |
|
|
ofstream fout(file.c_str()); |
194 |
|
|
|
195 |
|
|
// |
196 |
|
|
|
197 |
|
|
fout.close(); |
198 |
|
|
} |