|
11 | 11 | #ifdef _DEBUG
|
12 | 12 | #define new DEBUG_NEW
|
13 | 13 | #endif
|
| 14 | +extern VOID c(VOID *); |
14 | 15 |
|
15 | 16 | // CMainFrame
|
16 | 17 |
|
@@ -75,6 +76,7 @@ CStatic *b7;
|
75 | 76 | ITaskbarList3 *bhr;
|
76 | 77 | HANDLE cl;
|
77 | 78 |
|
| 79 | + |
78 | 80 | DWORD CALLBACK E(DWORD_PTR dw, LPBYTE pb, LONG cb, LONG *pcb)
|
79 | 81 | {
|
80 | 82 | std::wstringstream *fr = (std::wstringstream *)dw;
|
@@ -164,185 +166,10 @@ int cr,f,b,terminator;
|
164 | 166 | PROCESS_INFORMATION pi;
|
165 | 167 |
|
166 | 168 |
|
167 |
| -_declspec(align(16)) struct triggerblock |
168 |
| -{ |
169 |
| - _declspec(align(16)) double q; |
170 |
| - _declspec(align(16)) long long block[3]; |
171 |
| - _declspec(align(16)) long long b; |
172 |
| - _declspec(align(16)) long long t; |
173 |
| - _declspec(align(16)) tm *c; |
174 |
| - _declspec(align(16)) tm *p; |
175 |
| - _declspec(align(16)) BYTE ptrigger; |
176 |
| - _declspec(align(16)) float outofthis; |
177 |
| - _declspec(align(16)) double x; |
178 |
| - _declspec(align(16)) long double F; |
179 |
| - _declspec(align(16)) short finishup; |
180 |
| - _declspec(align(16)) double f; |
181 |
| - _declspec(align(16)) BYTE E; |
182 |
| -}; |
183 |
| - |
184 | 169 |
|
185 | 170 |
|
186 | 171 |
|
187 |
| -VOID c(VOID *) |
188 |
| -{ |
189 | 172 |
|
190 |
| - CWin32Heap stringHeap(HEAP_NO_SERIALIZE, 0, 0); |
191 |
| - |
192 |
| - CAtlStringMgr M(&stringHeap); |
193 |
| - |
194 |
| - CStringA X7(&M),X8(&M),Burg(&M); |
195 |
| - CString p(&M); |
196 |
| - triggerblock z2={},z={}; |
197 |
| - |
198 |
| - char k[100]; |
199 |
| - strcpy(k,"t"); |
200 |
| - DWORD numberofbyteswritten; |
201 |
| - DWORD dwRead; |
202 |
| - DWORD totalbytesavailable; |
203 |
| - char output_cmd[500001]; |
204 |
| - int h,c,ferrum=0,tm=400; |
205 |
| - BYTE w=0; |
206 |
| - CStringA t(&M),bear(&M); |
207 |
| - SETTEXTEX fw={ 4,CP_THREAD_ACP }; |
208 |
| - int monte=0; |
209 |
| - char reserve; |
210 |
| - int r; |
211 |
| - |
212 |
| - bhr->SetProgressState(hz,TBPF_NORMAL); |
213 |
| - dc->SetState(PBST_NORMAL); |
214 |
| - bh->EnableWindow(0); |
215 |
| - q->EnableWindow(); |
216 |
| - |
217 |
| - cmdos->EnableWindow(); |
218 |
| - t7->SetState(PBST_ERROR); |
219 |
| - SetThreadExecutionState(ES_CONTINUOUS|ES_SYSTEM_REQUIRED|ES_AWAYMODE_REQUIRED|ES_DISPLAY_REQUIRED); |
220 |
| - z.c=(::tm *)_aligned_malloc(sizeof(::tm),16); |
221 |
| - z.p=(::tm *)_aligned_malloc(sizeof(::tm),16); |
222 |
| - ZeroMemory(z.c,sizeof(::tm)); |
223 |
| - ZeroMemory(z.p,sizeof(::tm)); |
224 |
| - z2.finishup=10; |
225 |
| - z.E=4; |
226 |
| - |
227 |
| - while(1) |
228 |
| - { |
229 |
| - PeekNamedPipe(stdoutRd, NULL, 0, NULL, &totalbytesavailable, 0); |
230 |
| - |
231 |
| - if(totalbytesavailable) |
232 |
| - { |
233 |
| - ReadFile(stdoutRd, output_cmd, min(500000,totalbytesavailable), &dwRead, NULL); |
234 |
| - h = min(500000,totalbytesavailable); |
235 |
| - output_cmd[h]='\0'; |
236 |
| - t=output_cmd; |
237 |
| - if(monte) bear.SetAt(monte-2,reserve); |
238 |
| - monte=monte+h; |
239 |
| - bear=bear + t; |
240 |
| - |
241 |
| - if(w++ > 8) { bear=bear.Right(monte=min(monte,1734)); w=0; _clearfp(); } |
242 |
| - |
243 |
| - reserve=bear[monte-2]; |
244 |
| - bear.SetAt(monte-2,'\0'); |
245 |
| - |
246 |
| - c=t.Find("Synced"); |
247 |
| - if(c != -1) |
248 |
| - { |
249 |
| - |
250 |
| - memcpy_s(&z2,40,&z,40); // q and block[] , |
251 |
| - if( z.finishup!=1) |
252 |
| - { |
253 |
| - tm=2340; |
254 |
| - z.finishup= -5 + sscanf_s(t.Left(19),"%d-%d-%d %d:%d:%d", &z.c->tm_year ,&z.c->tm_mon, &z.c->tm_mday , &z.c->tm_hour, &z.c->tm_min ,&z.c->tm_sec); |
255 |
| - z.E=min(z.E, z.E - z.finishup); //first Anchor |
256 |
| - z.c->tm_year-=1900; |
257 |
| - z.t=_mktime64(z.c); |
258 |
| - } |
259 |
| - |
260 |
| - if(z.E < 2+1) |
261 |
| - { |
262 |
| - |
263 |
| - sscanf_s(t.Left(19),"%d-%d-%d %d:%d:%d", &z.p->tm_year ,&z.p->tm_mon, &z.p->tm_mday , &z.p->tm_hour, &z.p->tm_min ,&z.p->tm_sec); |
264 |
| - z.p->tm_year-=1900; |
265 |
| - z.b=_mktime64(z.p); |
266 |
| - z.E=min(z.E, 1); //third anchor |
267 |
| - } |
268 |
| - |
269 |
| - |
270 |
| - t=t.Right(h-c-7); |
271 |
| - t.Truncate(h-c-11); |
272 |
| - r=sscanf_s(t,"%d/%d",&z.block[2],&z.block[0]); |
273 |
| - z.F=(double)z.block[2]/z.block[0]; |
274 |
| - if(!(_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE))) dc->SetPos(int(100.0f*z.F)); |
275 |
| - bhr->SetProgressValue(hz,z.block[2],z.block[0]); |
276 |
| - if((!z.ptrigger)&&r==2) { z.block[1]=z.block[2]; z.ptrigger=8; z.E--; } // second anchor |
277 |
| - if(z.E < 1+1) |
278 |
| - { |
279 |
| - z.q=double(z.block[2] - z.block[1])/(z.b - z.t); |
280 |
| - z2.ptrigger=_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE); |
281 |
| - |
282 |
| - z.outofthis=(z.block[0] - z.block[2] + (z.block[0] - z.block[2]>40000)*22*40000)/(z.q*1440*60); |
283 |
| - if(!(_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE))&&!z2.ptrigger) |
284 |
| - { |
285 |
| - if((z.E==1)&&(r==2)&&(!z2.ptrigger)) { z.x= 2.89f*z.q; z.E--; } // anchors casted |
286 |
| - z.f=z.q/z.x; |
287 |
| - if((!z.E)&&(!(_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE)))) t7->SetPos(140.0*z.f); //after some runs with zero-divided args(or smth else like this) it refuses to deal any further |
288 |
| - z2.finishup=min(z2.finishup,(int)ceil(z.outofthis*10))*(1 - b); |
289 |
| - if(z2.finishup >2) p.Format(L"days to go %2.1f",z.outofthis); |
290 |
| - if(z2.finishup==2) p.Format(L"days to go %2.1f / %2d",z.outofthis,(int)ceil(24*z.outofthis)); |
291 |
| - if(z2.finishup==1) p.Format(L"days to go %2.1f / %2d / %03d",z.outofthis,(int)ceil(24*z.outofthis),(int)ceil(1440*z.outofthis)); |
292 |
| - b7->SetWindowTextW((LPCWSTR)p); |
293 |
| - |
294 |
| - } |
295 |
| - |
296 |
| - } |
297 |
| - } |
298 |
| - Sleep(3); |
299 |
| - SendMessage(hc,EM_SETTEXTEX,(WPARAM)&fw,(LPARAM)(LPCSTR)bear); |
300 |
| - PostMessage(hc, WM_VSCROLL, SB_BOTTOM, 0); |
301 |
| - if(b&&((output_cmd[h-3]=='d')||(output_cmd[h-3]=='.'))) { WriteFile(stdinWr, k, 1, &numberofbyteswritten, NULL); ferrum=1; tm=700;} |
302 |
| -// you'll never know. https://monero.stackexchange.com/questions/6161/exit-command-pushed-to-pipelined-monerod |
303 |
| - |
304 |
| - if(ferrum&&(output_cmd[h-3]=='y')) |
305 |
| - { |
306 |
| - _clearfp(); |
307 |
| - X7.Format(" %.2f block/m",z2.q*60.0f); |
308 |
| - z.outofthis=(z2.block[0] - z2.block[2] + (z.block[0] - z.block[2]>40000)*22*40000)/(z2.q*1440*60); |
309 |
| - if(!(_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE))) X8.Format("\\qr\\ri800\\fs30 days to go %.1f \\par\\ri0\\fs33\n",z.outofthis); |
310 |
| - |
311 |
| - dc->SetState(PBST_PAUSED); |
312 |
| - bhr->SetProgressState(hz,TBPF_PAUSED); |
313 |
| - q->EnableWindow(0); |
314 |
| - WaitForSingleObject(pi.hProcess,INFINITE); |
315 |
| - b=0; |
316 |
| - bh->EnableWindow(); |
317 |
| - Burg.Format(">%05d",sizeof(z2)); |
318 |
| - if(terminator) PostMessage(hz,WM_CLOSE,NULL,NULL); // if not to know difference vs sendmessage() it looks like the end |
319 |
| - else |
320 |
| - { |
321 |
| - bear.SetAt(monte-2,reserve); |
322 |
| - bear.Replace("\n","\\line\n"); //(semi)human-readable thing - latex2rtf.sourceforge.net/RTF-Spec-1.0.txt |
323 |
| - bear="\ |
324 |
| -{\\rtf1\\ansi\\deff0{\\colortbl;\\red0\\green0\\blue0;\\red60\\green2\\blue105;\\red232\\green34\\blue5;} " |
325 |
| -+ |
326 |
| -bear |
327 |
| -+ X8 + Burg+ |
328 |
| -+ "\ |
329 |
| -\\trowd \\trrh740 \ |
330 |
| -\\clvertalc\\qc\\clbrdrt\\brdrw100\\brdrcf2\\cellx3400\n\ |
331 |
| -\\intbl speed" + X7 + "\\cell\n\ |
332 |
| -\\row\n}"; |
333 |
| - SendMessage(hc,EM_SETTEXTEX,(WPARAM)&fw,(LPARAM)(LPCSTR)bear); |
334 |
| - PostMessage(hc, WM_VSCROLL, SB_BOTTOM, 0); |
335 |
| - } |
336 |
| - bren=5; |
337 |
| - _aligned_free(z.c); |
338 |
| - _aligned_free(z.p); |
339 |
| - break; //'Both break and continue have no effect on an if-statement. A common misconception is |
340 |
| - //that break can be used to jump out of an if compound statement.' An Introduction to the C Programming Language and Software Design. Tim Bailey 2005 |
341 |
| - } |
342 |
| - } |
343 |
| - Sleep(tm); |
344 |
| - } |
345 |
| -} |
346 | 173 |
|
347 | 174 | CWinThread *rew;
|
348 | 175 | int trigger;
|
|
0 commit comments