[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