58 lines
1.4 KiB
C
58 lines
1.4 KiB
C
#include "rc.h"
|
|
|
|
int CALLBACK RC(HWND hWnd, int fStatus,
|
|
RC_MESSAGE_CALLBACK lpfnMsg, RC_PARSE_CALLBACK lpfnParse,
|
|
int argc, PCHAR *argv);
|
|
|
|
extern BOOL WINAPI Handler(DWORD fdwCtrlType);
|
|
|
|
int CALLBACK UpdateRCStatus(ULONG u, ULONG dw, PCHAR p)
|
|
{
|
|
int i = strlen(p);
|
|
PCHAR ppercent = strchr(p, '%');
|
|
|
|
if (i >= 2 && ((p[i - 1] == '\n' && p[i - 2] == '\r') ||
|
|
(p[i - 1] == '\r' && p[i - 2] == '\n')))
|
|
p[i-2] = '\0';
|
|
|
|
if (*p) {
|
|
if (ppercent) {
|
|
for (ppercent=p,i=0 ; *ppercent ; ppercent++)
|
|
if (*ppercent == '%')
|
|
i++;
|
|
ppercent = malloc(strlen(p) + 1 + i);
|
|
if (ppercent) {
|
|
PCHAR pT = ppercent;
|
|
|
|
while (*p) {
|
|
if (*p == '%')
|
|
*pT++ = '%';
|
|
*pT++ = *p++;
|
|
}
|
|
*pT++ = '\0';
|
|
printf(ppercent);
|
|
} else {
|
|
while (strchr(p, '%'))
|
|
*strchr(p, '%') = ' ';
|
|
printf(p);
|
|
}
|
|
} else {
|
|
printf(p);
|
|
}
|
|
}
|
|
printf("\n");
|
|
|
|
return (0);
|
|
}
|
|
|
|
int __cdecl main(int nArgC, char** pArgV)
|
|
{
|
|
int rc;
|
|
|
|
SetConsoleCtrlHandler(Handler, TRUE);
|
|
rc = RC(NULL, 0, UpdateRCStatus, NULL, nArgC, (PCHAR*)pArgV);
|
|
SetConsoleCtrlHandler(Handler, FALSE);
|
|
exit(rc);
|
|
return 0;
|
|
}
|