[comp.sources.x] v04i004: xperfmon, Patch1

argv@island.uu.net (Dan Heller) (05/21/89)

Submitted-by: Lee Duncan <duncan@dg-rtp.dg.com>
Posting-number: Volume 4, Issue 4
Archive-name: xperfmon.patch/patch1

[ I don't know what patchlevel this is; it assumes you've had all the
  latest patches, I guess.  --argv ]

I recently got some xperfmon fixes from comp.sources.x
(article <735@island.u.net>) and applied them to our sources, since
our xperfmon wouldn't run.  After applying the listed changes,
xperfmon still wouldn't run.  So, since I had a few extra minutes, I
decided to try to figure out what was wrong.

It turns out that the C compiler on my Sun (SunOS 4.0, Sun 3/60),
for some reason, when you try to pass a char and/or char ptr as a
function param, it sometimes pukes.  So, I fixed some offending code
and surprise, xperfmon now runs.

Since I haven't heard anything about this in this group, it may be
that nobody else has had/will have this problem.  But a friend talked
me into posting these changes anyway, just in case.

So, on SunOS 4.0, if you get core dumps with an xperfmon that should work
(e.g. you've applied the changes cited above), then try this:

W. Lee Duncan, Data General, RTP     - "How can you be two places at once
UUCP: {world}!mcnc!rti!dg-rtp!duncan -  when you're really no place at all"
DOMAIN: duncan@dg-rtp.dg.com         -                Firesign Theatre

-----------------------------------------------------------------------

Files that change: xperfmon.c, and window.c:

csh> diff -c window.c orig/window.c

*** window.c	Thu May 18 09:43:26 1989
--- orig/window.c	Thu May 18 09:43:52 1989
***************
*** 801,807 ****
  }
  
  short check_win_events(ch)
! int	*ch;  /* This is intended to be a pointer to a single character */
  /* This routine returns a constant starting with WE_ defined in window.h.  It
     takes care of handling all window events and is called from 
     main_event_loop() in xperfmon.c when select is awakened from an x event. */
--- 801,807 ----
  }
  
  short check_win_events(ch)
! char *ch;  /* This is intended to be a pointer to a single character */
  /* This routine returns a constant starting with WE_ defined in window.h.  It
     takes care of handling all window events and is called from 
     main_event_loop() in xperfmon.c when select is awakened from an x event. */

csh> diff -c xperfmon.c orig/xperfmon.c

*** xperfmon.c	Thu May 18 09:43:39 1989
--- orig/xperfmon.c	Thu May 18 09:44:03 1989
***************
*** 133,139 ****
  }
  
  short handle_key(ch)
! int	ch;
  /* This routine interprets the key that was pressed on top of the window. 
     It returns TRUE if Quit has been selected, signaling that the program is
     done. */
--- 133,139 ----
  }
  
  short handle_key(ch)
! char ch;
  /* This routine interprets the key that was pressed on top of the window. 
     It returns TRUE if Quit has been selected, signaling that the program is
     done. */
***************
*** 186,192 ****
  {
    short done = FALSE;
    int nfound;
!   int	ch;
    int event_flag;
    fd_set display_fd_set;
    int *values;
--- 186,192 ----
  {
    short done = FALSE;
    int nfound;
!   char ch;
    int event_flag;
    fd_set display_fd_set;
    int *values;

-----------------------------------------------------------------------