[sac-dev] small fixes for sac

Peter Goldstein peterg at llnl.gov
Wed Oct 5 13:33:02 PDT 2005



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


More information about the sac-dev mailing list