Changeset 350 for trunk/dll/killproc.c
- Timestamp:
- Jul 26, 2006, 9:01:20 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/killproc.c
r161 r350 7 7 8 8 Copyright (c) 1993-98 M. Kimes 9 Copyright (c) 2005 Steven H. Levine9 Copyright (c) 2005, 2006 Steven H. Levine 10 10 11 11 24 May 05 SHL Rework Win_Error usage 12 14 Jul 06 SHL Use Runtime_Error 12 13 13 14 ***********************************************************************/ … … 16 17 #define INCL_DOS 17 18 #define INCL_WIN 18 19 19 #include <os2.h> 20 20 21 #include <stdlib.h> 21 22 #include <stdio.h> … … 25 26 #include <process.h> 26 27 #include <limits.h> 28 27 29 #include "procstat.h" 28 30 #include "fm3dll.h" … … 31 33 32 34 #pragma data_seg(DATA2) 35 36 static PSZ pszSrcFile = __FILE__; 37 33 38 #pragma alloc_text(KILLPROC,FillKillList,FillKillList2,GetDosPgmName,KillDlgProc) 34 39 35 36 CHAR *GetDosPgmName (PID pid,CHAR *string) { 37 40 CHAR *GetDosPgmName (PID pid,CHAR *string) 41 { 38 42 HSWITCH hs; 39 43 SWCNTRL swctl; … … 64 68 65 69 66 VOID FillKillList2 (VOID *arg) {67 70 VOID FillKillList2 (VOID *arg) 71 { 68 72 HWND hwnd = *(HWND *)arg; 69 73 CHAR s[1036]; … … 80 84 81 85 WinSendDlgItemMsg(hwnd,KILL_LISTBOX,LM_DELETEALL,MPVOID,MPVOID); 82 if(!DosAllocMem((PVOID)&pbh,USHRT_MAX + 4096, 83 PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE)) { 86 rc = DosAllocMem((PVOID)&pbh,USHRT_MAX + 4096, 87 PAG_COMMIT | OBJ_TILE | PAG_READ | PAG_WRITE); 88 if (rc) 89 Dos_Error(MB_CANCEL,rc,HWND_DESKTOP,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY)); 90 else { 84 91 rc = DosQProcStatus(pbh,USHRT_MAX); 85 if (!rc) {92 if (!rc) { 86 93 ppi = pbh->ppi; 87 94 while(ppi->ulEndIndicator != PROCESS_END_INDICATOR ) { … … 100 107 strcat(s,GetPString(IDS_UNKNOWNPROCTEXT)); 101 108 } 102 if (WinIsWindow(thab,hwnd))109 if (WinIsWindow(thab,hwnd)) { 103 110 WinSendDlgItemMsg(hwnd,KILL_LISTBOX,LM_INSERTITEM, 104 111 MPFROM2SHORT(LIT_SORTASCENDING,0), 105 112 MPFROMP(s)); 113 } 106 114 else 107 115 break; … … 109 117 } 110 118 ppi = (PPROCESSINFO)(ppi->ptiFirst + ppi->usThreadCount); 111 } 119 } // while 112 120 } 113 121 DosFreeMem(pbh); 114 122 } 115 Abort: 123 116 124 if(WinIsWindow(thab,hwnd)) 117 125 PostMsg(hwnd,UM_CONTAINER_FILLED,MPVOID,MPVOID); … … 121 129 122 130 123 VOID FillKillList (VOID *arg) {124 131 VOID FillKillList (VOID *arg) 132 { 125 133 HWND hwnd = *(HWND *)arg; 126 134 CHAR s[1036],progname[1027],*p; … … 149 157 unlinkf("%s",s); 150 158 fp = fopen(s,"w"); 151 if(fp) { 159 if(!fp) { 160 Win_Error(NULLHANDLE,HWND_DESKTOP,__FILE__,__LINE__, 161 GetPString(IDS_REDIRECTERRORTEXT)); 162 goto Abort; 163 } 164 else { 152 165 newstdout = -1; 153 if(DosDupHandle(fileno(stdout),&newstdout)) 154 DosBeep(50,100); 166 rc = DosDupHandle(fileno(stdout),&newstdout); 167 if (rc) 168 Dos_Error(MB_CANCEL,rc,hwnd,__FILE__,__LINE__,"DosDupHandle"); 155 169 oldstdout = fileno(stdout); 156 170 DosDupHandle(fileno(fp),&oldstdout); … … 173 187 } 174 188 } 175 else {176 Win_Error(NULLHANDLE,HWND_DESKTOP,__FILE__,__LINE__,177 GetPString(IDS_REDIRECTERRORTEXT));178 goto Abort;179 }180 189 fp = fopen(s,"r"); 181 190 if(fp) { … … 225 234 226 235 227 MRESULT EXPENTRY KillDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) {228 236 MRESULT EXPENTRY KillDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 237 { 229 238 SHORT sSelect; 230 239 PID pid; … … 387 396 if(SHORT1FROMMP(mp1) == DID_OK) { 388 397 error = DosKillProcess(DKP_PROCESS,pid); 389 if(error && error != ERROR_INVALID_PROCID) 398 if(error && error != ERROR_INVALID_PROCID) { 390 399 Dos_Error(MB_CANCEL, 391 400 error, … … 394 403 __LINE__, 395 404 GetPString(IDS_DOSKILLFAILEDTEXT)); 405 } 396 406 else 397 407 WinSendDlgItemMsg(hwnd, … … 409 419 410 420 case DID_CANCEL: 411 if(listdone) 421 if(!listdone) 422 Runtime_Error(pszSrcFile, __LINE__, "busy"); 423 else 412 424 WinDismissDlg(hwnd,0); 413 else414 DosBeep(100,100);415 425 break; 416 426 … … 426 436 case WM_CLOSE: 427 437 if(!listdone) { 428 DosBeep(100,100);438 Runtime_Error(pszSrcFile, __LINE__, "busy"); 429 439 return 0; 430 440 }
Note:
See TracChangeset
for help on using the changeset viewer.