[sac-dev] small fixes for sac

Brian Savage savage13 at dtm.ciw.edu
Wed Oct 5 11:06:54 PDT 2005


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
> 
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch-bks-20051004.tgz
Type: application/x-compressed
Size: 2652 bytes
Desc: not available
Url : http://www.iris.washington.edu/pipermail/sac-dev/attachments/20051005/f8cbc1ac/patch-bks-20051004-0001.bin


More information about the sac-dev mailing list