diff --git a/reactos/base/applications/cmdutils/dbgprint/dbgprint.c b/reactos/base/applications/cmdutils/dbgprint/dbgprint.c index 0b967528644..586d9c7bc54 100644 --- a/reactos/base/applications/cmdutils/dbgprint/dbgprint.c +++ b/reactos/base/applications/cmdutils/dbgprint/dbgprint.c @@ -5,11 +5,13 @@ * FILE: tools/dbgprint/dbgprint.c * PURPOSE: outputs a text via DbgPrint API * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@student.tugraz.at) + * Christoph von Wittich (Christoph_vW@ReactOS.org) */ #include #include #include +#include int _tmain(int argc, TCHAR ** argv) { @@ -29,30 +31,48 @@ int _tmain(int argc, TCHAR ** argv) return -1; } - buf = HeapAlloc(GetProcessHeap(), 0, (bufsize+1) * sizeof(TCHAR)); - if (!buf) + if (_tcsstr(argv[1], "--process") && (argc == 3)) { - return -1; - } + char psBuffer[128]; + FILE *pPipe; - offset = 0; - for(i = 1; i < argc; i++) - { - int length = _tcslen(argv[i]); - _tcsncpy(&buf[offset], argv[i], length); - offset += length; - if (i + 1 < argc) + pPipe = _tpopen(argv[2], "r"); + if (pPipe != NULL) { - buf[offset] = _T(' '); + while(fgets(psBuffer, 128, pPipe)) + { + OutputDebugStringA(psBuffer); + } + _pclose(pPipe); } - else - { - buf[offset] = _T('\n'); - buf[offset+1] = _T('\0'); - } - offset++; } - OutputDebugString(buf); - HeapFree(GetProcessHeap(), 0, buf); + else + { + buf = HeapAlloc(GetProcessHeap(), 0, (bufsize+1) * sizeof(TCHAR)); + if (!buf) + { + return -1; + } + + offset = 0; + for(i = 1; i < argc; i++) + { + int length = _tcslen(argv[i]); + _tcsncpy(&buf[offset], argv[i], length); + offset += length; + if (i + 1 < argc) + { + buf[offset] = _T(' '); + } + else + { + buf[offset] = _T('\n'); + buf[offset+1] = _T('\0'); + } + offset++; + } + OutputDebugString(buf); + HeapFree(GetProcessHeap(), 0, buf); + } return 0; }