mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 10:12:58 +00:00
Temporary fork of candidate base of potententially very useful development tool for ros.
svn path=/trunk/; revision=3955
This commit is contained in:
parent
b8573aace5
commit
d73cc06799
25 changed files with 11747 additions and 0 deletions
146
rosapps/devutils/vmingw/process.h
Normal file
146
rosapps/devutils/vmingw/process.h
Normal file
|
@ -0,0 +1,146 @@
|
|||
/********************************************************************
|
||||
* Module: process.h. This is part of Visual-MinGW.
|
||||
*
|
||||
* License: Visual-MinGW is covered by GNU General Public License,
|
||||
* Copyright (C) 2001 Manu B.
|
||||
* See license.htm for more details.
|
||||
*
|
||||
********************************************************************/
|
||||
#ifndef PROCESS_H
|
||||
#define PROCESS_H
|
||||
#include "winui.h"
|
||||
#include "CList.h"
|
||||
|
||||
|
||||
class CCommandDlg : public CDlgBase
|
||||
{
|
||||
public:
|
||||
CCommandDlg();
|
||||
~CCommandDlg();
|
||||
|
||||
HWND Create(void);
|
||||
LRESULT CALLBACK CDlgProc(UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
BOOL OnInitDialog(HWND hwndFocus, LPARAM lInitParam);
|
||||
BOOL OnCommand(WORD wNotifyCode, WORD wID, HWND hwndCtl);
|
||||
char cmdLine[1024];
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
HWND hCmdLine;
|
||||
};
|
||||
|
||||
/********************************************************
|
||||
creationFlag truth table
|
||||
-----------------------------------
|
||||
8 4 2 1
|
||||
------------------
|
||||
NO_PIPE 0 0 0 0
|
||||
IN_PIPE 0 0 0 1
|
||||
OUT_PIPE 0 0 1 0
|
||||
ERR_PIPE 0 1 0 0
|
||||
OUTERR_PIPE 1 0 1 0
|
||||
|
||||
*********************************************************/
|
||||
#define NO_PIPE 0x0000
|
||||
#define IN_PIPE 0x0001
|
||||
#define OUT_PIPE 0x0002
|
||||
#define ERR_PIPE 0x0004
|
||||
#define OUTERR_PIPE 0x000A
|
||||
|
||||
#define STDOUT_NONE 0
|
||||
#define STDOUT_FILE_APPEND 1
|
||||
#define STDOUT_USER 2
|
||||
|
||||
class CTask : public CNode
|
||||
{
|
||||
public:
|
||||
CTask();
|
||||
~CTask();
|
||||
|
||||
char cmdLine[MAX_PATH];
|
||||
char szFileName[MAX_PATH];
|
||||
WORD creationFlag;
|
||||
WORD outputFlag;
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
class CStack : public CList
|
||||
{
|
||||
public:
|
||||
CStack();
|
||||
~CStack();
|
||||
|
||||
int Push(CTask * newTask);
|
||||
CTask * Pop(void);
|
||||
void Flush(void);
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
CTask * retBuf;
|
||||
void DetachCurrent(void);
|
||||
};
|
||||
|
||||
class CPipes
|
||||
{
|
||||
public:
|
||||
CPipes();
|
||||
~CPipes();
|
||||
|
||||
HANDLE hIn[2];
|
||||
HANDLE hOut[2];
|
||||
HANDLE hErr[2];
|
||||
|
||||
bool Create(WORD creationFlag, bool winNT);
|
||||
bool CloseChildSide(void);
|
||||
bool CloseParentSide(void);
|
||||
protected:
|
||||
|
||||
private:
|
||||
bool Close(int side);
|
||||
};
|
||||
|
||||
class CProcess : public CStack
|
||||
{
|
||||
public:
|
||||
CProcess();
|
||||
~CProcess();
|
||||
|
||||
bool CommandLine(char * cmdLine);
|
||||
bool isRunning(void);
|
||||
CTask * AddTask(char * cmdLine, WORD creationFlag, WORD outputFlag/* = STDOUT_NONE*/);
|
||||
bool CmdCat(char * cmdLine);
|
||||
void Run(void);
|
||||
void Run_Thread_Internal(void);
|
||||
|
||||
CCommandDlg CommandDlg;
|
||||
protected:
|
||||
|
||||
private:
|
||||
PROCESS_INFORMATION pi;
|
||||
bool Running;
|
||||
DWORD exitCode;
|
||||
CTask * currTask;
|
||||
CPipes Pipes;
|
||||
char * chr;
|
||||
char inBuf[1024];
|
||||
char outBuf[1024];
|
||||
char errBuf[1024];
|
||||
|
||||
bool RunProcess(CTask * task);
|
||||
|
||||
void WriteStdIn(HANDLE hPipe, WORD creationFlag);
|
||||
void ReadStdErr(HANDLE hPipe, WORD creationFlag);
|
||||
long ReadStdOut(CTask * task, HANDLE hPipe);
|
||||
int ReadOneChar(HANDLE hPipe, char * chrin);
|
||||
|
||||
bool WriteFileAppend(char * fileName, char * line, int len=-1);
|
||||
bool OutputLine(WORD outputFlag, char * line, int len=-1);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue