Thread: small fixes for sac

Started: 2005-10-04 16:22:28
Last activity: 2005-10-05 21:06:54
Topics: SAC Developers
Brian Savage
2005-10-04 16:22:28
All,

I have developed a patch for sac. It includes the following

- removed AddHistory form main/sac.c - not needed, replaced by libedit
- removed newstn from dff/rdhdr.c - not needed, old code
- removed code from dispatch event which segfaults during unmapnotify
destorying the window using that little [x] in the corner
resulted in a sac segfault
- added catch for WM_DELETE_WINDOW for destroying the plot window
should only close connection to X server
- changed plotw3_pixmap = NULL to = 0 for correctness in
gd3.x11/dispatcheve3.c
- inc/proto.h -- preceeded #define MIN in a #ifdef #undef #endif #define
- added catch for WM_DELETE_WINDOW for destroying the plot window
should only close connection to X server
- removed gets from utils/sgftops.c, now uses fgets()

The included file is a patch file was created using
% cvs diff -u > patch-bks-20051004
and can be applied to the current CVS version as
% cvs co SAC
.....
% ls
SAC
% patch -p0 < patch-bks-20051004

Please test and and get back to me if you experience any problems.

Cheers,
Brian Savage
savage13<at>dtm.ciw.edu
Index: SAC/inc/gd3.x11.h
===================================================================
RCS file: /export/home/cvs/repository/SAC/inc/gd3.x11.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 gd3.x11.h
--- SAC/inc/gd3.x11.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
+++ SAC/inc/gd3.x11.h 4 Oct 2005 13:03:38 -0000
@@ -70,6 +70,7 @@
int height_p;
int status;
GC gc;
+ Atom wm_delete_window;
};

point current_pt_p3;
Index: SAC/inc/proto.h
===================================================================
RCS file: /export/home/cvs/repository/SAC/inc/proto.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 proto.h
--- SAC/inc/proto.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
+++ SAC/inc/proto.h 4 Oct 2005 13:03:38 -0000
@@ -22,6 +22,9 @@
#define ichar(s) (int)(*(s))
#define maxfi(f1,f2) (long) fmax(f1,f2)
#define minfi(f1,f2) (long) fmin(f1,f2)
+#ifdef MIN
+#undef MIN
+#endif
#define MIN(f1,f2) ((f1) < (f2) ? (f1) : (f2))

void CSStoSAC () ;
Index: SAC/src/dff/rdhdr.c
===================================================================
RCS file: /export/home/cvs/repository/SAC/src/dff/rdhdr.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 rdhdr.c
--- SAC/src/dff/rdhdr.c 27 Jul 2005 18:55:04 -0000 1.1.1.1
+++ SAC/src/dff/rdhdr.c 4 Oct 2005 13:03:38 -0000
@@ -221,7 +221,7 @@

/* - Update station name if necessary. */

- newstn( kstnm, kstnm,9 );
+/* newstn( kstnm, kstnm,9 ); */

/* - Adjust reference year if necessary. */

Index: SAC/src/gd3.x11/createwindo3.c
===================================================================
RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/createwindo3.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 createwindo3.c
--- SAC/src/gd3.x11/createwindo3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
+++ SAC/src/gd3.x11/createwindo3.c 4 Oct 2005 13:03:39 -0000
@@ -51,10 +51,13 @@
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
+#include <X11/Xatom.h>
#include <X11/cursorfont.h>
#include "../../inc/gd3.x11.h"
#include "sac.bitmap"

+Atom deletewindow3(Display *display, Window win);
+
Cursor cursor;


@@ -89,7 +92,7 @@
width_p = (unsigned int) ((float) (scr_width_p3-1) * (*xmax_vp - *xmin_vp));
height_p = (unsigned int) ((float) (scr_height_p3-1) * (*ymax_vp - *ymin_vp));

-
+
/* Create title label */

make_label3("Graphics Window: ", win_num, title_label);
@@ -206,12 +209,17 @@
XSelectInput(display3,plotw3[*win_num].win,
( ExposureMask | StructureNotifyMask ));

+ plotw3[*win_num].wm_delete_window =
+ deletewindow3(display3, plotw3[*win_num].win);
+
#endif /* USE_X11_DOUBLE_BUFFER */

/* Select events will be accepted by each window */

XSelectInput(display3,basew3[*win_num].win,
(ExposureMask | StructureNotifyMask));
+ basew3[*win_num].wm_delete_window =
+ deletewindow3(display3, basew3[*win_num].win);

/* Map the windows */

@@ -247,3 +255,10 @@
#endif /* USE_X11_DOUBLE_BUFFER */
}

+Atom
+deletewindow3(Display *display, Window win) {
+ Atom wm_delete_window;
+ wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", False);
+ XSetWMProtocols(display, win, &wm_delete_window, 1);
+ return(wm_delete_window);
+}
Index: SAC/src/gd3.x11/dispatcheve3.c
===================================================================
RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/dispatcheve3.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 dispatcheve3.c
--- SAC/src/gd3.x11/dispatcheve3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
+++ SAC/src/gd3.x11/dispatcheve3.c 4 Oct 2005 13:03:39 -0000
@@ -98,8 +98,9 @@

/* Find out which window event occurred in and set index */

