v07i086: sm - a session manager, Patch1, Part01/01
Mike Wexler
mikew at maui.fx.com
Sat Jun 2 08:22:45 AEST 1990
Submitted-by: mikew at maui.fx.com (Mike Wexler)
Posting-number: Volume 7, Issue 86
Archive-name: sm/patch1
Patch-To: sm: Volume 7, Issue 78, 79
Here is the first patch to the version of SM that I just posted to
comp.sources.x here are the highlights:
1. Fixed bug where pressing Save State while the state was being saved
caused a core dump.
2. Fixed several incompatibilities with ANSI C.
3. Ported to SGI.
4. Changed confirmation stuff to a dialog widget.
5. Added fallback resources so when the resource file can't be found, the
problem is more obvious.
6. Changed the confirmPopup from a vendorShell to a transientShell.
7. Added a strdup function for those systems that don't have one.
After you apply the patch, you should delete these files, PropUtils.h
and xdefs.h.
*** R4+/PatchLevel.h Fri Jun 1 12:38:13 1990
--- ./PatchLevel.h Fri Jun 1 13:05:07 1990
***************
*** 24,28 ****
******************************************************************/
! #define PATCHLEVEL 4
#define VERSION 4.0
--- 24,28 ----
******************************************************************/
! #define PATCHLEVEL 5
#define VERSION 4.0
*** R4+/Actions.c Fri Jun 1 12:38:24 1990
--- ./Actions.c Fri Jun 1 12:45:18 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: Actions.c,v 1.1 90/04/16 15:55:02 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: Actions.c,v 1.2 90/05/25 11:42:35 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 85,96 ****
String *params; /* params from the translation table */
Cardinal *numParams; /* the number of params */
{
! State state;
StateInit(&state);
if (StateGet(&state, XtDisplay(homeForm)) >= 0)
(void) StateSave(&state);
StateCleanup(&state);
}
/* ARGSUSED */
--- 85,102 ----
String *params; /* params from the translation table */
Cardinal *numParams; /* the number of params */
{
! State state;
! static Bool inProcess = False;
+ if (inProcess)
+ return;
+ inProcess = True;
StateInit(&state);
if (StateGet(&state, XtDisplay(homeForm)) >= 0)
(void) StateSave(&state);
StateCleanup(&state);
+ inProcess = False;
+ return;
}
/* ARGSUSED */
*** R4+/ICC.h Fri Jun 1 12:38:12 1990
--- ./ICC.h Fri Jun 1 12:46:08 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: ICC.h,v 3.0 89/11/20 09:24:42 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: ICC.h,v 3.1 90/06/01 12:48:35 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 29,32 ****
Window icon;
} WM_STATE;
- #define WithdrawnState 0
--- 29,31 ----
*** R4+/ICCUtils.c Fri Jun 1 12:38:12 1990
--- ./ICCUtils.c Wed May 30 10:39:12 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: ICCUtils.c,v 3.1 90/04/16 16:39:28 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: ICCUtils.c,v 3.2 90/05/30 10:41:39 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 32,38 ****
#include "Atoms.h"
#include "ICC.h"
#include "ICCUtils.h"
- #include "xdefs.h"
#include "WinInfo.h"
#include "State.h"
--- 32,37 ----
***************
*** 94,100 ****
/* do a zero length append to WM_PROTOCOLS to get a time stamp. */
XSelectInput(display, window, PropertyChangeMask);
XChangeProperty(display, window, wmProtocolsAtom, XA_ATOM, 32,
! PropModeAppend, data, 0);
for (;;) {
XtAppNextEvent(myAppContext, &event);
if (event.type == PropertyNotify && pEvent->window == window &&
--- 93,99 ----
/* do a zero length append to WM_PROTOCOLS to get a time stamp. */
XSelectInput(display, window, PropertyChangeMask);
XChangeProperty(display, window, wmProtocolsAtom, XA_ATOM, 32,
! PropModeAppend, (unsigned char *) data, 0);
for (;;) {
XtAppNextEvent(myAppContext, &event);
if (event.type == PropertyNotify && pEvent->window == window &&
***************
*** 119,127 ****
Window window; /* the window to be checked */
Atom protocol; /* protocol to check for */
{
! int i;
! Atom *protocols;
! unsigned long numProtocols;
protocols = NULL;
/* Get the WM_PROTOCOLS property on the clients top-level window. */
--- 118,126 ----
Window window; /* the window to be checked */
Atom protocol; /* protocol to check for */
{
! int i;
! Atom *protocols;
! long numProtocols;
protocols = NULL;
/* Get the WM_PROTOCOLS property on the clients top-level window. */
***************
*** 164,170 ****
XSelectInput(display, window, PropertyChangeMask);
if ((cc = XSendEvent(display, window, False, NoEventMask,
! &saveYourselfMessage)) != 1) {
Warning("SaveYourself", "XSendEvent failed to send client message.\n");
return (cc);
}
--- 163,169 ----
XSelectInput(display, window, PropertyChangeMask);
if ((cc = XSendEvent(display, window, False, NoEventMask,
! (XEvent *) &saveYourselfMessage)) != 1) {
Warning("SaveYourself", "XSendEvent failed to send client message.\n");
return (cc);
}
***************
*** 183,189 ****
State *state; /* anchor for the list of windows */
{
Window rootWindow, *childList, parentWindow;
! int childListLen;
WinInfo *wi;
int i;
--- 182,188 ----
State *state; /* anchor for the list of windows */
{
Window rootWindow, *childList, parentWindow;
! unsigned int childListLen;
WinInfo *wi;
int i;
*** R4+/Imakefile Fri Jun 1 12:38:26 1990
--- ./Imakefile Fri Jun 1 12:48:01 1990
***************
*** 1,7 ****
PROGRAMS = sm
SM_DIR = $(LIBDIR)/sm
DEFINES = -DSM_DIR=\"${SM_DIR}\"
! SYS_LIBRARIES = -lXaw -lXt -lXmu -lX11
SRCS = Actions.c Atoms.c Globals.c \
ICCUtils.c PropUtils.c SM.c \
StateMisc.c StateGet.c StateExecute.c StateRead.c \
--- 1,7 ----
PROGRAMS = sm
SM_DIR = $(LIBDIR)/sm
DEFINES = -DSM_DIR=\"${SM_DIR}\"
! LOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
SRCS = Actions.c Atoms.c Globals.c \
ICCUtils.c PropUtils.c SM.c \
StateMisc.c StateGet.c StateExecute.c StateRead.c \
*** R4+/Makefile Fri Jun 1 12:38:27 1990
--- ./Makefile Wed May 30 12:59:46 1990
***************
*** 228,234 ****
PROGRAMS = sm
SM_DIR = $(LIBDIR)/sm
DEFINES = -DSM_DIR=\"${SM_DIR}\"
! SYS_LIBRARIES = -lXaw -lXt -lXmu -lX11
SRCS = Actions.c Atoms.c Globals.c \
ICCUtils.c PropUtils.c SM.c \
StateMisc.c StateGet.c StateExecute.c StateRead.c \
--- 228,234 ----
PROGRAMS = sm
SM_DIR = $(LIBDIR)/sm
DEFINES = -DSM_DIR=\"${SM_DIR}\"
! LOCAL_LIBRARIES = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
SRCS = Actions.c Atoms.c Globals.c \
ICCUtils.c PropUtils.c SM.c \
StateMisc.c StateGet.c StateExecute.c StateRead.c \
*** R4+/PropUtils.c Fri Jun 1 12:38:14 1990
--- ./PropUtils.c Wed May 30 10:39:55 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: PropUtils.c,v 3.0 89/11/20 09:25:06 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: PropUtils.c,v 3.1 90/05/30 10:42:21 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 29,36 ****
#include <X11/Xatom.h>
#include "X11/Xutil.h"
#include "ICC.h"
- #include "xdefs.h"
- #include "PropUtils.h"
#include "Atoms.h"
/*
--- 29,34 ----
***************
*** 48,54 ****
unsigned char **windowName; /* window name(ISO Latin 1) */
unsigned char **iconName; /* icon name (ISO Latin 1) */
Pixmap *iconPixmap; /* icon pixmap */
! unsigned char ***argv; /* command line argument list */
int *argc; /* number of command line arguments */
XSizeHints *hints; /* WM_NORMAL_HINTS */
unsigned char **clientMachine; /* WM_CLIENT_MACHINE */
--- 46,52 ----
unsigned char **windowName; /* window name(ISO Latin 1) */
unsigned char **iconName; /* icon name (ISO Latin 1) */
Pixmap *iconPixmap; /* icon pixmap */
! char ***argv; /* command line argument list */
int *argc; /* number of command line arguments */
XSizeHints *hints; /* WM_NORMAL_HINTS */
unsigned char **clientMachine; /* WM_CLIENT_MACHINE */
***************
*** 65,71 ****
else {
*clientMachine = NULL;
if (textProperty.value)
! XFree(textProperty.value);
}
XGetWMNormalHints(display, window, hints, &supplied);
XGetWMName(display, window, &textProperty);
--- 63,69 ----
else {
*clientMachine = NULL;
if (textProperty.value)
! XFree((char *) textProperty.value);
}
XGetWMNormalHints(display, window, hints, &supplied);
XGetWMName(display, window, &textProperty);
***************
*** 74,80 ****
else {
*windowName = NULL;
if (textProperty.value)
! XFree(textProperty.value);
}
return (1);
}
--- 72,78 ----
else {
*windowName = NULL;
if (textProperty.value)
! XFree((char *) textProperty.value);
}
return (1);
}
*** R4+/SM.ad Fri Jun 1 12:38:26 1990
--- ./SM.ad Fri Jun 1 12:48:36 1990
***************
*** 29,54 ****
<Btn1Up>: notify()unset()saveState()\n
SM.homeForm.saveStateButton.fromHoriz: quitButton
- SM.confirmPopup.geometry: 174x80+500+400
-
SM.confirmPopup.confirmForm.borderWidth: 0
! SM.confirmPopup.confirmForm.confirmLabel.label: Save State?
! SM.confirmPopup.confirmForm.confirmLabel.borderWidth: 0
- SM.confirmPopup.confirmForm.exitYesButton.fromVert: confirmLabel
SM.confirmPopup.confirmForm.exitYesButton.label: Yes
SM.confirmPopup.confirmForm.exitYesButton.translations:#override \
<Btn1Up>: notify()unset()saveState()exit()\n
- SM.confirmPopup.confirmForm.exitNoButton.fromHoriz: exitYesButton
- SM.confirmPopup.confirmForm.exitNoButton.fromVert: confirmLabel
SM.confirmPopup.confirmForm.exitNoButton.label: No
SM.confirmPopup.confirmForm.exitNoButton.translations:#override \
<Btn1Up>: notify()unset()exit()\n
- SM.confirmPopup.confirmForm.cancelButton.fromHoriz: exitNoButton
- SM.confirmPopup.confirmForm.cancelButton.fromVert: confirmLabel
SM.confirmPopup.confirmForm.cancelButton.label: Cancel
SM.confirmPopup.confirmForm.cancelButton.translations:#override \
<Btn1Up>: notify()unset()cancel()\n
--- 29,46 ----
<Btn1Up>: notify()unset()saveState()\n
SM.homeForm.saveStateButton.fromHoriz: quitButton
SM.confirmPopup.confirmForm.borderWidth: 0
! SM.confirmPopup.confirmForm*label: Save State?
SM.confirmPopup.confirmForm.exitYesButton.label: Yes
SM.confirmPopup.confirmForm.exitYesButton.translations:#override \
<Btn1Up>: notify()unset()saveState()exit()\n
SM.confirmPopup.confirmForm.exitNoButton.label: No
SM.confirmPopup.confirmForm.exitNoButton.translations:#override \
<Btn1Up>: notify()unset()exit()\n
SM.confirmPopup.confirmForm.cancelButton.label: Cancel
SM.confirmPopup.confirmForm.cancelButton.translations:#override \
<Btn1Up>: notify()unset()cancel()\n
*** R4+/SM.h Fri Jun 1 12:38:15 1990
--- ./SM.h Wed May 30 12:01:56 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: SM.h,v 3.1 90/04/16 17:20:59 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: SM.h,v 3.4 90/05/30 12:04:22 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 56,59 ****
--- 56,61 ----
extern void Warning();
extern void PWarning();
extern void Usage();
+ #if !defined(__STDC__) && !defined(sgi)
extern char *strdup();
+ #endif
*** R4+/StateGet.c Fri Jun 1 12:38:17 1990
--- ./StateGet.c Wed May 30 10:41:44 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: StateGet.c,v 3.1 90/04/16 17:19:06 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: StateGet.c,v 3.3 90/05/30 10:44:14 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 31,39 ****
#include <X11/Xutil.h>
#include <X11/Xatom.h>
- #include "xdefs.h"
#include "Top.h"
- #include "PropUtils.h"
#include "ICCUtils.h"
#include "WinInfo.h"
#include "State.h"
--- 31,37 ----
***************
*** 122,128 ****
if (event.type == PropertyNotify && pEvent->atom == XA_WM_COMMAND) {
wi = StateGetWinInfoByRid(state, pEvent->window);
if (wi && wi->saveYourselfState == Saving) {
! if (XGetCommand(display, wi->rid, &wi->argv, &wi->argc) != 1) {
StateRemoveWinInfo(state, wi);
wiFree(wi);
}
--- 120,127 ----
if (event.type == PropertyNotify && pEvent->atom == XA_WM_COMMAND) {
wi = StateGetWinInfoByRid(state, pEvent->window);
if (wi && wi->saveYourselfState == Saving) {
! if (XGetCommand(display, wi->rid, (char ***) &wi->argv,
! &wi->argc) != 1) {
StateRemoveWinInfo(state, wi);
wiFree(wi);
}
***************
*** 130,138 ****
wi->saveYourselfState = Saved;
state->waitForCount--;
}
}
XtDispatchEvent(&event);
- XSelectInput(display, wi->rid, NoEventMask);
}
return (SM_SUCCESS);
}
--- 129,137 ----
wi->saveYourselfState = Saved;
state->waitForCount--;
}
+ XSelectInput(display, wi->rid, NoEventMask);
}
XtDispatchEvent(&event);
}
return (SM_SUCCESS);
}
***************
*** 223,235 ****
XGetWindowAttributes(display, wi->rid, &attr);
XGetWindowAttributes(display, wi->parentRid, &parentAttr);
if (XGetStandardProperties(display, wi->rid, &wmName, &wmIconName,
! &iconPixmap, &wi->argc, &wi->argv,
&wmNormalHints, &wi->wmClientMachine) != 1)
return (SM_FAILURE);
ComputeGeometry(&attr, &parentAttr, &wmNormalHints,
&wi->x, &wi->y, &wi->height, &wi->width);
if (wmIconName)
! XFree(wmIconName);
/* If the guy doesn't have a WM_COMMAND property, we can't restart him. */
if (!wi->argv != NULL || !wi->argv[0]) {
if (!wmName)
--- 222,234 ----
XGetWindowAttributes(display, wi->rid, &attr);
XGetWindowAttributes(display, wi->parentRid, &parentAttr);
if (XGetStandardProperties(display, wi->rid, &wmName, &wmIconName,
! &iconPixmap, &wi->argc, (char ***) &wi->argv,
&wmNormalHints, &wi->wmClientMachine) != 1)
return (SM_FAILURE);
ComputeGeometry(&attr, &parentAttr, &wmNormalHints,
&wi->x, &wi->y, &wi->height, &wi->width);
if (wmIconName)
! XFree((char *) wmIconName);
/* If the guy doesn't have a WM_COMMAND property, we can't restart him. */
if (!wi->argv != NULL || !wi->argv[0]) {
if (!wmName)
***************
*** 239,245 ****
wi->argc = 1;
}
if (wmName)
! XFree(wmName);
(void) XGetClassHint(display, wi->rid, &wi->wmClass);
if ( XGetWMState(display, wi->rid, &wi->wmState) != 1)
return (SM_FAILURE);
--- 238,244 ----
wi->argc = 1;
}
if (wmName)
! XFree((char *) wmName);
(void) XGetClassHint(display, wi->rid, &wi->wmClass);
if ( XGetWMState(display, wi->rid, &wi->wmState) != 1)
return (SM_FAILURE);
*** R4+/StateRead.c Fri Jun 1 12:38:23 1990
--- ./StateRead.c Fri Jun 1 12:47:00 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: StateRead.c,v 1.1 90/04/16 17:20:22 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: StateRead.c,v 1.2 90/06/01 12:49:30 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 126,132 ****
}
done:
*p = 0;
! *result = (unsigned char *) XtMalloc(p - temp + 1);
strcpy(*result, temp);
return(cc);
}
--- 126,132 ----
}
done:
*p = 0;
! *result = (unsigned char *) XtMalloc((char *) (p - temp + 1));
strcpy(*result, temp);
return(cc);
}
***************
*** 285,292 ****
--- 285,294 ----
char *file;
{
struct passwd *pw;
+ #ifndef FUNCPROTO
int endpwent();
struct passwd *getpwuid();
+ #endif
char *home;
static char path[256];
*** R4+/StateSave.c Fri Jun 1 12:38:19 1990
--- ./StateSave.c Fri Jun 1 12:47:17 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: StateSave.c,v 3.1 90/04/16 17:20:04 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: StateSave.c,v 3.2 90/06/01 12:49:49 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 31,39 ****
#include <X11/Xutil.h>
#include <X11/Xatom.h>
- #include "xdefs.h"
#include "Top.h"
- #include "PropUtils.h"
#include "ICCUtils.h"
#include "WinInfo.h"
#include "State.h"
--- 31,37 ----
*** R4+/TODO Fri Jun 1 12:38:08 1990
--- ./TODO Fri Jun 1 10:29:52 1990
***************
*** 1,3 ****
--- 1,5 ----
+ 0. Create a NullString define that is defined as ((char *) 0)
+
1. Create a better way of starting remote clients.
[If anyone has any idea or code on how to start clients on a remote machine
that is portable, please let me know. -mcw]
***************
*** 35,37 ****
--- 37,43 ----
was started by sm.
14. Implement a display state function that displays the current state.
+
+ 15. Add a resource to control the default path on the remote machine. This
+ is very important for people who use sh and its derivatives since these
+ shells won't set the path automatically when rsh is executed.
*** R4+/Top.c Fri Jun 1 12:38:19 1990
--- ./Top.c Wed May 30 10:41:11 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: Top.c,v 3.1 90/04/16 17:20:44 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: Top.c,v 3.2 90/05/30 10:43:36 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 30,36 ****
#include <X11/Shell.h>
#include <X11/Xaw/Command.h>
#include <X11/Xaw/Form.h>
! #include <X11/Vendor.h>
#include "ICC.h"
#include "Top.h"
--- 30,36 ----
#include <X11/Shell.h>
#include <X11/Xaw/Command.h>
#include <X11/Xaw/Form.h>
! #include <X11/Xaw/Dialog.h>
#include "ICC.h"
#include "Top.h"
***************
*** 72,77 ****
--- 72,86 ----
XtOffset(ApplicationDataPtr, metaChars), XtRString, "*#\"\\"},
};
+ static char *fallbackResources[] = {
+ "SM.homeForm.quitButton.translations: #override \\n <Btn1Up>: exit()",
+ "SM.homeForm.quitButton.Label: Quit",
+ "SM.homeForm.saveStateButton.sensitive: FALSE",
+ "SM.homeForm.saveStateButton.fromHoriz: quitButton",
+ "SM.homeForm.saveStateButton.Label: No app-defaults file found",
+ NULL,
+ };
+
/*
* Description: Create the top-level widgets.
*
***************
*** 110,119 ****
Widget exitNoButton;
Widget cancelButton;
! confirmPopup = XtCreatePopupShell("confirmPopup", vendorShellWidgetClass,
parent, NULL, 0);
! confirmForm = XtCreateManagedWidget("confirmForm", formWidgetClass,
confirmPopup,
NULL, 0);
--- 119,129 ----
Widget exitNoButton;
Widget cancelButton;
! confirmPopup = XtCreatePopupShell("confirmPopup",
! transientShellWidgetClass,
parent, NULL, 0);
! confirmForm = XtCreateManagedWidget("confirmForm", dialogWidgetClass,
confirmPopup,
NULL, 0);
***************
*** 153,159 ****
n = 0;
topShell = XtAppInitialize(&myAppContext, "SM",
options, XtNumber(options),
! &argc, argv, NULL, args, n);
if (argc != 1)
Usage();
XtGetApplicationResources(topShell, (XtPointer) &applData, tsResources,
--- 163,169 ----
n = 0;
topShell = XtAppInitialize(&myAppContext, "SM",
options, XtNumber(options),
! &argc, argv, fallbackResources, args, n);
if (argc != 1)
Usage();
XtGetApplicationResources(topShell, (XtPointer) &applData, tsResources,
*** R4+/Utils.c Fri Jun 1 12:38:20 1990
--- ./Utils.c Wed May 30 12:01:24 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: Utils.c,v 3.1 90/04/16 17:20:41 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: Utils.c,v 3.2 90/05/30 12:03:52 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 100,102 ****
--- 100,116 ----
return(SM_SUCCESS);
}
+ #if !defined(__STDC__) && !defined(sgi)
+ char *
+ strdup(str)
+ char *str;
+ {
+ char *dup;
+
+ dup = malloc(strlen(str) + 1);
+ if (dup == NULL)
+ return (NULL);
+ strcpy(dup, str);
+ return(dup);
+ }
+ #endif
*** R4+/WinInfo.c Fri Jun 1 12:38:21 1990
--- ./WinInfo.c Wed May 30 13:00:50 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: WinInfo.c,v 3.0 89/11/20 09:25:45 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
--- 1,6 ----
/***********************************************************
! $Header: WinInfo.c,v 3.1 90/05/30 13:03:15 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
***************
*** 64,70 ****
wiFree(winInfo)
WinInfoPtr winInfo; /* pointer to the WinInfo structure to free */
{
! XtFree(winInfo);
return (SM_SUCCESS);
}
--- 64,70 ----
wiFree(winInfo)
WinInfoPtr winInfo; /* pointer to the WinInfo structure to free */
{
! XtFree((char *) winInfo);
return (SM_SUCCESS);
}
*** R4+/osdefs.h Fri Jun 1 12:38:25 1990
--- ./osdefs.h Wed May 30 10:40:39 1990
***************
*** 1,6 ****
/***********************************************************
! $Header: osdefs.h,v 3.0 89/11/20 09:25:48 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
--- 1,6 ----
/***********************************************************
! $Header: osdefs.h,v 3.2 90/05/30 10:43:00 mikew Exp $
Copyright 1989 by Mike Wexler, Santa Clara, Ca.
***************
*** 24,36 ****
******************************************************************/
! extern int exit();
! extern int fprintf();
extern char *sprintf();
- extern int perror();
- extern int gethostname();
- extern int fclose();
- extern int getuid();
extern char *getenv();
! extern int access();
! extern int system();
--- 24,30 ----
******************************************************************/
! #ifndef FUNCPROTO
extern char *sprintf();
extern char *getenv();
! #endif
dan
----------------------------------------------------
O'Reilly && Associates argv at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.
More information about the Comp.sources.x
mailing list