--- ray/src/util/xglaresrc.c 1991/12/19 14:56:36 2.2 +++ ray/src/util/xglaresrc.c 2004/03/26 23:34:24 2.9 @@ -1,9 +1,6 @@ -/* Copyright (c) 1991 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: xglaresrc.c,v 2.9 2004/03/26 23:34:24 schorsch Exp $"; #endif - /* * Circle sources in a displayed image. * @@ -11,15 +8,13 @@ static char SCCSid[] = "$SunId$ LBL"; */ #include "standard.h" -#include "view.h" -#include "resolu.h" + +#include #include #include #include -#ifndef BSD -#define vfork fork -#endif +#include "view.h" #define XIM "ximage" @@ -42,10 +37,17 @@ Display *theDisplay = NULL; /* connection to server * GC vecGC, strGC; Window gwind; +static void init(char *pname, char *wname); +static void circle_sources(FILE *fp); +static void circle(FVECT dir, double dom); +static void value(FVECT dir, double v); -main(argc, argv) -int argc; -char *argv[]; + +int +main( + int argc, + char *argv[] +) { char *windowname = NULL; FILE *fp; @@ -84,13 +86,17 @@ char *argv[]; } -init(pname, wname) /* get view and find window */ -char *pname, *wname; +static void +init( /* get view and find window */ + char *pname, + char *wname +) { extern Window xfindwind(); XWindowAttributes wa; XColor xc; XGCValues gcv; + register int i; /* get the viewing parameters */ if (viewfile(pname, &ourview, &pres) <= 0 || setview(&ourview) != NULL) { @@ -106,18 +112,25 @@ char *pname, *wname; exit(1); } /* find our window */ - if (wname == NULL) - wname = pname; - gwind = xfindwind(theDisplay, rwind, wname, 2); + if (wname == NULL) { + /* remove directory prefix from name */ + for (i = strlen(pname); i-- > 0; ) + if (pname[i] == '/') + break; + wname = pname+i+1; + i = 0; + } else + i = 1; + gwind = xfindwind(theDisplay, rwind, wname, 4); if (gwind == None) { - if (wname != pname) { + if (i) { fprintf(stderr, "%s: cannot find \"%s\" window\n", progname, wname); exit(2); } /* start ximage */ - if (vfork() == 0) { - execlp(XIM, XIM, pname, 0); + if (fork() == 0) { + execlp(XIM, XIM, "-c", "256", pname, 0); perror(XIM); fprintf(stderr, "%s: cannot start %s\n", progname, XIM); @@ -126,7 +139,7 @@ char *pname, *wname; } do sleep(8); - while ((gwind=xfindwind(theDisplay,rwind,pname,2)) == None); + while ((gwind=xfindwind(theDisplay,rwind,wname,4)) == None); } else XMapRaised(theDisplay, gwind); do { @@ -137,7 +150,7 @@ char *pname, *wname; fprintf(stderr, "%s: warning -- window seems to be the wrong size!\n", progname); - if (pres.or & YMAJOR) { + if (pres.rt & YMAJOR) { pres.xr = wa.width; pres.yr = wa.height; } else { @@ -176,8 +189,10 @@ char *pname, *wname; } -circle_sources(fp) /* circle sources listed in fp */ -FILE *fp; +static void +circle_sources( /* circle sources listed in fp */ + FILE *fp +) { char linbuf[256]; int reading = 0; @@ -204,9 +219,11 @@ FILE *fp; } -circle(dir, dom) /* indicate a solid angle on image */ -FVECT dir; -double dom; +static void +circle( /* indicate a solid angle on image */ + FVECT dir, + double dom +) { FVECT start, cur; XPoint pt[NSEG+1]; @@ -238,9 +255,11 @@ fail: } -value(dir, v) /* print value on image */ -FVECT dir; -double v; +static void +value( /* print value on image */ + FVECT dir, + double v +) { FVECT pos; FVECT pp;