- while ((nevents = XPending(display3)) > 0) { /* While there is an event */
- for (n=1; n<=nevents; n++) {
+ while (display3 &&
+ (nevents = XPending(display3)) > 0){ /* While there is an event */
+ for (n=1; display3 && n<=nevents; n++) {
XNextEvent(display3,&event); /* Get next event */
index = 0;
i = 1;
@@ -125,28 +126,13 @@
while (i <= num_wins3);

/* Process each event */
-
switch (event.type) {
-
-#ifdef USE_X11_DOUBLE_BUFFER
- case DestroyNotify:
- fprintf(stderr, "DestroyNotify - Untested Code\n");
- case UnmapNotify:
- fprintf(stderr, "UnmapNotify - Untested Code\n");
- XDestroyWindow(display3, basew3[index].win);
- XDestroyWindow(display3, titlew3[index].win);
- XDestroyWindow(display3, plotw3[index].win);
- XFreeGC(display3, basew3[index].gc);
- XFreeGC(display3, titlew3[index].gc);
- XFreeGC(display3, plotw3[index].gc);
- XFreeGC(display3, cursorgc3[index]);
- XFreePixmap(display3, plotw3_pixmap);
-
- num_wins3--;
- enddevice3(nerr);
+ case ClientMessage:
+ if(event.xclient.data.l[0] == plotw3[index].wm_delete_window &&
+ is_basew == 1) {
+ enddevice(device_name3, 13, nerr);
+ }
break;
-#endif
-

case ConfigureNotify:
if (is_basew) {
@@ -160,10 +146,11 @@

#ifdef USE_X11_DOUBLE_BUFFER
XFreePixmap(display3, plotw3_pixmap);
- plotw3_pixmap = NULL;
+ plotw3_pixmap = 0;
plotw3_pixmap = XCreatePixmap(display3, basew3[index].win,
basew_info.width, basew_info.height,
- DefaultDepth(display3, DefaultScreen(display3)));
+ DefaultDepth(display3,
+ DefaultScreen(display3)));
XFillRectangle(display3, plotw3_pixmap, plotw3[index].gc,
0, 0,
basew_info.width,
@@ -420,16 +407,13 @@
break;

}
-
+
/* Reset window flags */
-
is_basew = 0;
is_plotw = 0;
is_titlew = 0;

}
-
}
-
}

Index: SAC/src/gd3.x11/enddevice3.c
===================================================================
RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/enddevice3.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 enddevice3.c
--- SAC/src/gd3.x11/enddevice3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
+++ SAC/src/gd3.x11/enddevice3.c 4 Oct 2005 13:03:39 -0000
@@ -19,6 +19,7 @@
*
*******************************************************************************/

+#include <stdio.h>
#include <X11/Xlib.h>
#include "../../inc/gd3.x11.h"

@@ -31,21 +32,20 @@
*nerr = 0;

/* Destroy window activity and set status flag */
-
c_win3 = 0;
for (i=1; i <= num_wins3; i++) {
-/* XDestroyWindow(display3,basew3[i].win);*/
+// XDestroyWindow(display3,basew3[i].win);
basew3[i].status = UNAVAILABLE;
+ plotw3[i].status = UNAVAILABLE;
}
-
+
/* Free title font */
-
+
/* XUnloadFont(display3,title_font3); */
-
+
/* Close window display */
-
XCloseDisplay(display3);
-
+ display3 = NULL;
}

/*******************************************************************************
Index: SAC/src/main/sac.c
===================================================================
RCS file: /export/home/cvs/repository/SAC/src/main/sac.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 sac.c
--- SAC/src/main/sac.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
+++ SAC/src/main/sac.c 4 Oct 2005 13:03:39 -0000
@@ -122,7 +122,7 @@
/* the main loop of the program */
while( TRUE ){
zgpmsg( kmexm.kprmt,13, kmsg,MCMSG+1 );
- strcpy(kmsg,AddToHistory(kmsg)) ;
+// strcpy(kmsg,AddToHistory(kmsg)) ;
ncmsg = indexb( kmsg,MCMSG+1 );
if( ncmsg >= MCMSG ){
setmsg( "ERROR", 99 );
Index: SAC/utils/sgftops.c
===================================================================
RCS file: /export/home/cvs/repository/SAC/utils/sgftops.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 sgftops.c
--- SAC/utils/sgftops.c 27 Jul 2005 18:55:06 -0000 1.1.1.1
+++ SAC/utils/sgftops.c 4 Oct 2005 13:03:39 -0000
@@ -270,13 +270,13 @@
printf(" Sample portrait: 0.5 0.5 0 0.75\n");
printf(" \n");
printf("\nx translation : ");
- gets(xshif);
+ fgets(xshif, 6, stdin);
printf("y translation : ");
- gets(yshif);
+ fgets(yshif, 6, stdin);
printf("rotation angle: ");
- gets(angle);
+ fgets(angle, 6, stdin);
printf("scale........ : ");
- gets(sfact);
+ fgets(sfact, 6, stdin);
fprintf(ofp, "gsave");
fprintf(ofp, "\n72 %s mul 72 %s mul translate", xshif, yshif);
fprintf(ofp, "\n%s rotate", angle);
@@ -527,7 +527,7 @@
if (buffer[i] == 32000 && scale_flag) {
printf("Scale size 32000 encountered.\n");
printf("Possible Old SGF - Scale anyway (y/n): ");
- gets(scale);
+ fgets(scale, 4, stdin);
}
if (!strncmp(scale, "n", 1) || !scale_flag) {
i++; /* don't scale */

  • Peter Goldstein
    2005-10-05 17:36:37

    Brian,

    Could you resend your patch as an attachment? My mail tool, Eudora
    like to insert most text
    attachments into the body of the message and this can cause numerous problems.
    I'll also look to see if there is an option to tell it not to do
    this. I also have to deal
    with the firewall which will bounce some attachments like zip files.
    These can get
    through if you rename the something like .piz. Compressed tar file
    .tgz don't seem to
    be a problem though.

    For the most part, your changes sound good. My only concerns are the
    removal of
    the newstn and AddHistory pieces. The newstn routine recognizes and
    updates names
    from old LLNL data. Probably not used much but it could be needed at
    some point and
    is such a small piece of code that I don't think it hurts to leave it alone.

    I also think we should leave AddToHistory for now and disable it with an #ifdef
    READLINE in case someone can't or doesn't want to use the libedit
    routines. I don't
    feel real strongly about this but think it might be prudent to leave
    it for a little while
    until we have a better feel for how the libedit works for a large audience.

    Cheers,

    Peter




    All,

    I have developed a patch for sac. It includes the following

    - removed AddHistory form main/sac.c - not needed, replaced by libedit
    - removed newstn from dff/rdhdr.c - not needed, old code
    - removed code from dispatch event which segfaults during unmapnotify
    destorying the window using that little [x] in the corner
    resulted in a sac segfault
    - added catch for WM_DELETE_WINDOW for destroying the plot window
    should only close connection to X server
    - changed plotw3_pixmap = NULL to = 0 for correctness in
    gd3.x11/dispatcheve3.c
    - inc/proto.h -- preceeded #define MIN in a #ifdef #undef #endif #define
    - added catch for WM_DELETE_WINDOW for destroying the plot window
    should only close connection to X server
    - removed gets from utils/sgftops.c, now uses fgets()

    The included file is a patch file was created using
    % cvs diff -u > patch-bks-20051004
    and can be applied to the current CVS version as
    % cvs co SAC
    .....
    % ls
    SAC
    % patch -p0 < patch-bks-20051004

    Please test and and get back to me if you experience any problems.

    Cheers,
    Brian Savage
    savage13<at>dtm.ciw.edu


    Index: SAC/inc/gd3.x11.h
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/inc/gd3.x11.h,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 gd3.x11.h
    --- SAC/inc/gd3.x11.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
    +++ SAC/inc/gd3.x11.h 4 Oct 2005 13:03:38 -0000
    @@ -70,6 +70,7 @@
    int height_p;
    int status;
    GC gc;
    + Atom wm_delete_window;
    };

    point current_pt_p3;
    Index: SAC/inc/proto.h
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/inc/proto.h,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 proto.h
    --- SAC/inc/proto.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
    +++ SAC/inc/proto.h 4 Oct 2005 13:03:38 -0000
    @@ -22,6 +22,9 @@
    #define ichar(s) (int)(*(s))
    #define maxfi(f1,f2) (long) fmax(f1,f2)
    #define minfi(f1,f2) (long) fmin(f1,f2)
    +#ifdef MIN
    +#undef MIN
    +#endif
    #define MIN(f1,f2) ((f1) < (f2) ? (f1) : (f2))

    void CSStoSAC () ;
    Index: SAC/src/dff/rdhdr.c
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/src/dff/rdhdr.c,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 rdhdr.c
    --- SAC/src/dff/rdhdr.c 27 Jul 2005 18:55:04 -0000 1.1.1.1
    +++ SAC/src/dff/rdhdr.c 4 Oct 2005 13:03:38 -0000
    @@ -221,7 +221,7 @@

    /* - Update station name if necessary. */

    - newstn( kstnm, kstnm,9 );
    +/* newstn( kstnm, kstnm,9 ); */

    /* - Adjust reference year if necessary. */

    Index: SAC/src/gd3.x11/createwindo3.c
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/createwindo3.c,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 createwindo3.c
    --- SAC/src/gd3.x11/createwindo3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
    +++ SAC/src/gd3.x11/createwindo3.c 4 Oct 2005 13:03:39 -0000
    @@ -51,10 +51,13 @@
    #include <stdio.h>
    #include <X11/Xlib.h>
    #include <X11/Xutil.h>
    +#include <X11/Xatom.h>
    #include <X11/cursorfont.h>
    #include "../../inc/gd3.x11.h"
    #include "sac.bitmap"

    +Atom deletewindow3(Display *display, Window win);
    +
    Cursor cursor;


    @@ -89,7 +92,7 @@
    width_p = (unsigned int) ((float) (scr_width_p3-1) * (*xmax_vp -
    *xmin_vp));
    height_p = (unsigned int) ((float) (scr_height_p3-1) * (*ymax_vp
    - *ymin_vp));

    -
    +
    /* Create title label */

    make_label3("Graphics Window: ", win_num, title_label);
    @@ -206,12 +209,17 @@
    XSelectInput(display3,plotw3[*win_num].win,
    ( ExposureMask | StructureNotifyMask ));

    + plotw3[*win_num].wm_delete_window =
    + deletewindow3(display3, plotw3[*win_num].win);
    +
    #endif /* USE_X11_DOUBLE_BUFFER */

    /* Select events will be accepted by each window */

    XSelectInput(display3,basew3[*win_num].win,
    (ExposureMask | StructureNotifyMask));
    + basew3[*win_num].wm_delete_window =
    + deletewindow3(display3, basew3[*win_num].win);

    /* Map the windows */

    @@ -247,3 +255,10 @@
    #endif /* USE_X11_DOUBLE_BUFFER */
    }

    +Atom
    +deletewindow3(Display *display, Window win) {
    + Atom wm_delete_window;
    + wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", False);
    + XSetWMProtocols(display, win, &wm_delete_window, 1);
    + return(wm_delete_window);
    +}
    Index: SAC/src/gd3.x11/dispatcheve3.c
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/dispatcheve3.c,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 dispatcheve3.c
    --- SAC/src/gd3.x11/dispatcheve3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
    +++ SAC/src/gd3.x11/dispatcheve3.c 4 Oct 2005 13:03:39 -0000
    @@ -98,8 +98,9 @@

    /* Find out which window event occurred in and set index */

    - while ((nevents = XPending(display3)) > 0) { /* While there is an event */
    - for (n=1; n<=nevents; n++) {
    + while (display3 &&
    + (nevents = XPending(display3)) > 0){ /* While there is an event */
    + for (n=1; display3 && n<=nevents; n++) {
    XNextEvent(display3,&event); /* Get next event */
    index = 0;
    i = 1;
    @@ -125,28 +126,13 @@
    while (i <= num_wins3);

    /* Process each event */
    -
    switch (event.type) {
    -
    -#ifdef USE_X11_DOUBLE_BUFFER
    - case DestroyNotify:
    - fprintf(stderr, "DestroyNotify - Untested Code\n");
    - case UnmapNotify:
    - fprintf(stderr, "UnmapNotify - Untested Code\n");
    - XDestroyWindow(display3, basew3[index].win);
    - XDestroyWindow(display3, titlew3[index].win);
    - XDestroyWindow(display3, plotw3[index].win);
    - XFreeGC(display3, basew3[index].gc);
    - XFreeGC(display3, titlew3[index].gc);
    - XFreeGC(display3, plotw3[index].gc);
    - XFreeGC(display3, cursorgc3[index]);
    - XFreePixmap(display3, plotw3_pixmap);
    -
    - num_wins3--;
    - enddevice3(nerr);
    + case ClientMessage:
    + if(event.xclient.data.l[0] == plotw3[index].wm_delete_window &&
    + is_basew == 1) {
    + enddevice(device_name3, 13, nerr);
    + }
    break;
    -#endif
    -

    case ConfigureNotify:
    if (is_basew) {
    @@ -160,10 +146,11 @@

    #ifdef USE_X11_DOUBLE_BUFFER
    XFreePixmap(display3, plotw3_pixmap);
    - plotw3_pixmap = NULL;
    + plotw3_pixmap = 0;
    plotw3_pixmap = XCreatePixmap(display3, basew3[index].win,
    basew_info.width, basew_info.height,
    - DefaultDepth(display3,
    DefaultScreen(display3)));
    + DefaultDepth(display3,
    +
    DefaultScreen(display3)));
    XFillRectangle(display3, plotw3_pixmap, plotw3[index].gc,
    0, 0,
    basew_info.width,
    @@ -420,16 +407,13 @@
    break;

    }
    -
    +
    /* Reset window flags */
    -
    is_basew = 0;
    is_plotw = 0;
    is_titlew = 0;

    }
    -
    }
    -
    }

    Index: SAC/src/gd3.x11/enddevice3.c
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/enddevice3.c,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 enddevice3.c
    --- SAC/src/gd3.x11/enddevice3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
    +++ SAC/src/gd3.x11/enddevice3.c 4 Oct 2005 13:03:39 -0000
    @@ -19,6 +19,7 @@
    *

    *******************************************************************************/

    +#include <stdio.h>
    #include <X11/Xlib.h>
    #include "../../inc/gd3.x11.h"

    @@ -31,21 +32,20 @@
    *nerr = 0;

    /* Destroy window activity and set status flag */
    -
    c_win3 = 0;
    for (i=1; i <= num_wins3; i++) {
    -/* XDestroyWindow(display3,basew3[i].win);*/
    +// XDestroyWindow(display3,basew3[i].win);
    basew3[i].status = UNAVAILABLE;
    + plotw3[i].status = UNAVAILABLE;
    }
    -
    +
    /* Free title font */
    -
    +
    /* XUnloadFont(display3,title_font3); */
    -
    +
    /* Close window display */
    -
    XCloseDisplay(display3);
    -
    + display3 = NULL;
    }


    /*******************************************************************************
    Index: SAC/src/main/sac.c
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/src/main/sac.c,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 sac.c
    --- SAC/src/main/sac.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
    +++ SAC/src/main/sac.c 4 Oct 2005 13:03:39 -0000
    @@ -122,7 +122,7 @@
    /* the main loop of the program */
    while( TRUE ){
    zgpmsg( kmexm.kprmt,13, kmsg,MCMSG+1 );
    - strcpy(kmsg,AddToHistory(kmsg)) ;
    +// strcpy(kmsg,AddToHistory(kmsg)) ;
    ncmsg = indexb( kmsg,MCMSG+1 );
    if( ncmsg >= MCMSG ){
    setmsg( "ERROR", 99 );
    Index: SAC/utils/sgftops.c
    ===================================================================
    RCS file: /export/home/cvs/repository/SAC/utils/sgftops.c,v
    retrieving revision 1.1.1.1
    diff -u -r1.1.1.1 sgftops.c
    --- SAC/utils/sgftops.c 27 Jul 2005 18:55:06 -0000 1.1.1.1
    +++ SAC/utils/sgftops.c 4 Oct 2005 13:03:39 -0000
    @@ -270,13 +270,13 @@
    printf(" Sample portrait: 0.5 0.5 0 0.75\n");
    printf(" \n");
    printf("\nx translation : ");
    - gets(xshif);
    + fgets(xshif, 6, stdin);
    printf("y translation : ");
    - gets(yshif);
    + fgets(yshif, 6, stdin);
    printf("rotation angle: ");
    - gets(angle);
    + fgets(angle, 6, stdin);
    printf("scale........ : ");
    - gets(sfact);
    + fgets(sfact, 6, stdin);
    fprintf(ofp, "gsave");
    fprintf(ofp, "\n72 %s mul 72 %s mul translate", xshif, yshif);
    fprintf(ofp, "\n%s rotate", angle);
    @@ -527,7 +527,7 @@
    if (buffer[i] == 32000 && scale_flag) {
    printf("Scale size 32000 encountered.\n");
    printf("Possible Old SGF - Scale anyway (y/n): ");
    - gets(scale);
    + fgets(scale, 4, stdin);
    }
    if (!strncmp(scale, "n", 1) || !scale_flag) {
    i++; /* don't scale */

    _______________________________________________
    sac-dev mailing list
    sac-dev<at>iris.washington.edu
    http://www.iris.washington.edu/mailman/listinfo/sac-dev


    --

    Peter Goldstein, Ph.D. (925) 423-1231 (office)
    L-103, PO Box 808 (925) 422-5844 (fax)
    Livermore, CA 94551 peterg<at>llnl.gov (email)
    web pages: http://earthscience.llnl.gov/peterg/
    http://www.llnl.gov/sac

    • Brian Savage
      2005-10-05 21:06:54
      Peter,

      Same patch in .tgz form.

      Thanks for input and will take these into consideration.

      newstn():
      Considering that sac will be available to the masses, I would prefer
      that this subroutine not be called as it would produce unexpected
      results to someone who does not know about the internals of the code.
      If you would like the name of the station to be changed, it is easily
      done using the change header (ch) call.

      AddHistory():
      I do agree with you on this point, I will add the #ifdef in a bit.

      Cheers,
      Brian

      Peter Goldstein wrote:

      Brian,

      Could you resend your patch as an attachment? My mail tool, Eudora like
      to insert most text
      attachments into the body of the message and this can cause numerous
      problems.
      I'll also look to see if there is an option to tell it not to do this.
      I also have to deal
      with the firewall which will bounce some attachments like zip files.
      These can get
      through if you rename the something like .piz. Compressed tar file
      .tgz don't seem to
      be a problem though.

      For the most part, your changes sound good. My only concerns are the
      removal of
      the newstn and AddHistory pieces. The newstn routine recognizes and
      updates names
      from old LLNL data. Probably not used much but it could be needed at
      some point and
      is such a small piece of code that I don't think it hurts to leave it
      alone.

      I also think we should leave AddToHistory for now and disable it with an
      #ifdef
      READLINE in case someone can't or doesn't want to use the libedit
      routines. I don't
      feel real strongly about this but think it might be prudent to leave it
      for a little while
      until we have a better feel for how the libedit works for a large audience.

      Cheers,

      Peter




      All,

      I have developed a patch for sac. It includes the following

      - removed AddHistory form main/sac.c - not needed, replaced by libedit
      - removed newstn from dff/rdhdr.c - not needed, old code
      - removed code from dispatch event which segfaults during unmapnotify
      destorying the window using that little [x] in the corner
      resulted in a sac segfault
      - added catch for WM_DELETE_WINDOW for destroying the plot window
      should only close connection to X server
      - changed plotw3_pixmap = NULL to = 0 for correctness in
      gd3.x11/dispatcheve3.c
      - inc/proto.h -- preceeded #define MIN in a #ifdef #undef #endif #define
      - added catch for WM_DELETE_WINDOW for destroying the plot window
      should only close connection to X server
      - removed gets from utils/sgftops.c, now uses fgets()

      The included file is a patch file was created using
      % cvs diff -u > patch-bks-20051004
      and can be applied to the current CVS version as
      % cvs co SAC
      .....
      % ls
      SAC
      % patch -p0 < patch-bks-20051004

      Please test and and get back to me if you experience any problems.

      Cheers,
      Brian Savage
      savage13<at>dtm.ciw.edu


      Index: SAC/inc/gd3.x11.h
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/inc/gd3.x11.h,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 gd3.x11.h
      --- SAC/inc/gd3.x11.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
      +++ SAC/inc/gd3.x11.h 4 Oct 2005 13:03:38 -0000
      @@ -70,6 +70,7 @@
      int height_p;
      int status;
      GC gc;
      + Atom wm_delete_window;
      };

      point current_pt_p3;
      Index: SAC/inc/proto.h
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/inc/proto.h,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 proto.h
      --- SAC/inc/proto.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
      +++ SAC/inc/proto.h 4 Oct 2005 13:03:38 -0000
      @@ -22,6 +22,9 @@
      #define ichar(s) (int)(*(s))
      #define maxfi(f1,f2) (long) fmax(f1,f2)
      #define minfi(f1,f2) (long) fmin(f1,f2)
      +#ifdef MIN
      +#undef MIN
      +#endif
      #define MIN(f1,f2) ((f1) < (f2) ? (f1) : (f2))

      void CSStoSAC () ;
      Index: SAC/src/dff/rdhdr.c
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/src/dff/rdhdr.c,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 rdhdr.c
      --- SAC/src/dff/rdhdr.c 27 Jul 2005 18:55:04 -0000 1.1.1.1
      +++ SAC/src/dff/rdhdr.c 4 Oct 2005 13:03:38 -0000
      @@ -221,7 +221,7 @@

      /* - Update station name if necessary. */

      - newstn( kstnm, kstnm,9 );
      +/* newstn( kstnm, kstnm,9 ); */

      /* - Adjust reference year if necessary. */

      Index: SAC/src/gd3.x11/createwindo3.c
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/createwindo3.c,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 createwindo3.c
      --- SAC/src/gd3.x11/createwindo3.c 27 Jul 2005 18:55:05 -0000
      1.1.1.1
      +++ SAC/src/gd3.x11/createwindo3.c 4 Oct 2005 13:03:39 -0000
      @@ -51,10 +51,13 @@
      #include <stdio.h>
      #include <X11/Xlib.h>
      #include <X11/Xutil.h>
      +#include <X11/Xatom.h>
      #include <X11/cursorfont.h>
      #include "../../inc/gd3.x11.h"
      #include "sac.bitmap"

      +Atom deletewindow3(Display *display, Window win);
      +
      Cursor cursor;


      @@ -89,7 +92,7 @@
      width_p = (unsigned int) ((float) (scr_width_p3-1) * (*xmax_vp -
      *xmin_vp));
      height_p = (unsigned int) ((float) (scr_height_p3-1) * (*ymax_vp -
      *ymin_vp));

      -
      + /* Create title label */

      make_label3("Graphics Window: ", win_num, title_label);
      @@ -206,12 +209,17 @@
      XSelectInput(display3,plotw3[*win_num].win,
      ( ExposureMask | StructureNotifyMask ));

      + plotw3[*win_num].wm_delete_window =
      + deletewindow3(display3, plotw3[*win_num].win);
      + #endif /* USE_X11_DOUBLE_BUFFER */

      /* Select events will be accepted by each window */

      XSelectInput(display3,basew3[*win_num].win,
      (ExposureMask | StructureNotifyMask));
      + basew3[*win_num].wm_delete_window =
      + deletewindow3(display3, basew3[*win_num].win);

      /* Map the windows */

      @@ -247,3 +255,10 @@
      #endif /* USE_X11_DOUBLE_BUFFER */
      }

      +Atom
      +deletewindow3(Display *display, Window win) {
      + Atom wm_delete_window;
      + wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", False);
      + XSetWMProtocols(display, win, &wm_delete_window, 1);
      + return(wm_delete_window);
      +}
      Index: SAC/src/gd3.x11/dispatcheve3.c
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/dispatcheve3.c,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 dispatcheve3.c
      --- SAC/src/gd3.x11/dispatcheve3.c 27 Jul 2005 18:55:05 -0000
      1.1.1.1
      +++ SAC/src/gd3.x11/dispatcheve3.c 4 Oct 2005 13:03:39 -0000
      @@ -98,8 +98,9 @@

      /* Find out which window event occurred in and set index */

      - while ((nevents = XPending(display3)) > 0) { /* While there is an
      event */
      - for (n=1; n<=nevents; n++) {
      + while (display3 &&
      + (nevents = XPending(display3)) > 0){ /* While there is an event */
      + for (n=1; display3 && n<=nevents; n++) {
      XNextEvent(display3,&event); /* Get next event */
      index = 0;
      i = 1;
      @@ -125,28 +126,13 @@
      while (i <= num_wins3);

      /* Process each event */
      -
      switch (event.type) {
      -
      -#ifdef USE_X11_DOUBLE_BUFFER
      - case DestroyNotify:
      - fprintf(stderr, "DestroyNotify - Untested Code\n");
      - case UnmapNotify:
      - fprintf(stderr, "UnmapNotify - Untested Code\n");
      - XDestroyWindow(display3, basew3[index].win);
      - XDestroyWindow(display3, titlew3[index].win);
      - XDestroyWindow(display3, plotw3[index].win);
      - XFreeGC(display3, basew3[index].gc);
      - XFreeGC(display3, titlew3[index].gc);
      - XFreeGC(display3, plotw3[index].gc);
      - XFreeGC(display3, cursorgc3[index]);
      - XFreePixmap(display3, plotw3_pixmap);
      -
      - num_wins3--;
      - enddevice3(nerr);
      + case ClientMessage:
      + if(event.xclient.data.l[0] == plotw3[index].wm_delete_window &&
      + is_basew == 1) {
      + enddevice(device_name3, 13, nerr);
      + }
      break;
      -#endif
      -

      case ConfigureNotify:
      if (is_basew) {
      @@ -160,10 +146,11 @@
      #ifdef USE_X11_DOUBLE_BUFFER
      XFreePixmap(display3, plotw3_pixmap);
      - plotw3_pixmap = NULL;
      + plotw3_pixmap = 0;
      plotw3_pixmap = XCreatePixmap(display3, basew3[index].win,
      basew_info.width, basew_info.height,
      - DefaultDepth(display3, DefaultScreen(display3)));
      + DefaultDepth(display3,
      + DefaultScreen(display3)));
      XFillRectangle(display3, plotw3_pixmap, plotw3[index].gc,
      0, 0,
      basew_info.width,
      @@ -420,16 +407,13 @@
      break;

      }
      -
      + /* Reset window flags */
      -
      is_basew = 0;
      is_plotw = 0;
      is_titlew = 0;

      }
      -
      }
      -
      }

      Index: SAC/src/gd3.x11/enddevice3.c
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/enddevice3.c,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 enddevice3.c
      --- SAC/src/gd3.x11/enddevice3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
      +++ SAC/src/gd3.x11/enddevice3.c 4 Oct 2005 13:03:39 -0000
      @@ -19,6 +19,7 @@
      *

      *******************************************************************************/


      +#include <stdio.h>
      #include <X11/Xlib.h>
      #include "../../inc/gd3.x11.h"

      @@ -31,21 +32,20 @@
      *nerr = 0;

      /* Destroy window activity and set status flag */
      -
      c_win3 = 0;
      for (i=1; i <= num_wins3; i++) {
      -/* XDestroyWindow(display3,basew3[i].win);*/
      +// XDestroyWindow(display3,basew3[i].win);
      basew3[i].status = UNAVAILABLE;
      + plotw3[i].status = UNAVAILABLE;
      }
      -
      + /* Free title font */
      -
      + /* XUnloadFont(display3,title_font3); */
      -
      + /* Close window display */
      -
      XCloseDisplay(display3);
      - + display3 = NULL;
      }


      /*******************************************************************************

      Index: SAC/src/main/sac.c
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/src/main/sac.c,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 sac.c
      --- SAC/src/main/sac.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
      +++ SAC/src/main/sac.c 4 Oct 2005 13:03:39 -0000
      @@ -122,7 +122,7 @@
      /* the main loop of the program */
      while( TRUE ){
      zgpmsg( kmexm.kprmt,13, kmsg,MCMSG+1 );
      - strcpy(kmsg,AddToHistory(kmsg)) ;
      +// strcpy(kmsg,AddToHistory(kmsg)) ;
      ncmsg = indexb( kmsg,MCMSG+1 );
      if( ncmsg >= MCMSG ){
      setmsg( "ERROR", 99 );
      Index: SAC/utils/sgftops.c
      ===================================================================
      RCS file: /export/home/cvs/repository/SAC/utils/sgftops.c,v
      retrieving revision 1.1.1.1
      diff -u -r1.1.1.1 sgftops.c
      --- SAC/utils/sgftops.c 27 Jul 2005 18:55:06 -0000 1.1.1.1
      +++ SAC/utils/sgftops.c 4 Oct 2005 13:03:39 -0000
      @@ -270,13 +270,13 @@
      printf(" Sample portrait: 0.5 0.5 0 0.75\n");
      printf(" \n");
      printf("\nx translation : ");
      - gets(xshif);
      + fgets(xshif, 6, stdin);
      printf("y translation : ");
      - gets(yshif);
      + fgets(yshif, 6, stdin);
      printf("rotation angle: ");
      - gets(angle);
      + fgets(angle, 6, stdin);
      printf("scale........ : ");
      - gets(sfact);
      + fgets(sfact, 6, stdin);
      fprintf(ofp, "gsave");
      fprintf(ofp, "\n72 %s mul 72 %s mul translate", xshif, yshif);
      fprintf(ofp, "\n%s rotate", angle);
      @@ -527,7 +527,7 @@
      if (buffer[i] == 32000 && scale_flag) {
      printf("Scale size 32000 encountered.\n");
      printf("Possible Old SGF - Scale anyway
      (y/n): ");
      - gets(scale);
      + fgets(scale, 4, stdin);
      }
      if (!strncmp(scale, "n", 1) || !scale_flag) {
      i++; /* don't scale */

      _______________________________________________
      sac-dev mailing list
      sac-dev<at>iris.washington.edu
      http://www.iris.washington.edu/mailman/listinfo/sac-dev





      • Peter Goldstein
        2005-10-05 20:33:02


        Brian,

        Thanks for resending the patch, I hope to try it this evening.

        You make some good points about newstn. I think you are right that
        it should be removed.

        Cheers,

        Peter


        At 2:06 PM -0400 10/5/05, Brian Savage wrote:
        Peter,

        Same patch in .tgz form.

        Thanks for input and will take these into consideration.

        newstn():
        Considering that sac will be available to the masses, I would prefer
        that this subroutine not be called as it would produce unexpected
        results to someone who does not know about the internals of the code.
        If you would like the name of the station to be changed, it is
        easily done using the change header (ch) call.

        AddHistory():
        I do agree with you on this point, I will add the #ifdef in a bit.

        Cheers,
        Brian

        Peter Goldstein wrote:

        Brian,

        Could you resend your patch as an attachment? My mail tool, Eudora
        like to insert most text
        attachments into the body of the message and this can cause
        numerous problems.
        I'll also look to see if there is an option to tell it not to do
        this. I also have to deal
        with the firewall which will bounce some attachments like zip
        files. These can get
        through if you rename the something like .piz. Compressed tar
        file .tgz don't seem to
        be a problem though.

        For the most part, your changes sound good. My only concerns are
        the removal of
        the newstn and AddHistory pieces. The newstn routine recognizes
        and updates names
        from old LLNL data. Probably not used much but it could be needed
        at some point and
        is such a small piece of code that I don't think it hurts to leave it alone.

        I also think we should leave AddToHistory for now and disable it
        with an #ifdef
        READLINE in case someone can't or doesn't want to use the libedit
        routines. I don't
        feel real strongly about this but think it might be prudent to
        leave it for a little while
        until we have a better feel for how the libedit works for a large audience.

        Cheers,

        Peter



        All,

        I have developed a patch for sac. It includes the following

        - removed AddHistory form main/sac.c - not needed, replaced by libedit
        - removed newstn from dff/rdhdr.c - not needed, old code
        - removed code from dispatch event which segfaults during unmapnotify
        destorying the window using that little [x] in the corner
        resulted in a sac segfault
        - added catch for WM_DELETE_WINDOW for destroying the plot window
        should only close connection to X server
        - changed plotw3_pixmap = NULL to = 0 for correctness in
        gd3.x11/dispatcheve3.c
        - inc/proto.h -- preceeded #define MIN in a #ifdef #undef #endif #define
        - added catch for WM_DELETE_WINDOW for destroying the plot window
        should only close connection to X server
        - removed gets from utils/sgftops.c, now uses fgets()

        The included file is a patch file was created using
        % cvs diff -u > patch-bks-20051004
        and can be applied to the current CVS version as
        % cvs co SAC
        .....
        % ls
        SAC
        % patch -p0 < patch-bks-20051004

        Please test and and get back to me if you experience any problems.

        Cheers,
        Brian Savage
        savage13<at>dtm.ciw.edu


        Index: SAC/inc/gd3.x11.h
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/inc/gd3.x11.h,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 gd3.x11.h
        --- SAC/inc/gd3.x11.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
        +++ SAC/inc/gd3.x11.h 4 Oct 2005 13:03:38 -0000
        @@ -70,6 +70,7 @@
        int height_p;
        int status;
        GC gc;
        + Atom wm_delete_window;
        };

        point current_pt_p3;
        Index: SAC/inc/proto.h
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/inc/proto.h,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 proto.h
        --- SAC/inc/proto.h 27 Jul 2005 18:55:03 -0000 1.1.1.1
        +++ SAC/inc/proto.h 4 Oct 2005 13:03:38 -0000
        @@ -22,6 +22,9 @@
        #define ichar(s) (int)(*(s))
        #define maxfi(f1,f2) (long) fmax(f1,f2)
        #define minfi(f1,f2) (long) fmin(f1,f2)
        +#ifdef MIN
        +#undef MIN
        +#endif
        #define MIN(f1,f2) ((f1) < (f2) ? (f1) : (f2))

        void CSStoSAC () ;
        Index: SAC/src/dff/rdhdr.c
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/src/dff/rdhdr.c,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 rdhdr.c
        --- SAC/src/dff/rdhdr.c 27 Jul 2005 18:55:04 -0000 1.1.1.1
        +++ SAC/src/dff/rdhdr.c 4 Oct 2005 13:03:38 -0000
        @@ -221,7 +221,7 @@

        /* - Update station name if necessary. */

        - newstn( kstnm, kstnm,9 );
        +/* newstn( kstnm, kstnm,9 ); */

        /* - Adjust reference year if necessary. */

        Index: SAC/src/gd3.x11/createwindo3.c
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/createwindo3.c,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 createwindo3.c
        --- SAC/src/gd3.x11/createwindo3.c 27 Jul 2005 18:55:05 -0000
        1.1.1.1
        +++ SAC/src/gd3.x11/createwindo3.c 4 Oct 2005 13:03:39 -0000
        @@ -51,10 +51,13 @@
        #include <stdio.h>
        #include <X11/Xlib.h>
        #include <X11/Xutil.h>
        +#include <X11/Xatom.h>
        #include <X11/cursorfont.h>
        #include "../../inc/gd3.x11.h"
        #include "sac.bitmap"

        +Atom deletewindow3(Display *display, Window win);
        +
        Cursor cursor;


        @@ -89,7 +92,7 @@
        width_p = (unsigned int) ((float) (scr_width_p3-1) * (*xmax_vp
        - *xmin_vp));
        height_p = (unsigned int) ((float) (scr_height_p3-1) *
        (*ymax_vp - *ymin_vp));

        -
        + /* Create title label */

        make_label3("Graphics Window: ", win_num, title_label);
        @@ -206,12 +209,17 @@
        XSelectInput(display3,plotw3[*win_num].win,
        ( ExposureMask | StructureNotifyMask ));

        + plotw3[*win_num].wm_delete_window =
        + deletewindow3(display3, plotw3[*win_num].win);
        + #endif /* USE_X11_DOUBLE_BUFFER */

        /* Select events will be accepted by each window */

        XSelectInput(display3,basew3[*win_num].win,
        (ExposureMask | StructureNotifyMask));
        + basew3[*win_num].wm_delete_window =
        + deletewindow3(display3, basew3[*win_num].win);

        /* Map the windows */

        @@ -247,3 +255,10 @@
        #endif /* USE_X11_DOUBLE_BUFFER */
        }

        +Atom
        +deletewindow3(Display *display, Window win) {
        + Atom wm_delete_window;
        + wm_delete_window = XInternAtom(display, "WM_DELETE_WINDOW", False);
        + XSetWMProtocols(display, win, &wm_delete_window, 1);
        + return(wm_delete_window);
        +}
        Index: SAC/src/gd3.x11/dispatcheve3.c
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/dispatcheve3.c,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 dispatcheve3.c
        --- SAC/src/gd3.x11/dispatcheve3.c 27 Jul 2005 18:55:05 -0000
        1.1.1.1
        +++ SAC/src/gd3.x11/dispatcheve3.c 4 Oct 2005 13:03:39 -0000
        @@ -98,8 +98,9 @@

        /* Find out which window event occurred in and set index */

        - while ((nevents = XPending(display3)) > 0) { /* While there is
        an event */
        - for (n=1; n<=nevents; n++) {
        + while (display3 &&
        + (nevents = XPending(display3)) > 0){ /* While there is an event */
        + for (n=1; display3 && n<=nevents; n++) {
        XNextEvent(display3,&event); /* Get next event */
        index = 0;
        i = 1;
        @@ -125,28 +126,13 @@
        while (i <= num_wins3);

        /* Process each event */
        -
        switch (event.type) {
        -
        -#ifdef USE_X11_DOUBLE_BUFFER
        - case DestroyNotify:
        - fprintf(stderr, "DestroyNotify - Untested Code\n");
        - case UnmapNotify:
        - fprintf(stderr, "UnmapNotify - Untested Code\n");
        - XDestroyWindow(display3, basew3[index].win);
        - XDestroyWindow(display3, titlew3[index].win);
        - XDestroyWindow(display3, plotw3[index].win);
        - XFreeGC(display3, basew3[index].gc);
        - XFreeGC(display3, titlew3[index].gc);
        - XFreeGC(display3, plotw3[index].gc);
        - XFreeGC(display3, cursorgc3[index]);
        - XFreePixmap(display3, plotw3_pixmap);
        -
        - num_wins3--;
        - enddevice3(nerr);
        + case ClientMessage:
        + if(event.xclient.data.l[0] == plotw3[index].wm_delete_window &&
        + is_basew == 1) {
        + enddevice(device_name3, 13, nerr);
        + }
        break;
        -#endif
        -

        case ConfigureNotify:
        if (is_basew) {
        @@ -160,10 +146,11 @@
        #ifdef USE_X11_DOUBLE_BUFFER
        XFreePixmap(display3, plotw3_pixmap);
        - plotw3_pixmap = NULL;
        + plotw3_pixmap = 0;
        plotw3_pixmap = XCreatePixmap(display3, basew3[index].win,
        basew_info.width, basew_info.height,
        - DefaultDepth(display3, DefaultScreen(display3)));
        + DefaultDepth(display3,
        + DefaultScreen(display3)));
        XFillRectangle(display3, plotw3_pixmap, plotw3[index].gc,
        0, 0,
        basew_info.width,
        @@ -420,16 +407,13 @@
        break;

        }
        -
        + /* Reset window flags */
        -
        is_basew = 0;
        is_plotw = 0;
        is_titlew = 0;

        }
        -
        }
        -
        }

        Index: SAC/src/gd3.x11/enddevice3.c
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/src/gd3.x11/enddevice3.c,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 enddevice3.c
        --- SAC/src/gd3.x11/enddevice3.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
        +++ SAC/src/gd3.x11/enddevice3.c 4 Oct 2005 13:03:39 -0000
        @@ -19,6 +19,7 @@
        *

        *******************************************************************************/

        +#include <stdio.h>
        #include <X11/Xlib.h>
        #include "../../inc/gd3.x11.h"

        @@ -31,21 +32,20 @@
        *nerr = 0;

        /* Destroy window activity and set status flag */
        -
        c_win3 = 0;
        for (i=1; i <= num_wins3; i++) {
        -/* XDestroyWindow(display3,basew3[i].win);*/
        +// XDestroyWindow(display3,basew3[i].win);
        basew3[i].status = UNAVAILABLE;
        + plotw3[i].status = UNAVAILABLE;
        }
        -
        + /* Free title font */
        -
        + /* XUnloadFont(display3,title_font3); */
        -
        + /* Close window display */
        -
        XCloseDisplay(display3);
        - + display3 = NULL;
        }


        /*******************************************************************************
        Index: SAC/src/main/sac.c
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/src/main/sac.c,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 sac.c
        --- SAC/src/main/sac.c 27 Jul 2005 18:55:05 -0000 1.1.1.1
        +++ SAC/src/main/sac.c 4 Oct 2005 13:03:39 -0000
        @@ -122,7 +122,7 @@
        /* the main loop of the program */
        while( TRUE ){
        zgpmsg( kmexm.kprmt,13, kmsg,MCMSG+1 );
        - strcpy(kmsg,AddToHistory(kmsg)) ;
        +// strcpy(kmsg,AddToHistory(kmsg)) ;
        ncmsg = indexb( kmsg,MCMSG+1 );
        if( ncmsg >= MCMSG ){
        setmsg( "ERROR", 99 );
        Index: SAC/utils/sgftops.c
        ===================================================================
        RCS file: /export/home/cvs/repository/SAC/utils/sgftops.c,v
        retrieving revision 1.1.1.1
        diff -u -r1.1.1.1 sgftops.c
        --- SAC/utils/sgftops.c 27 Jul 2005 18:55:06 -0000 1.1.1.1
        +++ SAC/utils/sgftops.c 4 Oct 2005 13:03:39 -0000
        @@ -270,13 +270,13 @@
        printf(" Sample portrait: 0.5 0.5 0 0.75\n");
        printf(" \n");
        printf("\nx translation : ");
        - gets(xshif);
        + fgets(xshif, 6, stdin);
        printf("y translation : ");
        - gets(yshif);
        + fgets(yshif, 6, stdin);
        printf("rotation angle: ");
        - gets(angle);
        + fgets(angle, 6, stdin);
        printf("scale........ : ");
        - gets(sfact);
        + fgets(sfact, 6, stdin);
        fprintf(ofp, "gsave");
        fprintf(ofp, "\n72 %s mul 72 %s mul translate", xshif, yshif);
        fprintf(ofp, "\n%s rotate", angle);
        @@ -527,7 +527,7 @@
        if (buffer[i] == 32000 && scale_flag) {
        printf("Scale size 32000 encountered.\n");
        printf("Possible Old SGF - Scale anyway (y/n): ");
        - gets(scale);
        + fgets(scale, 4, stdin);
        }
        if (!strncmp(scale, "n", 1) || !scale_flag) {
        i++; /* don't scale */

        _______________________________________________
        sac-dev mailing list
        sac-dev<at>iris.washington.edu
        http://www.iris.washington.edu/mailman/listinfo/sac-dev






        Attachment converted: Data:patch-bks-20051004.tgz ( / ) (00030E10)
        _______________________________________________
        sac-dev mailing list
        sac-dev<at>iris.washington.edu
        http://www.iris.washington.edu/mailman/listinfo/sac-dev


        --

        Peter Goldstein, Ph.D. (925) 423-1231 (office)
        L-103, PO Box 808 (925) 422-5844 (fax)
        Livermore, CA 94551 peterg<at>llnl.gov (email)
        web pages: http://earthscience.llnl.gov/peterg/
        http://www.llnl.gov/sac

11:51:53 v.b31bec54