mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:42:57 +00:00
Made cmd unicode compatible.
svn path=/trunk/; revision=16898
This commit is contained in:
parent
dc648e2083
commit
dce178cf7c
4 changed files with 51 additions and 46 deletions
|
@ -261,22 +261,27 @@ VOID ConPrintfPaging(BOOL NewPage, LPTSTR szFormat, va_list arg_ptr, DWORD nStdH
|
||||||
LineCount = 0;
|
LineCount = 0;
|
||||||
|
|
||||||
/* rest LineCount and return if no string have been given */
|
/* rest LineCount and return if no string have been given */
|
||||||
if (szFormat == NULL)
|
if (szFormat == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
//get the size of the visual screen that can be printed too
|
//get the size of the visual screen that can be printed too
|
||||||
GetConsoleScreenBufferInfo(hConsole, &csbi);
|
if (!GetConsoleScreenBufferInfo(hConsole, &csbi))
|
||||||
|
{
|
||||||
|
// we assuming its a file handle
|
||||||
|
ConPrintf(szFormat, arg_ptr, nStdHandle);
|
||||||
|
return;
|
||||||
|
}
|
||||||
//subtract 2 to account for "press any key..." and for the blank line at the end of PagePrompt()
|
//subtract 2 to account for "press any key..." and for the blank line at the end of PagePrompt()
|
||||||
ScreenLines = (csbi.srWindow.Bottom - csbi.srWindow.Top) - 4;
|
ScreenLines = (csbi.srWindow.Bottom - csbi.srWindow.Top) - 4;
|
||||||
ScreenCol = (csbi.srWindow.Right - csbi.srWindow.Left) + 1;
|
ScreenCol = (csbi.srWindow.Right - csbi.srWindow.Left) + 1;
|
||||||
|
|
||||||
//make sure they didnt make the screen to small
|
//make sure they didnt make the screen to small
|
||||||
if(ScreenLines<4)
|
if(ScreenLines<4)
|
||||||
{
|
{
|
||||||
ConPrintf(szFormat, arg_ptr, nStdHandle);
|
ConPrintf(szFormat, arg_ptr, nStdHandle);
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = _vstprintf (szOut, szFormat, arg_ptr);
|
len = _vstprintf (szOut, szFormat, arg_ptr);
|
||||||
#ifdef _UNICODE
|
#ifdef _UNICODE
|
||||||
|
@ -286,44 +291,44 @@ VOID ConPrintfPaging(BOOL NewPage, LPTSTR szFormat, va_list arg_ptr, DWORD nStdH
|
||||||
pBuf = szOut;
|
pBuf = szOut;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for(i = 0; i < len; i++)
|
for(i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(pBuf[i] == '\n')
|
||||||
{
|
{
|
||||||
|
LineCount++;
|
||||||
if(szOut[i] == _T('\n'))
|
CharEL=0;
|
||||||
{
|
|
||||||
LineCount++;
|
|
||||||
CharEL=0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CharEL++;
|
|
||||||
if (CharEL>=ScreenCol)
|
|
||||||
{
|
|
||||||
if (i+1<len)
|
|
||||||
{
|
|
||||||
if(szOut[i+1] != _T('\n')) LineCount++;
|
|
||||||
}
|
|
||||||
CharEL=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* FIXME : write more that one char at time */
|
|
||||||
WriteFile (GetStdHandle (nStdHandle),&pBuf[i],sizeof(TCHAR),&dwWritten,NULL);
|
|
||||||
if(LineCount >= ScreenLines)
|
|
||||||
{
|
|
||||||
if(_tcsncicmp(&szOut[i],_T("\n"),2)!=0)
|
|
||||||
WriteFile (GetStdHandle (nStdHandle),_T("\n"),sizeof(TCHAR),&dwWritten,NULL);
|
|
||||||
|
|
||||||
if(PagePrompt() != PROMPT_YES)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//reset the number of lines being printed
|
|
||||||
LineCount = 0;
|
|
||||||
CharEL=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CharEL++;
|
||||||
|
if (CharEL>=ScreenCol)
|
||||||
|
{
|
||||||
|
if (i+1<len)
|
||||||
|
{
|
||||||
|
if(pBuf[i+1] != '\n') LineCount++;
|
||||||
|
}
|
||||||
|
CharEL=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME : write more that one char at time */
|
||||||
|
WriteFile (GetStdHandle (nStdHandle),&pBuf[i],sizeof(CHAR),&dwWritten,NULL);
|
||||||
|
if(LineCount >= ScreenLines)
|
||||||
|
{
|
||||||
|
if(strnicmp(&pBuf[i], "\n", 2)!=0)
|
||||||
|
WriteFile (GetStdHandle (nStdHandle),"\n",sizeof(CHAR),&dwWritten,NULL);
|
||||||
|
|
||||||
|
if(PagePrompt() != PROMPT_YES)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//reset the number of lines being printed
|
||||||
|
LineCount = 0;
|
||||||
|
CharEL=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
free(pBuf);
|
free(pBuf);
|
||||||
|
|
|
@ -321,7 +321,7 @@ static INT Overwrite (LPTSTR fn)
|
||||||
INT res;
|
INT res;
|
||||||
LoadString(CMD_ModuleHandle, STRING_COPY_HELP1, szMsg, RC_STRING_MAX_SIZE);
|
LoadString(CMD_ModuleHandle, STRING_COPY_HELP1, szMsg, RC_STRING_MAX_SIZE);
|
||||||
ConOutPrintf(szMsg,fn);
|
ConOutPrintf(szMsg,fn);
|
||||||
res = FilePromptYNA ("");
|
res = FilePromptYNA (_T(""));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -833,7 +833,7 @@ INT cmd_copy (LPTSTR cmd, LPTSTR param)
|
||||||
nFiles++;
|
nFiles++;
|
||||||
/* only print source name when more then one file */
|
/* only print source name when more then one file */
|
||||||
if(_tcschr (arg[nSrc], _T('+')) != NULL || _tcschr (arg[nSrc], _T('*')) != NULL)
|
if(_tcschr (arg[nSrc], _T('+')) != NULL || _tcschr (arg[nSrc], _T('*')) != NULL)
|
||||||
ConOutPrintf("%s\n",findBuffer.cFileName);
|
ConOutPrintf(_T("%s\n"),findBuffer.cFileName);
|
||||||
//LoadString(CMD_ModuleHandle, STRING_MOVE_ERROR1, szMsg, RC_STRING_MAX_SIZE);
|
//LoadString(CMD_ModuleHandle, STRING_MOVE_ERROR1, szMsg, RC_STRING_MAX_SIZE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -17,7 +17,7 @@ int main (int argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#ifdef _UNICODE
|
#ifdef _UNICODE
|
||||||
return _main(void);
|
return _main();
|
||||||
#else
|
#else
|
||||||
return _main(argc, argv);
|
return _main(argc, argv);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -60,7 +60,7 @@ static INT Overwrite (LPTSTR fn)
|
||||||
INT res;
|
INT res;
|
||||||
LoadString(CMD_ModuleHandle, STRING_MOVE_HELP1, szMsg, RC_STRING_MAX_SIZE);
|
LoadString(CMD_ModuleHandle, STRING_MOVE_HELP1, szMsg, RC_STRING_MAX_SIZE);
|
||||||
ConOutPrintf(szMsg,fn);
|
ConOutPrintf(szMsg,fn);
|
||||||
res = FilePromptYNA ("");
|
res = FilePromptYNA (_T(""));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue