13 #ifndef ROOT_TWinNTSystem
14 #define ROOT_TWinNTSystem
27 #if !defined(__CINT__)
32 struct WIN32_FIND_DATA;
33 typedef void* HIMAGELIST;
40 #define MAX_SID_SIZE 1024
42 #define MAX_NAME_STRING 1024
67 class TWinNTSystem :
public TSystem {
70 typedef Bool_t (*ThreadMsgFunc_t)(MSG*);
73 struct group *fGroups;
74 struct passwd *fPasswords;
78 Bool_t fGroupsInitDone;
82 void *fGUIThreadHandle;
85 WIN32_FIND_DATA fFindFileData;
87 Bool_t DispatchTimers(Bool_t mode);
88 Bool_t CheckDescriptors();
89 Bool_t CheckSignals(Bool_t sync);
90 Bool_t CountMembers(
const char *lpszGroupName);
91 const char *GetLinkedLibraries();
93 Long_t LookupSID (
const char *lpszAccountName,
int what,
int &groupIdx,
int &memberIdx);
94 Bool_t CollectMembers(
const char *lpszGroupName,
int &groupIdx,
int &memberIdx);
95 Bool_t CollectGroups();
96 Bool_t InitUsersGroups();
97 void DoBeep(Int_t freq=-1, Int_t duration=-1)
const;
99 static void ThreadStub(
void *Parameter) {((TWinNTSystem *)Parameter)->TimerThread();}
101 void FillWithHomeDirectory(
const char *userName,
char *mydir)
const;
102 char *GetWorkingDirectory(
char driveletter)
const;
106 static int WinNTUnixConnect(
int port);
107 static int WinNTUnixConnect(
const char *path);
108 static int WinNTUdpConnect(
const char *hostname,
int port);
112 virtual ~TWinNTSystem();
116 Bool_t HandleConsoleEvent();
120 const char *BaseName(
const char *name);
121 void SetProgname(
const char *name);
122 const char *GetError();
123 const char *HostName();
124 void *GetGUIThreadHandle()
const {
return fGUIThreadHandle;}
125 ULong_t GetGUIThreadId()
const {
return fGUIThreadId;}
126 void SetGUIThreadMsgHandler(ThreadMsgFunc_t func);
127 void NotifyApplicationCreated();
131 Bool_t ProcessEvents();
132 void DispatchOneEvent(Bool_t pendingOnly = kFALSE);
134 Int_t Select(TList *active, Long_t timeout);
135 Int_t Select(TFileHandler *fh, Long_t timeout);
138 void DispatchSignals(ESignals sig);
139 void AddSignalHandler(TSignalHandler *sh);
140 TSignalHandler *RemoveSignalHandler(TSignalHandler *sh);
141 void ResetSignal(ESignals sig, Bool_t reset = kTRUE);
143 void IgnoreSignal(ESignals sig, Bool_t ignore = kTRUE);
144 void AddFileHandler(TFileHandler *fh);
145 TFileHandler *RemoveFileHandler(TFileHandler *fh);
150 Int_t SetFPEMask(Int_t mask = kDefaultMask);
153 int Exec(
const char *shellcmd);
154 FILE *OpenPipe(
const char *shellcmd,
const char *mode);
155 int ClosePipe(FILE *pipe);
156 void Exit(
int code, Bool_t mode = kTRUE);
157 void Abort(
int code = 0);
161 const char *Getenv(
const char *name);
162 void Setenv(
const char *name,
const char *value);
165 int mkdir(
const char *name, Bool_t recursive = kFALSE);
166 int MakeDirectory(
const char *name);
167 Bool_t ChangeDirectory(
const char *path);
168 const char *GetDirEntry(
void *dirp);
169 const char *DirName(
const char *pathname);
170 void FreeDirectory(
void *dirp);
171 void *OpenDirectory(
const char *name);
172 const char *WorkingDirectory(
char driveletter);
173 const char *WorkingDirectory();
174 std::string GetWorkingDirectory()
const;
175 const char *HomeDirectory(
const char *userName=0);
176 std::string GetHomeDirectory(
const char *userName=0)
const;
177 const char *TempDirectory()
const;
178 FILE *TempFileName(TString &base,
const char *dir = 0);
181 Int_t GetUid(
const char *user = 0);
182 Int_t GetGid(
const char *group = 0);
183 Int_t GetEffectiveUid();
184 Int_t GetEffectiveGid();
185 UserGroup_t *GetUserInfo(Int_t uid);
186 UserGroup_t *GetUserInfo(
const char *user = 0);
187 UserGroup_t *GetGroupInfo(Int_t gid);
188 UserGroup_t *GetGroupInfo(
const char *group = 0);
191 const char DriveName(
const char *pathname=
"/");
192 const char *PrependPathName(
const char *dir, TString& name);
193 Bool_t ExpandPathName(TString &patbuf);
194 char *ExpandPathName(
const char *path);
195 Bool_t AccessPathName(
const char *path, EAccessMode mode = kFileExists);
196 Bool_t IsPathLocal(
const char *path);
197 Bool_t IsAbsoluteFileName(
const char *dir);
198 int CopyFile(
const char *from,
const char *to, Bool_t overwrite = kFALSE);
199 int Rename(
const char *from,
const char *to);
200 int Link(
const char *from,
const char *to);
201 int Symlink(
const char *from,
const char *to);
202 int Unlink(
const char *name);
203 int SetNonBlock(
int fd);
204 int GetPathInfo(
const char *path, FileStat_t &buf);
205 int GetFsInfo(
const char *path, Long_t *
id, Long_t *bsize,
206 Long_t *blocks, Long_t *bfree);
207 int Chmod(
const char *file, UInt_t mode);
208 int Umask(Int_t mask);
209 int Utime(
const char *file, Long_t modtime, Long_t actime);
210 const char *UnixPathName(
const char *unixpathname);
211 const char *FindFile(
const char *search, TString& file, EAccessMode mode = kFileExists);
212 TList *GetVolumes(Option_t *opt =
"")
const;
215 Int_t RedirectOutput(
const char *name,
const char *mode =
"a", RedirectHandle_t *h = 0);
218 void AddDynamicPath(
const char *dir);
219 const char *GetDynamicPath();
220 void SetDynamicPath(
const char *path);
221 const char *FindDynamicLibrary(TString &lib, Bool_t quiet = kFALSE);
222 int Load(
const char *module,
const char *entry =
"", Bool_t system = kFALSE);
223 const char *GetLibraries(
const char *regexp =
"",
224 const char *option =
"",
225 Bool_t isRegexp = kTRUE);
229 void AddTimer(TTimer *ti);
230 TTimer *RemoveTimer(TTimer *ti);
231 void Sleep(UInt_t milliSec);
232 Double_t GetRealTime();
233 Double_t GetCPUTime();
236 int ConnectService(
const char *servername,
int port,
int tcpwindowsize,
const char *protocol =
"tcp");
237 TInetAddress GetHostByName(
const char *server);
238 TInetAddress GetPeerName(
int sock);
239 TInetAddress GetSockName(
int sock);
240 int GetServiceByName(
const char *service);
241 char *GetServiceByPort(
int port);
242 int OpenConnection(
const char *server,
int port,
int tcpwindowsize = -1,
const char *protocol =
"tcp");
243 int AnnounceTcpService(
int port, Bool_t reuse,
int backlog,
int tcpwindowsize = -1);
244 int AnnounceUdpService(
int port,
int backlog);
245 int AnnounceUnixService(
int port,
int backlog);
246 int AnnounceUnixService(
const char *sockpath,
int backlog);
247 int AcceptConnection(
int sock);
248 void CloseConnection(
int sock, Bool_t force = kFALSE);
249 int RecvRaw(
int sock,
void *buffer,
int length,
int flag);
250 int SendRaw(
int sock,
const void *buffer,
int length,
int flag);
251 int RecvBuf(
int sock,
void *buffer,
int length);
252 int SendBuf(
int sock,
const void *buffer,
int length);
253 int SetSockOpt(
int sock,
int opt,
int val);
254 int GetSockOpt(
int sock,
int opt,
int *val);
257 Int_t GetSysInfo(SysInfo_t *info)
const;
258 Int_t GetCpuInfo(CpuInfo_t *info, Int_t sampleTime = 1000)
const;
259 Int_t GetMemInfo(MemInfo_t *info)
const;
260 Int_t GetProcInfo(ProcInfo_t *info)
const;
262 ClassDef(TWinNTSystem, 0)
265 R__EXTERN ULong_t gConsoleWindow;