diff --git a/rosapps/cmdutils/makefile b/rosapps/cmdutils/makefile index 59b0251fea9..bbf679fa5bb 100644 --- a/rosapps/cmdutils/makefile +++ b/rosapps/cmdutils/makefile @@ -2,14 +2,16 @@ # ReactOS cmdutils makefile # -TARGET=tee.exe +TARGET=more.exe tee.exe all: $(TARGET) -OBJECTS = tee.o CLEAN_FILES = *.o *.exe *.sym *.coff +more.exe: more.o + $(CC) more.o -lkernel32 -lcrtdll -o more.exe + $(NM) --numeric-sort more.exe > more.sym tee.exe: tee.o $(CC) tee.o -lkernel32 -lcrtdll -o tee.exe @@ -34,13 +36,13 @@ else endif -dist: $(TARGET:%=../$(DIST_DIR)/%) +dist: $(TARGET:%=../$(DIST_DIR)/apps/%) -$(TARGET:%=../$(DIST_DIR)/%): ../$(DIST_DIR)/%: % +$(TARGET:%=../$(DIST_DIR)/apps/%): ../$(DIST_DIR)/apps/%: % ifeq ($(DOSCLI),yes) - $(CP) $* ..\$(DIST_DIR)\$* + $(CP) $* ..\$(DIST_DIR)\apps\$* else - $(CP) $* ../$(DIST_DIR)/$* + $(CP) $* ../$(DIST_DIR)/apps/$* endif include ../rules.mak diff --git a/rosapps/cmdutils/more.c b/rosapps/cmdutils/more.c new file mode 100644 index 00000000000..b401213ec60 --- /dev/null +++ b/rosapps/cmdutils/more.c @@ -0,0 +1,131 @@ +/* + * MORE.C - external command. + * + * clone from 4nt more command + * + * 26 Sep 1999 - Dr.F + * started + */ + +#include +#include +#include + + +DWORD len; +LPTSTR msg = "--- continue ---"; + + +/*handle for file and console*/ +HANDLE hStdIn; +HANDLE hStdOut; +HANDLE hStdErr; +HANDLE hKeyboard; + + +static VOID +GetScreenSize (PSHORT maxx, PSHORT maxy) +{ + CONSOLE_SCREEN_BUFFER_INFO csbi; + + GetConsoleScreenBufferInfo (hStdOut, &csbi); + + if (maxx) + *maxx = csbi.dwSize.X; + if (maxy) + *maxy = csbi.dwSize.Y; +} + +static VOID +ConInKey (VOID) +{ + INPUT_RECORD ir; + DWORD dwRead; + + do + { + ReadConsoleInput (hKeyboard, &ir, 1, &dwRead); + if ((ir.EventType == KEY_EVENT) && + (ir.Event.KeyEvent.bKeyDown == TRUE)) + return; + } + while (TRUE); +} + + +static VOID +WaitForKey (VOID) +{ + DWORD dwWritten; + + WriteFile (hStdErr,msg , len, &dwWritten, NULL); + + ConInKey(); + + WriteFile (hStdErr, _T("\n"), 1, &dwWritten, NULL); + +// FlushConsoleInputBuffer (hConsoleIn); +} + + +//INT CommandMore (LPTSTR cmd, LPTSTR param) +int main (int argc, char **argv) +{ + SHORT maxx,maxy; + SHORT line_count=0,ch_count=0; + INT i; + + /*reading/writing buffer*/ + TCHAR *buff; + + /*bytes written by WriteFile and ReadFile*/ + DWORD dwRead,dwWritten; + + /*ReadFile() return value*/ + BOOL bRet; + + len = _tcslen (msg); + hStdIn = GetStdHandle(STD_INPUT_HANDLE); + hKeyboard = CreateFile ("CONIN$", GENERIC_READ, + 0,NULL,OPEN_ALWAYS,0,0); + hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); + hStdErr = GetStdHandle(STD_ERROR_HANDLE); + + GetScreenSize(&maxx,&maxy); + + buff=malloc(maxx); + + FlushConsoleInputBuffer (hKeyboard); + + do + { + bRet = ReadFile(hStdIn,buff,1,&dwRead,NULL); + + if (dwRead>0 && bRet) + WriteFile(hStdOut,buff,dwRead,&dwWritten,NULL); + + for(i=0;i0 && bRet); + + free (buff); + CloseHandle (hKeyboard); + + return 0; +} + +/* EOF */ \ No newline at end of file