Initial import of the CDE 2.1.30 sources from the Open Group.
[oweals/cde.git] / cde / programs / dtsession / Sm.h
1 /* $XConsortium: Sm.h /main/15 1996/09/14 14:48:18 drk $ */
2 /*************************************<+>*************************************
3  *****************************************************************************
4  **
5  **  File:        Sm.h
6  **
7  **  Project:     HP DT Session Manager (dtsession)
8  **
9  **  Description:
10  **  -----------
11  **  Contains all general, global variables used by the session manager
12  **
13  **
14  **
15  *****************************************************************************
16  *************************************<+>*************************************/
17 /*                                                                 
18  * (c) Copyright 1996 Digital Equipment Corporation.
19  * (c) Copyright 1990, 1993, 1994, 1996 Hewlett-Packard Company          
20  * (c) Copyright 1993, 1994, 1996 International Business Machines Corp. 
21  * (c) Copyright 1993, 1994, 1996 Sun Microsystems, Inc.                
22  * (c) Copyright 1993, 1994, 1996 Novell, Inc.                      
23  * (c) Copyright 1996 FUJITSU LIMITED.
24  * (c) Copyright 1996 Hitachi.
25  */
26
27 #ifndef _sm_h
28 #define _sm_h
29
30 /*
31  * #include statements
32  */
33
34 #include <signal.h>
35 #include <sys/param.h>
36 #include <X11/Xlib.h>
37 #include <Dt/DtP.h>
38 #include <Dt/UserMsg.h>
39 #include <Tt/tt_c.h>
40 #include "SmError.h"
41
42 /* 
43  *  #define statements 
44  */
45
46 #define HELPVIEW_COMMAND_LINE  CDE_INSTALLATION_TOP "/bin/dthelpview -helpVolume Dtintro"
47
48
49 /*
50  * Wrappers for system calls
51  */
52 #define         SM_MALLOC(SIZE)                 XtMalloc(SIZE)
53 #define         SM_REALLOC(PTR, SIZE)   XtRealloc(PTR, SIZE)
54 #define         SM_FREE(PTR)                    XtFree(PTR)
55 #define         SM_EXIT(STATUS)                 SmExit(STATUS)
56
57 #ifdef __hpux
58 #define         SM_SETEUID(EUID)        setresuid(-1, EUID, -1)
59 #define         SM_SETESUID(UID)        setresuid(-1, UID, UID)
60 #else
61 #ifndef SVR4
62 #define         SM_SETEUID(EUID)        seteuid(EUID)
63 #define         SM_SETESUID(UID)        setreuid(UID, UID)
64 #else
65 #define         SM_SETEUID(EUID)        seteuid(EUID)
66 #define         SM_SETESUID(UID)        (setuid(UID), seteuid(UID))
67 #endif
68 #endif
69
70 /*
71  * Types of states the session manager can be in
72  */
73 #define         READY                   0
74 #define         IN_PROCESS              1
75
76 /*
77  *  session types .. home or current or default
78  */
79 #define         DEFAULT_SESSION         0
80 #define         HOME_SESSION            1
81 #define         CURRENT_SESSION         2
82
83 /*
84  * The lower bounds for each resolution of display - caculated
85  * as Y Resolution - which is pixels/meter
86  */
87 #define                 HIGH_RES_Y_RES                  3583
88 #define                 MED_RES_Y_RES                   3150
89 #define                 LOW_RES_Y_RES                   1
90
91 /*
92  * Maximum number of screens saved during a session
93  */
94 #define         MAX_SCREENS_SAVED       10
95
96 /* contention management definitions */
97 #define SM_CM_SYSTEM       (1L << 0)
98 #define SM_CM_HANDSHAKE    (1L << 1)
99
100 #define SM_CM_ALL          (SM_CM_SYSTEM  | SM_CM_HANDSHAKE)
101 #define SM_CM_NONE         0
102
103 #define SM_CM_DEFAULT      SM_CM_NONE
104
105 #ifndef NO_MESSAGE_CATALOG
106 # ifdef __ultrix
107 #  define _CLIENT_CAT_NAME "dtsession.cat"
108 # else  /* __ultrix */
109 #  define _CLIENT_CAT_NAME "dtsession"
110 # endif /* __ultrix */
111 extern char *_DtGetMessage(char *filename, int set, int n, char *s);
112 # define GETMESSAGE(set, number, string)\
113     (_DtGetMessage(_CLIENT_CAT_NAME, set, number, string))
114 #else
115 # define GETMESSAGE(set, number, string)\
116     string
117 #endif
118
119 typedef int (*IOErrorHandlerProc)(
120         Display *
121 );
122
123 /* 
124  * typedef statements 
125  */
126
127 /*
128  * Pointer to hold information returned by session settings
129  */
130 typedef struct
131 {
132     int                 accelNum;           /* Pointer Control Information */
133     int                 accelDenom;
134     int                 threshold;
135
136     int                 timeout;            /*Screen Saver Information */
137     int                 interval;
138     int                 preferBlank;
139     int                 allowExp;
140
141     char                *fontDirs;          /*Font path Information */
142     
143     XKeyboardState      kbdState;           /* Keyboard Control Information */
144     char                *autoRepeats;
145     
146     char                *buttonMap;         /*Button Mapping Information */
147     
148     int                 numKeyCode;         /*Key Mapping information */
149     int                 keySymPerCode;
150     char                *keySyms;
151
152     int                 maxKeyPerMod;       /*Modifier Mapping Information */
153     char                *modSyms;
154
155     Boolean             didQuery;       /*Was this information queried for*/
156
157     int                 confirmMode;
158     int                 startState;
159 } SessionSettings, *SessionSettingsPtr;
160
161 /*
162  * Structure to save all of the session manager resources
163  */
164 typedef struct
165 {
166     char        *wmStartup;
167     Boolean     querySettings;
168     char        *keyholders;
169     int         alarmTime;
170     int         memThreshold;
171     char        *sessionVersion;
172     int         displayResolution;
173     char        *sessionLang;
174     long        contManagement;
175     int         waitClientTimeout;
176     int         waitWmTimeout;
177     Boolean     useBMS;
178     Boolean     saveFontPath;
179     int         saveYourselfTimeout;
180     Boolean     mergeXdefaults;
181     int         numSessionsBackedup;
182     char        *ignoreEnvironment;
183 } SessionResources, *SessionResourcesPtr;
184
185 /*
186  * Screen saver resources.
187  */
188 typedef struct
189 {
190     int         cycleTimeout;
191     int         saverTimeout;
192     int         lockTimeout;
193     Boolean     random;
194     char        *saverList;
195 } SaverResources, *SaverResourcesPtr;
196
197 /*
198  * Structure to hold global state settings
199  */
200 typedef struct
201 {
202     Boolean                     audioChange;
203     Boolean                     pointerChange;
204     Boolean                     pointerMapChange;
205     char                        pointerMap[5];
206     int                         numButton;
207     Boolean                     keyboardChange;
208     Boolean                     screenSavChange;
209     char                        dClickBuf[50];
210 } SettingsSet;
211
212 typedef struct
213 {
214         Boolean         audioChange;
215         Boolean         pointerChange;
216         Boolean         keyboardChange;
217         Boolean         screenSavChange;
218         Boolean         dClickChange;
219         Boolean         fontChange;
220         Boolean         preeditChange;
221 } SettingsCust;
222
223
224 /*
225  * Structure to hold general information needed to be shared by
226  * different modules in the session manager
227  */
228 typedef struct
229 {
230     Display             *display;
231     Widget              topLevelWid;
232     Window              topLevelWindow;
233     XtAppContext        appCon;
234     char                *programName;           /* main()'s argv[0] */
235     int                 numSavedScreens;
236     int                 screen;
237     int                 lockedState;
238     int                 smState;
239     short               sessionType;
240     unsigned long       blackPixel;
241     unsigned long       whitePixel;
242     unsigned long       foregroundPix;
243     unsigned long       backgroundPix;
244     Cursor              lockCursor, padlockCursor, blankCursor;
245     Cursor              waitCursor;
246     char                resourcePath[MAXPATHLEN + 1];
247     char                settingPath[MAXPATHLEN + 1];
248     char                clientPath[MAXPATHLEN + 1];
249     char                fontPath[MAXPATHLEN + 1];
250     char                exitPath[MAXPATHLEN + 1];
251     char                etcPath[MAXPATHLEN + 1]; /*
252                                                   * Used for sessionEtc on
253                                                   * the way up and for
254                                                   * moving current to
255                                                   * current.old on the way
256                                                   * down
257                                                   */
258     char                *savePath;
259     char                *restoreSession;
260     Boolean             dtwmRunning;
261     Boolean             bmsDead;
262     Tt_pattern          requests2Handle;
263     Tt_pattern          events2Watch;
264     Boolean             compatMode;
265     Boolean             lockOnTimeoutStatus;
266     gid_t               runningGID, conMgmtGID;
267     uid_t               runningUID, unLockUID;
268     Boolean             secureSystem;
269     Boolean             screenSaver;  /* obsolete */
270     Boolean             screenSaverRunning; /* obsolete */
271     Boolean             userSetWaitWmTimeout;
272     int                 savedWaitWmTimeout;
273     /*
274      * These strings are for our copy once we
275      * fetch resources with XtGetApplicationResources.
276      * These string returned can be overwritten anytime
277      * another Xrm call is made as in MergeCoeResources (libXv3.0)
278      * or in our own calls to XrmGetFileDatabase.
279      */
280
281     /*
282      * This set is the for smRes
283      */
284     char        *wmStartup;
285     char        *keyholders;
286     char        *sessionVersion;
287     char        *sessionLang;
288
289     /*
290      * This set is the for smSettings
291      */
292     char        *fontDirs;          /*Font path Information */
293     char        *autoRepeats;
294     char        *buttonMap;         /*Button Mapping Information */
295     char        *keySyms;
296     char        *modSyms;
297    
298     char        *saverList; /* Current screen saver list */
299     void        *saverListParse; /* Current parsed screen saver list */
300
301     Boolean     coverScreen; /* full screen cover */
302     char        *SmNextension; /* screen saver extension name */
303     char        *SmCextension; /* screen saver extension class */
304     char        *extensionSpec; /* sprintf specification */
305 #if defined (USE_X11SSEXT)
306     int         ssEventType; /* screen saver event type */
307 #endif /* USE_X11SSEXT */
308     struct sigaction childvec;
309     struct sigaction defvec;
310
311     Boolean     homeSave;        /* True if the save is via the Style
312                                     Manager's Save Home Session button. */
313     Boolean     displaySpecific; /* Is Ture if the session is for a
314                                     specific display, otherwise False */
315     Boolean     loggingOut;     /* Is True if the current save is for
316                                    a logout; False otherwise. */
317 } GeneralData;
318
319
320 /*
321  * External variables
322  */
323 extern  char    *_dtsessionMG();
324
325 /*
326  * Files that the session manager saves sessions to and restores sessions
327  * from.  allocated in SmStrDef.c
328  */
329 extern char SM_CLIENT_FILE[];
330 extern char SM_CLIENT_FILE2[];
331 extern char SM_RESOURCE_FILE[];
332 extern char SM_FONT_FILE[];
333 extern char SM_LOW_RES_EXT[];
334 extern char SM_MED_RES_EXT[];
335 extern char SM_HIGH_RES_EXT[];
336 extern char SM_SETTING_FILE[];
337 extern char SM_CONVERSION_FILE[];
338 extern char SM_SYSTEM_CLIENT_FILE[];
339 extern char SM_SYSTEM_RESOURCE_FILE[];
340 extern char SM_SYSTEM_FONT_FILE[];
341
342 extern char SM_SYSTEM_PATH[];
343 extern char SM_SECURE_PATH[];
344
345 extern char SM_CURRENT_DIRECTORY[];
346 extern char SM_CURRENT_FONT_DIRECTORY[];
347 extern char SM_HOME_DIRECTORY[];
348 extern char SM_HOME_FONT_DIRECTORY[];
349 extern char SM_OLD_EXTENSION[];
350 extern char SM_SYSTEM_DIRECTORY[];
351 extern char smEtcFile[];
352 extern char smExitFile[];
353
354 /*
355  * Session manager name and class used to get resources allocated in SmStrDef.c
356  */
357 extern char SM_RESOURCE_CLASS[];
358 extern char SM_RESOURCE_NAME[];
359 extern char SM_HELP_VOLUME[];
360
361
362 /*
363  * Name of the lock the session manager has to make sure it's the only
364  * session manager running
365  */
366 extern char     SM_RUNNING_LOCK[];
367
368 /*
369  * Location and name of the screen saver program
370  */
371 extern char     SM_SCREEN_SAVER_LOC[];
372 extern char     SM_SCREEN_SAVER_NAME[];
373
374 /*
375  * Global resource settings. These settings determine program behavior
376  * wrt settings restoration, lock behavior, window manager startup etc
377  */
378 extern SessionResources         smRes;
379 extern SaverResources           smSaverRes;
380 extern SettingsSet              smToSet;
381 extern SettingsCust             smCust;
382 extern SessionSettings          smSettings;
383 extern GeneralData              smGD;
384
385
386 /*  
387  *  External Interface  
388  */
389
390 #endif /* __sm_h*/