1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
|
/****************************************************************************
Copyright(c) Maynard, an Archive Company. 1991
Name: SS_DM.H
Description: This header file contains prototypes for the
SCHEDULE related operations.
$Log: G:/UI/LOGFILES/SCHEDULE.H_V $
Rev 1.25 01 Nov 1992 16:33:08 DAVEV
Unicode changes
Rev 1.24 12 Oct 1992 17:33:04 DARRYLP
Increased the size of the name field.
Rev 1.23 12 Oct 1992 17:31:58 DARRYLP
Update to allow for multiple addressees.
Rev 1.22 09 Oct 1992 10:31:54 DARRYLP
upgraded email password handling.
Rev 1.21 04 Oct 1992 19:49:08 DAVEV
UNICODE AWK PASS
Rev 1.20 28 Sep 1992 17:10:12 DARRYLP
Additional defines for WFW email.
Rev 1.19 22 Sep 1992 15:10:40 DARRYLP
Added prototypes for email functions.
Rev 1.18 21 Sep 1992 16:50:44 DARRYLP
Updates to WFW email routines.
Rev 1.17 17 Sep 1992 18:04:58 DARRYLP
New additions for WFW email.
Rev 1.16 08 Sep 1992 15:42:18 DARRYLP
Added new structure items and associated Macros for WFW email.
Rev 1.15 08 Apr 1992 11:37:44 JOHNWT
changed SCH_GetLongTime params
Rev 1.14 26 Mar 1992 15:20:52 JOHNWT
fixed defs
Rev 1.13 20 Feb 1992 14:08:54 ROBG
Changed for NT disk format.
Rev 1.12 29 Jan 1992 12:33:14 ROBG
Added two #defines to support launcher.
Rev 1.11 25 Jan 1992 19:15:00 GLENN
Updated
Rev 1.10 22 Jan 1992 09:31:06 ROBG
Added parameter to SCH_StartJob.
Rev 1.9 17 Jan 1992 17:06:18 ROBG
Added more macros.
Rev 1.8 17 Jan 1992 16:35:50 ROBG
Added more macros.
Rev 1.7 16 Jan 1992 14:16:18 ROBG
Changes to support new launcher.
Rev 1.6 16 Jan 1992 11:59:46 ROBG
Added some macros and changed field 'fAbort' to 'fStatus'.
This field will hold up to 8 status bits.
Rev 1.5 15 Jan 1992 09:35:04 ROBG
Added define for SCH_VER_NUM and a new field to schedule record.
Rev 1.4 14 Jan 1992 15:42:32 ROBG
Added fAborted field in schedule record.
Rev 1.3 14 Jan 1992 12:21:44 ROBG
Added fields to support delaying the running of an instance of a job.
Rev 1.2 10 Jan 1992 17:27:42 ROBG
Added SCH_IsLauncherRunning.
Rev 1.1 04 Dec 1991 17:12:38 CHUCKB
Added new id's for int'l stuff.
Rev 1.0 20 Nov 1991 19:40:32 SYSTEM
Initial revision.
****************************************************************************/
#ifndef SCHEDULE_H
#define SCHEDULE_H
#include "jobs.h"
// Structure for Schedule Database
// Email Send Codes
#define SCH_EMAIL_ALWAYS 0x0001
#define SCH_EMAIL_NEVER 0x0002
#define SCH_EMAIL_ERROR 0x0004
// Email bit fields
#define SCH_EMAIL_ACTIVE 0x01
#define SCH_EMAIL_INC_LOG 0x02
// Repeat Modes
#define SCH_ONCEONLY 0x01
#define SCH_HOURS 0x02
#define SCH_DAYS 0x04
#define SCH_MONTHS_BY_WEEK 0x08
#define SCH_MONTHS_BY_DAY 0x10
// Interval values for SCH_DAYS
#define SCH_MONDAY 0x01
#define SCH_TUESDAY 0x02
#define SCH_WEDNESDAY 0x04
#define SCH_THURSDAY 0x08
#define SCH_FRIDAY 0x10
#define SCH_SATURDAY 0x20
#define SCH_SUNDAY 0x40
// Interval values for week in month
#define SCH_FIRSTWEEK 0x01
#define SCH_SECONDWEEK 0x02
#define SCH_THIRDWEEK 0x04
#define SCH_FOURTHWEEK 0x08
#define SCH_LASTWEEK 0x10
// Internal values for wDelayValue.
#define SCH_JOBONHOLD 0xffff
#define SCH_JOBACTIVE 0
// Bit positions of the status byte.
#define SCH_ABORTSTATUS 0x80
#define SCH_MISSEDSTATUS 0x40
#define SCH_RUNSTATUS 0x20
#define SCH_DELAYEDSTATUS 0x10
#define SCH_HOLDSTATUS 0x08
// Values to pass in WM_PUBLISHRUNNINGJOBS message in the unique key field
// to indicate ( no jobs or job just completed ) .
#define SCH_NOJOBSFOUND 0L
#define SCH_JOBCOMPLETE 1L
#define SCH_NAME_SIZE 41
#define SCH_NAME_LEN 40
#define SCH_PASSWORD_SIZE 41
#define SCH_PASSWORD_LEN 40
#define SCH_ADDRESSEES_SIZE 101
#define SCH_ADDRESSEES_LEN 100
#define SCH_SUBJECT_SIZE 53
#define SCH_SUBJECT_LEN 52
#define SCH_MESSAGE_SIZE 257
#define SCH_MESSAGE_LEN 256
typedef struct {
// Internal
// Definition
INT32 fActive; // BOOL -- Tells if job is active or not.
INT32 bMinute; // BYTE -- Minute of next execution.
INT32 bHour; // BYTE -- Hour of next execution
INT32 bDay; // BYTE -- Day of next execution.
INT32 bMonth; // BYTE -- Month of next execution.
UINT32 wYear; // WORD -- Year of next execution.
INT32 lDateKey ; // LONG -- Creation date used as unique key.
INT32 fStatus ; // BYTE -- Holds status flags.
INT32 fInstTime; // BYTE -- Tells whether this time is to be used.
INT32 bInstMinute; // BYTE -- Minute of next execution for job instance.
INT32 bInstHour; // BYTE -- Hour of next execution for job instance.
INT32 bInstDay; // BYTE -- Day of next execution for job instance.
INT32 bInstMonth; // BYTE -- Month of next execution for job instance.
UINT32 wInstYear; // WORD -- Year of next execution for job instance.
INT32 bRepeatMode; // BYTE -- Repeat mode to determine next time.
INT32 bPrimaryInterval ; // BYTE -- Primary interval.
INT32 bSecondaryInterval ;// BYTE -- Used only for SCH_MONTHS_BY_WEEK.
// -- (day of the week of the month)
UINT32 wDelayValue ; // WORD -- Delay value, Hours, minutes
// Name of job. Allocated on a 4 byte boundary.
CHAR szJobname[MAX_JOBNAME_SIZE + 4-( (MAX_JOBNAME_SIZE)%4 ) ];
ULONG fEmailMisc; // Miscellaneous bit fields
ULONG bEmailSend; // Email setup: Always, On Err, Never
CHAR szName[SCH_MESSAGE_SIZE]; // Addressee names
CHAR szSubject[SCH_SUBJECT_SIZE]; // 52 CHAR subject
CHAR szMessage[SCH_MESSAGE_SIZE]; // In addition to the log file - extra message
Q_ELEM dsQElem ;
} SCHEDREC, *SCHEDREC_PTR ;
// Version of schedule records
#define SCH_VER_NUM 3
// macros for schedules
#define SCH_SetEmailMisc( x, y ) ( (x)->fEmailMisc |= y )
#define SCH_UnSetEmailMisc( x, y ) ( (x)->fEmailMisc &= !y )
#define SCH_GetEmailActive( x ) ( (x)->fEmailMisc & SCH_EMAIL_ACTIVE )
#define SCH_GetEmailIncLog( x ) ( (x)->fEmailMisc & SCH_EMAIL_INC_LOG )
#define SCH_SetEmailAlways( x ) ( (x)->bEmailSend = SCH_EMAIL_ALWAYS )
#define SCH_SetEmailNever( x ) ( (x)->bEmailSend = SCH_EMAIL_NEVER )
#define SCH_SetEmailError( x ) ( (x)->bEmailSend = SCH_EMAIL_ERROR )
#define SCH_GetEmailType( x ) ( (x)->bEmailSend )
#define SCH_GetAddNames( x ) ( (x)->szName )
#define SCH_SetAddNames( x, y ) ( lstrcpy( (x)->szName, (y) ) )
#define SCH_GetMessage( x ) ( (x)->szMessage )
#define SCH_SetMessage( x,y ) ( lstrcpy( (x)->szMessage, (y) ) )
#define SCH_GetSubject( x ) ( (x)->szSubject )
#define SCH_SetSubject( x, y ) ( lstrcpy( (x)->szSubject, (y) ) )
#define SCH_GetQElem( x ) ( (x)->dsQElem )
#define SCH_SetQElem( x, y ) ( (x)->dsQElem = (y) )
#define SCH_GetActive( x ) ( (BOOL)(x)->fActive )
#define SCH_SetActive( x, y ) ( (x)->fActive = (INT32)(y) )
#define SCH_GetMinute( x ) ( (BYTE)(x)->bMinute )
#define SCH_SetMinute( x, y ) ( (x)->bMinute = (INT32)(y) )
#define SCH_GetHour( x ) ( (BYTE)(x)->bHour )
#define SCH_SetHour( x, y ) ( (x)->bHour = (INT32)(y) )
#define SCH_GetDay( x ) ( (BYTE)(x)->bDay )
#define SCH_SetDay( x, y ) ( (x)->bDay = (INT32)(y) )
#define SCH_GetMonth( x ) ( (BYTE)(x)->bMonth )
#define SCH_SetMonth( x, y ) ( (x)->bMonth = (INT32)(y) )
#define SCH_GetYear( x ) ( (WORD)(x)->wYear )
#define SCH_SetYear( x, y ) ( (x)->wYear = (UINT32)(y) )
#define SCH_GetDateKey( x ) ( (LONG)(x)->lDateKey )
#define SCH_SetDateKey( x, y ) ( (x)->lDateKey = (INT32)(y) )
#define SCH_GetStatusByte( x ) ( (BYTE)(x)->fStatus )
#define SCH_SetStatusByte( x, y ) ( (x)->fStatus = (INT32)(y) )
#define SCH_GetAbortFlag( x ) ( ((BYTE)(x)->fStatus) & SCH_ABORTSTATUS )
#define SCH_SetAbortFlagOn( x ) ( (x)->fStatus |= SCH_ABORTSTATUS )
#define SCH_SetAbortFlagOff( x ) ( (x)->fStatus &= ~((INT32)SCH_ABORTSTATUS) )
#define SCH_GetMissedFlag( x ) ( ((BYTE)(x)->fStatus) & SCH_MISSEDSTATUS )
#define SCH_SetMissedFlagOn( x ) ( (x)->fStatus |= SCH_MISSEDSTATUS )
#define SCH_SetMissedFlagOff( x ) ( (x)->fStatus &= ~((INT32)SCH_MISSEDSTATUS) )
#define SCH_GetRunFlag( x ) ( ((BYTE)(x)->fStatus) & SCH_RUNSTATUS )
#define SCH_SetRunFlagOn( x ) ( (x)->fStatus |= SCH_RUNSTATUS )
#define SCH_SetRunFlagOff( x ) ( (x)->fStatus &= ~((INT32)SCH_RUNSTATUS) )
#define SCH_GetDelayedFlag( x ) ( ((BYTE)(x)->fStatus) & SCH_DELAYEDSTATUS )
#define SCH_SetDelayedFlagOn( x ) ( (x)->fStatus |= SCH_DELAYEDSTATUS )
#define SCH_SetDelayedFlagOff( x ) ( (x)->fStatus &= ~((INT32)SCH_DELAYEDSTATUS) )
#define SCH_GetHoldFlag( x ) ( ((BYTE)(x)->fStatus) & SCH_HOLDSTATUS )
#define SCH_SetHoldFlagOn( x ) ( (x)->fStatus |= SCH_HOLDSTATUS )
#define SCH_SetHoldFlagOff( x ) ( (x)->fStatus &= ~((INT32)SCH_HOLDSTATUS) )
#define SCH_GetUseInstTime( x ) ( (BYTE)(x)->fInstTime )
#define SCH_SetUseInstTime( x, y ) ( (x)->fInstTime = (INT32)(y) )
#define SCH_GetInstMinute( x ) ( (BYTE)(x)->bInstMinute )
#define SCH_SetInstMinute( x, y ) ( (x)->bInstMinute = (INT32)(y) )
#define SCH_GetInstHour( x ) ( (BYTE)(x)->bInstHour )
#define SCH_SetInstHour( x, y ) ( (x)->bInstHour = (INT32)(y) )
#define SCH_GetInstDay( x ) ( (BYTE)(x)->bInstDay )
#define SCH_SetInstDay( x, y ) ( (x)->bInstDay = (INT32)(y) )
#define SCH_GetInstMonth( x ) ( (BYTE)(x)->bInstMonth )
#define SCH_SetInstMonth( x, y ) ( (x)->bInstMonth = (INT32)(y) )
#define SCH_GetInstYear( x ) ( (WORD)(x)->wInstYear )
#define SCH_SetInstYear( x, y ) ( (x)->wInstYear = (UINT32)(y) )
#define SCH_GetRepeatMode( x ) ( (BYTE)(x)->bRepeatMode )
#define SCH_SetRepeatMode( x, y ) ( (x)->bRepeatMode = (INT32)(y) )
#define SCH_GetPrimaryInterval( x ) ( (BYTE)(x)->bPrimaryInterval )
#define SCH_SetPrimaryInterval( x, y ) ( (x)->bPrimaryInterval = (INT32)(y) )
#define SCH_GetSecondaryInterval( x ) ( (BYTE)(x)->bSecondaryInterval )
#define SCH_SetSecondaryInterval( x, y ) ( (x)->bSecondaryInterval = (INT32)(y) )
#define SCH_GetJobname( x ) ( (x)->szJobname )
#define SCH_SetJobname( x, y ) ( lstrcpy ( (x)->szJobname, (y) ) )
#define SCH_GetDelayValue( x ) ( (WORD)(x)->wDelayValue )
#define SCH_SetDelayValue( x, y ) ( (x)->wDelayValue = (UINT32)(y) )
/* Defines used when accessing the JOB and SCHEDULE files */
#define FOPEN_ERR -1
#define FREAD_ERR -2
#define FWRITE_ERR -3
#define FCLOSE_ERR -4
// schedule function prototypes
BOOL SCH_AnySchedFiles ( VOID ) ;
INT SCH_Compare ( SCHEDREC_PTR, SCHEDREC_PTR ) ;
VOID SCH_DeInitQueue ( VOID ) ;
VOID SCH_EnQueueJob ( SCHEDREC_PTR ) ;
SCHEDREC_PTR SCH_FindSched ( INT ) ;
INT SCH_GetCount ( VOID ) ;
SCHEDREC_PTR SCH_GetNextJob ( SCHEDREC_PTR ) ;
VOID SCH_InitQueue ( VOID ) ;
SCHEDREC_PTR SCH_InitSched ( VOID ) ;
BOOL SCH_IsJobIconic ( INT ) ;
INT SCH_ReadList ( VOID ) ;
VOID SCH_Refresh ( VOID ) ;
VOID SCH_Remove ( SCHEDREC_PTR ) ;
INT SCH_SaveList ( VOID ) ;
void SCH_AskForRunningJob ( HWND hWnd ) ;
void SCH_NotifyLauncher ( void ) ;
void SCH_RegisterJob ( LPSTR szJobName, INT nSchedIndex ) ;
void SCH_StartJob ( WORD , LONG ) ;
void SCH_UnRegisterJob ( LPSTR szJobName ) ;
VOID SCH_GetTimeDateStruct ( TIME_PTR time_struct ) ;
LONG SCH_GetLongTime ( SCHEDREC_PTR pSchedRec ) ;
void SCH_UpdateTime ( SCHEDREC_PTR pSchedRec, TIME_PTR ptmNewTime ) ;
BOOL SCH_IsLeapYear ( UINT usYear ) ;
void SCH_BuildMonthCalendar ( TIME_PTR ptmDate, SCHEDREC_PTR pSchedRec ) ;
BOOL SCH_FindNextDate ( TIME_PTR ptmStartTime, TIME_PTR ptmNewTime ) ;
void SCH_UpdateAfterRun ( SCHEDREC_PTR ) ;
BOOL SCH_IsLauncherRunning ( void ) ;
VOID SCH_PublishRunningJob ( void ) ;
SCHEDREC_PTR SCH_FindSchedByKey ( LONG lDateKey, LPINT nIndex ) ;
// Email functions
BOOL EM_GetUserFromINI(LPSTR lpUserName);
BOOL EM_IsMailAvailable(void);
BOOL EM_IsMAPIAvailable(void);
void EM_SetMAPIAvailable(BOOL);
BOOL EM_SendEmail(SCHEDREC_PTR, UINT);
LPSTR EM_GetPswd(void);
BOOL EM_SavePswd(LPSTR lpPassword);
INT iTime ; // indicators for international date field positions
INT iDate ;
INT cyChildHeight ;
CHAR sDate[2] ;
CHAR sTime[2] ;
CHAR sAMPM[2][5] ;
#endif
|