summaryrefslogtreecommitdiffstats
path: root/private/utils/ntbackup/inc/schedule.h
blob: dea336310313b5f5ed20d4a45c8b6f8ff1282e73 (plain) (blame)
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