Skip to content

Commit e500b8e

Browse files
committed
no message
1 parent 4cfc5a5 commit e500b8e

File tree

7 files changed

+234
-209
lines changed

7 files changed

+234
-209
lines changed

tool3/MainFrm.cpp

+2-175
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#ifdef _DEBUG
1212
#define new DEBUG_NEW
1313
#endif
14+
extern VOID c(VOID *);
1415

1516
// CMainFrame
1617

@@ -75,6 +76,7 @@ CStatic *b7;
7576
ITaskbarList3 *bhr;
7677
HANDLE cl;
7778

79+
7880
DWORD CALLBACK E(DWORD_PTR dw, LPBYTE pb, LONG cb, LONG *pcb)
7981
{
8082
std::wstringstream *fr = (std::wstringstream *)dw;
@@ -164,185 +166,10 @@ int cr,f,b,terminator;
164166
PROCESS_INFORMATION pi;
165167

166168

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-
184169

185170

186171

187-
VOID c(VOID *)
188-
{
189172

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-
}
346173

347174
CWinThread *rew;
348175
int trigger;

tool3/mainthread.cpp

+175
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
#include "stdafx.h"
2+
#include "tool3.h"
3+
extern HWND hc,hz;
4+
extern CProgressCtrl *dc;
5+
extern CProgressCtrl *t7;
6+
extern CButton *bh;
7+
extern CButton *q;
8+
extern CButton *finA;
9+
extern CButton *cmdos;
10+
extern CStatic *b7;
11+
extern ITaskbarList3 *bhr;
12+
extern HANDLE cl;
13+
extern HANDLE stdinRd, stdinWr, stdoutRd, stdoutWr;
14+
extern int bren;
15+
extern int cr,f,b,terminator;
16+
extern PROCESS_INFORMATION pi;
17+
VOID c(VOID *)
18+
{
19+
20+
CWin32Heap stringHeap(HEAP_NO_SERIALIZE, 0, 0);
21+
22+
CAtlStringMgr M(&stringHeap);
23+
24+
CStringA X7(&M),X8(&M),Burg(&M);
25+
CString p(&M);
26+
triggerblock z2={},z={};
27+
28+
char k[100];
29+
strcpy(k,"t");
30+
DWORD numberofbyteswritten;
31+
DWORD dwRead;
32+
DWORD totalbytesavailable;
33+
char output_cmd[500001];
34+
int h,c,ferrum=0,tm=400;
35+
BYTE w=0;
36+
CStringA t(&M),bear(&M);
37+
SETTEXTEX fw={ 4,CP_THREAD_ACP };
38+
int monte=0;
39+
char reserve;
40+
int r;
41+
42+
bhr->SetProgressState(hz,TBPF_NORMAL);
43+
dc->SetState(PBST_NORMAL);
44+
bh->EnableWindow(0);
45+
q->EnableWindow();
46+
47+
cmdos->EnableWindow();
48+
t7->SetState(PBST_ERROR);
49+
SetThreadExecutionState(ES_CONTINUOUS|ES_SYSTEM_REQUIRED|ES_AWAYMODE_REQUIRED|ES_DISPLAY_REQUIRED);
50+
z.c=(::tm *)_aligned_malloc(sizeof(::tm),16);
51+
z.p=(::tm *)_aligned_malloc(sizeof(::tm),16);
52+
ZeroMemory(z.c,sizeof(::tm));
53+
ZeroMemory(z.p,sizeof(::tm));
54+
z2.finishup=10;
55+
z.E=4;
56+
57+
while(1)
58+
{
59+
PeekNamedPipe(stdoutRd, NULL, 0, NULL, &totalbytesavailable, 0);
60+
61+
if(totalbytesavailable)
62+
{
63+
ReadFile(stdoutRd, output_cmd, min(500000,totalbytesavailable), &dwRead, NULL);
64+
h = min(500000,totalbytesavailable);
65+
output_cmd[h]='\0';
66+
t=output_cmd;
67+
if(monte) bear.SetAt(monte-2,reserve);
68+
monte=monte+h;
69+
bear=bear + t;
70+
71+
if(w++ > 8) { bear=bear.Right(monte=min(monte,1734)); w=0; _clearfp(); }
72+
73+
reserve=bear[monte-2];
74+
bear.SetAt(monte-2,'\0');
75+
76+
c=t.Find("Synced");
77+
if(c != -1)
78+
{
79+
80+
memcpy_s(&z2,40,&z,40); // q and block[] ,
81+
if( z.finishup!=1)
82+
{
83+
tm=2340;
84+
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);
85+
z.E=min(z.E, z.E - z.finishup); //first Anchor
86+
z.c->tm_year-=1900;
87+
z.t=_mktime64(z.c);
88+
}
89+
90+
if(z.E < 2+1)
91+
{
92+
93+
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);
94+
z.p->tm_year-=1900;
95+
z.b=_mktime64(z.p);
96+
z.E=min(z.E, 1); //third anchor
97+
}
98+
99+
100+
t=t.Right(h-c-7);
101+
t.Truncate(h-c-11);
102+
r=sscanf_s(t,"%d/%d",&z.block[2],&z.block[0]);
103+
z.F=(double)z.block[2]/z.block[0];
104+
if(!(_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE))) dc->SetPos(int(100.0f*z.F));
105+
bhr->SetProgressValue(hz,z.block[2],z.block[0]);
106+
if((!z.ptrigger)&&r==2) { z.block[1]=z.block[2]; z.ptrigger=8; z.E--; } // second anchor
107+
if(z.E < 1+1)
108+
{
109+
z.q=double(z.block[2] - z.block[1])/(z.b - z.t);
110+
z2.ptrigger=_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE);
111+
112+
z.outofthis=(z.block[0] - z.block[2] + (z.block[0] - z.block[2]>40000)*22*40000)/(z.q*1440*60);
113+
if(!(_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE))&&!z2.ptrigger)
114+
{
115+
if((z.E==1)&&(r==2)&&(!z2.ptrigger)) { z.x= 2.89f*z.q; z.E--; } // anchors casted
116+
z.f=z.q/z.x;
117+
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
118+
z2.finishup=min(z2.finishup,(int)ceil(z.outofthis*10))*(1 - b);
119+
if(z2.finishup >2) p.Format(L"days to go %2.1f",z.outofthis);
120+
if(z2.finishup==2) p.Format(L"days to go %2.1f / %2d",z.outofthis,(int)ceil(24*z.outofthis));
121+
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));
122+
b7->SetWindowTextW((LPCWSTR)p);
123+
124+
}
125+
126+
}
127+
}
128+
Sleep(3);
129+
SendMessage(hc,EM_SETTEXTEX,(WPARAM)&fw,(LPARAM)(LPCSTR)bear);
130+
PostMessage(hc, WM_VSCROLL, SB_BOTTOM, 0);
131+
if(b&&((output_cmd[h-3]=='d')||(output_cmd[h-3]=='.'))) { WriteFile(stdinWr, k, 1, &numberofbyteswritten, NULL); ferrum=1; tm=700;}
132+
// you'll never know. https://monero.stackexchange.com/questions/6161/exit-command-pushed-to-pipelined-monerod
133+
134+
if(ferrum&&(output_cmd[h-3]=='y'))
135+
{
136+
_clearfp();
137+
X7.Format(" %.2f block/m",z2.q*60.0f);
138+
z.outofthis=(z2.block[0] - z2.block[2] + (z.block[0] - z.block[2]>40000)*22*40000)/(z2.q*1440*60);
139+
if(!(_statusfp()&(_EM_INVALID|_EM_ZERODIVIDE))) X8.Format("\\qr\\ri800\\fs30 days to go %.1f \\par\\ri0\\fs33\n",z.outofthis);
140+
141+
dc->SetState(PBST_PAUSED);
142+
bhr->SetProgressState(hz,TBPF_PAUSED);
143+
q->EnableWindow(0);
144+
WaitForSingleObject(pi.hProcess,INFINITE);
145+
b=0;
146+
bh->EnableWindow();
147+
Burg.Format(">%05d",sizeof(z2));
148+
if(terminator) PostMessage(hz,WM_CLOSE,NULL,NULL); // if not to know difference vs sendmessage() it looks like the end
149+
else
150+
{
151+
bear.SetAt(monte-2,reserve);
152+
bear.Replace("\n","\\line\n"); //(semi)human-readable thing - latex2rtf.sourceforge.net/RTF-Spec-1.0.txt
153+
bear="\
154+
{\\rtf1\\ansi\\deff0{\\colortbl;\\red0\\green0\\blue0;\\red60\\green2\\blue105;\\red232\\green34\\blue5;} "
155+
+
156+
bear
157+
+ X8 + Burg+
158+
+ "\
159+
\\trowd \\trrh740 \
160+
\\clvertalc\\qc\\clbrdrt\\brdrw100\\brdrcf2\\cellx3400\n\
161+
\\intbl speed" + X7 + "\\cell\n\
162+
\\row\n}";
163+
SendMessage(hc,EM_SETTEXTEX,(WPARAM)&fw,(LPARAM)(LPCSTR)bear);
164+
PostMessage(hc, WM_VSCROLL, SB_BOTTOM, 0);
165+
}
166+
bren=5;
167+
_aligned_free(z.c);
168+
_aligned_free(z.p);
169+
break; //'Both break and continue have no effect on an if-statement. A common misconception is
170+
//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
171+
}
172+
}
173+
Sleep(tm);
174+
}
175+
}

0 commit comments

Comments
 (0)