1/* $Xorg: xsm.h,v 1.4 2001/02/09 02:06:01 xorgcvs Exp $ */ 2/* $XdotOrg: $ */ 3/****************************************************************************** 4 5Copyright 1993, 1998 The Open Group 6 7Permission to use, copy, modify, distribute, and sell this software and its 8documentation for any purpose is hereby granted without fee, provided that 9the above copyright notice appear in all copies and that both that 10copyright notice and this permission notice appear in supporting 11documentation. 12 13The above copyright notice and this permission notice shall be included in 14all copies or substantial portions of the Software. 15 16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 20AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 23Except as contained in this notice, the name of The Open Group shall not be 24used in advertising or otherwise to promote the sale, use or other dealings 25in this Software without prior written authorization from The Open Group. 26******************************************************************************/ 27/* $XFree86: xc/programs/xsm/xsm.h,v 1.7 2001/12/08 18:33:45 herrb Exp $ */ 28 29#ifndef _XSM_H_ 30#define _XSM_H_ 31 32#ifdef HAVE_CONFIG_H 33# include "config.h" 34#endif 35 36#define _CONST_X_STRING 37 38#include <X11/Xos.h> 39#include <X11/Xfuncs.h> 40 41#ifndef X_NOT_POSIX 42#ifdef _POSIX_SOURCE 43#include <limits.h> 44#else 45#define _POSIX_SOURCE 46#include <limits.h> 47#undef _POSIX_SOURCE 48#endif 49#endif /* X_NOT_POSIX */ 50#ifndef PATH_MAX 51#include <sys/param.h> 52#ifndef PATH_MAX 53#ifdef MAXPATHLEN 54#define PATH_MAX MAXPATHLEN 55#else 56#define PATH_MAX 1024 57#endif 58#endif 59#endif /* PATH_MAX */ 60 61#ifndef _POSIX_SOURCE 62#define _POSIX_SOURCE 63#include <stdio.h> 64#undef _POSIX_SOURCE 65#else 66#include <stdio.h> 67#endif 68 69#include <ctype.h> 70#include <stdlib.h> 71 72#include <X11/StringDefs.h> 73#include <X11/Intrinsic.h> 74 75#include <X11/ICE/ICEutil.h> 76 77#include <X11/SM/SMlib.h> 78 79#include "list.h" 80 81/* 82 * Each time the format of the sm's save file changes, bump up 83 * the version. 84 */ 85 86#define SAVEFILE_VERSION 3 87 88#define DEFAULT_SESSION_NAME "Default" 89#define FAILSAFE_SESSION_NAME "Fail Safe" 90 91#define RESTART_MANAGERS 1 92#define RESTART_REST_OF_CLIENTS 2 93 94typedef struct _ClientRec { 95 SmsConn smsConn; 96 IceConn ice_conn; 97 char *clientId; 98 char *clientHostname; 99 List *props; 100 char *discardCommand; 101 char *saveDiscardCommand; 102 103 unsigned int restarted : 1; 104 unsigned int userIssuedCheckpoint : 1; 105 unsigned int restartHint : 2; 106 unsigned int receivedDiscardCommand : 1; 107 unsigned int freeAfterBadSavePopup : 1; 108 109} ClientRec; 110 111typedef struct _PendingClient { 112 char *clientId; 113 char *clientHostname; 114 List *props; 115} PendingClient; 116 117typedef struct _Prop { 118 char *name; 119 char *type; 120 List *values; 121} Prop; 122 123typedef struct _PropValue { 124 XtPointer value; 125 int length; 126} PropValue; 127 128 129extern char **environ; 130 131extern int Argc; 132extern char **Argv; 133 134extern char *display_env, *non_local_display_env; 135extern char *session_env, *non_local_session_env; 136extern char *audio_env; 137 138extern Bool need_to_name_session; 139 140extern Bool remote_allowed; 141 142extern Bool verbose; 143 144extern char *sm_id; 145 146extern char *networkIds; 147extern char *session_name; 148 149extern IceAuthDataEntry *authDataEntries; 150extern int numTransports; 151 152extern List *RunningList; 153extern List *PendingList; 154extern List *RestartAnywayList; 155extern List *RestartImmedList; 156 157extern List *WaitForSaveDoneList; 158extern List *FailedSaveList; 159extern List *WaitForInteractList; 160extern List *WaitForPhase2List; 161 162extern Bool client_info_visible; 163extern Bool client_prop_visible; 164extern Bool client_log_visible; 165extern String *clientListNames; 166extern ClientRec **clientListRecs; 167extern int numClientListNames; 168extern int current_client_selected; 169 170extern Bool shutdownInProgress; 171extern Bool phase2InProgress; 172extern Bool saveInProgress; 173extern Bool shutdownCancelled; 174extern Bool wantShutdown; 175 176extern int sessionNameCount; 177extern String *sessionNamesShort; 178extern String *sessionNamesLong; 179extern Bool *sessionsLocked; 180 181extern int num_clients_in_last_session; 182 183extern char **non_session_aware_clients; 184extern int non_session_aware_count; 185 186extern XtAppContext appContext; 187extern Widget topLevel; 188extern Widget mainWindow; 189extern Widget clientInfoButton; 190extern Widget logButton; 191extern Widget checkPointButton; 192extern Widget shutdownButton; 193extern Widget shutdownDontSave; 194 195extern XtSignalId sig_term_id, sig_usr1_id; 196 197extern void fprintfhex(FILE *fp, unsigned int len, char *cp); 198extern Status StartSession(char *name, Bool use_default); 199extern void EndSession(int status) _X_NORETURN; 200extern void SetWM_DELETE_WINDOW(Widget widget, const _XtString delAction); 201extern void SetAllSensitive(Bool on); 202extern void FreeClient(ClientRec *client, Bool freeProps); 203extern void CloseDownClient(ClientRec *client); 204 205 206/* misc.c */ 207extern int strbw(const char *a, const char *b); 208extern void nomem(void) _X_NORETURN; 209 210 211#define Strstr strstr 212 213/* remote.c */ 214extern void remote_start(const char *restart_protocol, 215 const char *restart_machine, 216 const char *program, char **args, 217 const char *cwd, char **env, 218 const char *non_local_display_env, 219 const char *non_local_session_env ); 220 221/* signals.c */ 222extern void sig_child_handler(int sig); 223extern void sig_term_handler(int sig); 224extern void sig_usr1_handler(int sig); 225extern void xt_sig_term_handler(XtPointer closure, XtSignalId *id); 226extern void xt_sig_usr1_handler(XtPointer closure, XtSignalId *id); 227extern void register_signals(XtAppContext); 228extern int execute_system_command(char *s); 229 230extern int checkpoint_from_signal; 231 232#ifdef XKB 233#include <X11/extensions/XKBbells.h> 234#endif 235 236#endif /* _XSM_H_ */ 237