source: trunk/dll/instant.c@ 342

Last change on this file since 342 was 342, checked in by root, 19 years ago

Use Runtime_Error

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.9 KB
RevLine 
[123]1
2/***********************************************************************
3
4 $Id: instant.c 342 2006-07-26 02:00:11Z root $
5
[342]6 Instant command
7
[123]8 Copyright (c) 1993-98 M. Kimes
[342]9 Copyright (c) 2004, 2006 Steven H.Levine
[123]10
[342]11 01 Aug 04 SHL Rework lstrip/rstrip usage
12 14 Jul 06 SHL Use Runtime_Error
[123]13
14***********************************************************************/
15
[2]16#define INCL_DOS
17#define INCL_WIN
[342]18#include <os2.h>
[2]19
20#include <stdlib.h>
21#include <stdio.h>
22#include <string.h>
23#include <ctype.h>
[342]24
[2]25#include "fm3dll.h"
26#include "fm3dlg.h"
27#include "fm3str.h"
28#include "mle.h"
29
30#pragma data_seg(DATA1)
[342]31
32static PSZ pszSrcFile = __FILE__;
33
[2]34#pragma alloc_text(INSTANT,InstantDlgProc)
35
36#define hwndMLE WinWindowFromID(hwnd,BAT_MLE)
37
38static INT batches = 0;
39
[342]40MRESULT EXPENTRY InstantDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
41{
[2]42 CHAR *path;
[342]43 APIRET rc;
[2]44 static CHAR *bat = NULL;
45 static HWND myhwnd = (HWND)0;
46
47 switch(msg) {
48 case WM_INITDLG:
[342]49 if (myhwnd) {
50 Runtime_Error(pszSrcFile, __LINE__, "busy");
[2]51 WinSendMsg(myhwnd,WM_SYSCOMMAND,MPFROM2SHORT(SC_RESTORE,0),MPVOID);
52 WinSetActiveWindow(HWND_DESKTOP,myhwnd);
53 WinDismissDlg(hwnd,0);
54 break;
55 }
[342]56 if (!mp2) {
57 Runtime_Error(pszSrcFile, __LINE__, "no data");
[2]58 WinDismissDlg(hwnd,0);
59 break;
60 }
61 WinSetWindowPtr(hwnd,0,mp2);
62 path = (CHAR *)mp2;
63 {
64 CHAR s[CCHMAXPATH + 81];
65
66 sprintf(s,
67 GetPString(IDS_INSTANTTITLETEXT),
68 path);
69 WinSetWindowText(hwnd,s);
70 }
71 WinSendMsg(hwndMLE,
72 MLM_SETTEXTLIMIT,
73 MPFROMLONG((LONG)(10240L)),
74 MPVOID);
75 WinSendMsg(hwndMLE,
76 MLM_FORMAT,
77 MPFROM2SHORT(MLFIE_NOTRANS,0),
78 MPVOID);
79 if(bat) {
80
81 ULONG tlen = strlen(bat);
82 IPT iptOffset = 0L;
83
84 WinSendMsg(hwndMLE,MLM_SETIMPORTEXPORT,
85 MPFROMP(bat),
86 MPFROMLONG(12287L));
87 WinSendMsg(hwndMLE,MLM_IMPORT,MPFROMP(&iptOffset),MPFROMP(tlen));
88 DosFreeMem(bat);
89 bat = NULL;
90 }
91 break;
92
93 case WM_COMMAND:
94 switch(SHORT1FROMMP(mp1)) {
95 case DID_OK:
96 path = (CHAR *)WinQueryWindowPtr(hwnd,0);
97 {
98 CHAR s[CCHMAXPATH + 1];
99 FILE *fp;
100 IPT iptOffset = 0L;
101 LONG len,tlen,mem;
102 CHAR *rexx = "";
103
104 mem = MLEgetlen(hwndMLE);
105 if(mem) {
[342]106 rc = DosAllocMem((PVOID)&bat,mem,
107 PAG_COMMIT | PAG_READ | PAG_WRITE);
108 if(rc || !bat) {
109 Dos_Error(MB_CANCEL,rc,HWND_DESKTOP,pszSrcFile,__LINE__,GetPString(IDS_OUTOFMEMORY));
[2]110 WinDismissDlg(hwnd,0);
111 break;
112 }
113 tlen = (LONG)WinSendMsg(hwndMLE,MLM_QUERYTEXTLENGTH,MPVOID,MPVOID);
[342]114 if(!tlen)
115 Runtime_Error(pszSrcFile, __LINE__, "no data");
116 else {
[2]117 WinSendMsg(hwndMLE,MLM_SETIMPORTEXPORT,
118 MPFROMP(bat),
119 MPFROMLONG(mem));
120 len = (LONG)WinSendMsg(hwndMLE,MLM_EXPORT,
121 MPFROMP(&iptOffset),
122 MPFROMP(&tlen));
123 bat[len] = 0;
124 lstrip(bat);
125 while(strlen(bat) && bat[strlen(bat) - 1] == '\n' ||
126 bat[strlen(bat) - 1] == ' ') {
[123]127 // fixme to understand
[2]128 stripcr(bat);
129 rstrip(bat);
130 stripcr(bat);
131 rstrip(bat);
132 }
[342]133 if(!*bat)
134 Runtime_Error(pszSrcFile, __LINE__, "no data");
135 else {
[2]136 sprintf(s,"%s%sFMTMP%d.CMD",path,
137 (path[strlen(path) - 1] == '\\') ? "" : "\\",
138 batches++);
139 fp = fopen(s,"w");
[342]140 if(!fp)
141 Runtime_Error(pszSrcFile, __LINE__, "fopen");
142 else {
[2]143 if(!strncmp(bat,"/*",2)) {
144 rexx = "'";
145 fprintf(fp,
146 "%s\n",
147 GetPString(IDS_REXXCOMMENT));
148 }
149 fprintf(fp,"%s%c:%s\n",rexx,toupper(*path),rexx);
150 fprintf(fp,"%sCD \"%s%s\"%s\n",rexx,path,
151 (strlen(path) < 3) ? "\\" : "",rexx);
152 fprintf(fp,"%s",bat);
153 fprintf(fp,"\n%sDEL \"%s\"%s\n",rexx,s,rexx);
154 fclose(fp);
155 runemf2(WINDOWED | SEPARATE,
156 hwnd,
157 path,
158 NULL,
159 "%s /C \"%s\"",
160 GetCmdSpec(FALSE),
161 s);
162 }
163 }
164 }
165 }
166 }
167 WinDismissDlg(hwnd,0);
168 break;
169
170 case DID_CANCEL:
171 WinDismissDlg(hwnd,0);
172 break;
173
174 case IDM_HELP:
175 path = WinQueryWindowPtr(hwnd,0);
[342]176 rc = saymsg(MB_YESNOCANCEL,
[2]177 hwnd,
178 GetPString(IDS_INSTANTHELPTITLETEXT),
179 GetPString(IDS_INSTANTHELPTEXT),
180 path,(strlen(path) < 3) ? "\\" : "",path,
181 (path[strlen(path) - 1] == '\\') ? "" : "\\",
182 batches);
[342]183 if(rc == MBID_YES)
[2]184 runemf2(WINDOWED | INVISIBLE | BACKGROUND,
185 hwnd,
186 NULL,
187 NULL,
188 "%s /C HELP BATCH",
189 GetCmdSpec(FALSE));
[342]190 else if(rc == MBID_CANCEL)
[2]191 WinDismissDlg(hwnd,0);
192 break;
193 }
194 return 0;
195
196 case WM_CLOSE:
197 case WM_DESTROY:
198 myhwnd = (HWND)0;
199 break;
200 }
201 return WinDefDlgProc(hwnd,msg,mp1,mp2);
202}
203
Note: See TracBrowser for help on using the repository browser.