home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume20 / xephem / patch01 < prev    next >
Encoding:
Text File  |  1993-05-31  |  72.2 KB  |  2,131 lines

  1. Newsgroups: comp.sources.x
  2. From: ecdowney@hwking.cca.cr.rockwell.com (Elwood C. Downey)
  3. Subject: v20i010:  xephem - astronomical ephemeris program, Patch01
  4. Message-ID: <1993Jun1.234850.18206@sparky.imd.sterling.com>
  5. X-Md4-Signature: ae609a630bd522121d423c4be56c2610
  6. Sender: chris@sparky.imd.sterling.com (Chris Olson)
  7. Organization: Sterling Software
  8. Date: Tue, 1 Jun 1993 23:48:50 GMT
  9. Approved: chris@sparky.imd.sterling.com
  10.  
  11. Submitted-by: ecdowney@hwking.cca.cr.rockwell.com (Elwood C. Downey)
  12. Posting-number: Volume 20, Issue 10
  13. Archive-name: xephem/patch01
  14. Environment: X11
  15. Patch-To: xephem: Volume 19, Issue 90-110
  16.  
  17. Hello all;
  18.  
  19. Please find attached a patch for my interactive astronomical ephemeris
  20. program for X Windows, xephem. It will bring it from v2.4b to v2.4e.
  21.  
  22. This patch makes few changes in functionality. Most changes merely increase
  23. portability, particularly to VMS, OSF/1 and Motif 1.2. It does fix a bug
  24. that causes a segmentation fault if you select "Sky Mark" from the ObjX/Y
  25. menu before the Sky View menu was ever posted and one that prevents listing
  26. rise, set or transit times while looping. The only added functionality is
  27. the display of the constellation name during cursor tracking in the Sky View
  28. menu.
  29.  
  30. Thank you.
  31.  
  32. Elwood Downey, ecdowney@pobox.cca.cr.rockwell.com
  33.  
  34. ------------------------patch--------------------------------------------------
  35. #! /bin/sh
  36. # This is a shell archive.  Remove anything before this line, then feed it
  37. # into a shell via "sh file" or similar.  To overwrite existing files,
  38. # type "sh file -c".
  39. # Contents:  xephem.p1
  40. # Wrapped by chris@sparky on Tue Jun  1 18:43:14 1993
  41. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  42. echo If this archive is complete, you will see the following message:
  43. echo '          "shar: End of archive."'
  44. if test -f 'xephem.p1' -a "${1}" != "-c" ; then 
  45.   echo shar: Will not clobber existing file \"'xephem.p1'\"
  46. else
  47.   echo shar: Extracting \"'xephem.p1'\" \(69363 characters\)
  48.   sed "s/^X//" >'xephem.p1' <<'END_OF_FILE'
  49. Xdiff -c v2.4b/Makefile.simple v2.4e/Makefile.simple
  50. X*** v2.4b/Makefile.simple    Tue Jun  1 14:30:20 1993
  51. X--- v2.4e/Makefile.simple    Tue Jun  1 10:23:00 1993
  52. X***************
  53. X*** 1,4 ****
  54. X! # Simple Makefile for xephem v2.4b.
  55. X  # We include sample compile and link flags for a few popular systems.
  56. X  
  57. X  # "stock" X systems
  58. X--- 1,4 ----
  59. X! # Simple Makefile for xephem v2.4e.
  60. X  # We include sample compile and link flags for a few popular systems.
  61. X  
  62. X  # "stock" X systems
  63. Xdiff -c v2.4b/README v2.4e/README
  64. X*** v2.4b/README    Tue Jun  1 14:31:30 1993
  65. X--- v2.4e/README    Tue Jun  1 14:24:00 1993
  66. X***************
  67. X*** 35,50 ****
  68. X  
  69. X      If not, there is also a Makefile.simple.
  70. X  
  71. X!     atof() can be somewhat problematic. It was historically declared to be
  72. X!     double in math.h. More contemporary systems declare it only in stdlib.h.
  73. X!     Xephem includes stdlib.h if __STDC__ is defined, else it assumes atof()
  74. X!     is declared in math.h.  This should work pretty well but if you get
  75. X!     crazy numbers from xephem check the files that use atof and figure out a
  76. X!     way to get it declared to return a double. Atof() is called in compiler.c,
  77. X!     db.c, formats.c, mainmenu.c and satmenu.c.
  78. X  
  79. X-     Also, on some systems (such as SVR3.2) compile with -D_NO_PROTO and -DSYSV.
  80. X- 
  81. X      I have searched carefully through the output of running all of xephem
  82. X      through lint and gcc on Ultrix and SVR4 and can rationalize all the
  83. X      warnings so don't let these bother you.
  84. X--- 35,42 ----
  85. X  
  86. X      If not, there is also a Makefile.simple.
  87. X  
  88. X!     On some systems (such as SVR3.2) compile with -D_NO_PROTO and -DSYSV.
  89. X  
  90. X      I have searched carefully through the output of running all of xephem
  91. X      through lint and gcc on Ultrix and SVR4 and can rationalize all the
  92. X      warnings so don't let these bother you.
  93. X***************
  94. X*** 80,86 ****
  95. X      to run on the following configurations:
  96. X  
  97. X  
  98. X! xephem v2.4b is known to run on the following systems; check with the author
  99. X  for availability of statically linked binary executables.
  100. X  
  101. X      OS                      CPU                     X
  102. X--- 72,78 ----
  103. X      to run on the following configurations:
  104. X  
  105. X  
  106. X! xephem v2.4e is known to run on the following systems; check with the author
  107. X  for availability of statically linked binary executables.
  108. X  
  109. X      OS                      CPU                     X
  110. X***************
  111. X*** 88,99 ****
  112. X      SVR3.2/Venix            i486                    Metrolink X11R4/Motif 1.1.3
  113. X      SVR4.0.3/Consensys      i486                    MIT X11R5/Motif 1.1.4
  114. X      Ultrix 4.2              DECstation 5000         DEC's (?)
  115. X!     SunOS 4.1.2             Sun 4c                  TeleUSE development system
  116. X      hpux 8.07               HP 9000/720             X11R4, Motif 1.1.?
  117. X      IRIX 4.0.5              SGI                     X11R4
  118. X      OSF/1 1.2               DEC Alpha               X11R5, Motif 1.1.3
  119. X  
  120. X  
  121. X  If you would like to gut xephem for just its astronomical functionality, start
  122. X  with obj_cir(). This is basically the dividing line between the user interface
  123. X  and the astronomical functions. Also, the following files are pretty much just
  124. X--- 80,97 ----
  125. X      SVR3.2/Venix            i486                    Metrolink X11R4/Motif 1.1.3
  126. X      SVR4.0.3/Consensys      i486                    MIT X11R5/Motif 1.1.4
  127. X      Ultrix 4.2              DECstation 5000         DEC's (?)
  128. X!     SunOS 4.1.2             Sun 4c                  TeleUSE development system*
  129. X      hpux 8.07               HP 9000/720             X11R4, Motif 1.1.?
  130. X      IRIX 4.0.5              SGI                     X11R4
  131. X      OSF/1 1.2               DEC Alpha               X11R5, Motif 1.1.3
  132. X+     AIXv3.2                 IBM RS/6000             AIXwindows
  133. X+     VMS                     VAX                     DECwindows
  134. X+     SCO v3.2                i486                    ODT 2.0
  135. X+     Linux                   i486                    MetroLink
  136. X  
  137. X+ *  requires Sun's X server patch 100444-35.
  138. X  
  139. X+ 
  140. X  If you would like to gut xephem for just its astronomical functionality, start
  141. X  with obj_cir(). This is basically the dividing line between the user interface
  142. X  and the astronomical functions. Also, the following files are pretty much just
  143. X***************
  144. X*** 149,171 ****
  145. X  
  146. X  ecdowney@pobox.cca.cr.rockwell.com
  147. X  
  148. X! April 21, 1993
  149. X  
  150. X! The following (untested!) DCL file will build xephem for VMS/DECwindows MOTIF;
  151. X! based on an earlier version by Ethan VanMatre:
  152. X  
  153. X  $!
  154. X  $!    Makefile.com -- Command file to compile and link Xephem
  155. X  $!
  156. X- $!
  157. X  $!    A simple minded command file to compile and link Xephem under VAX/VMS
  158. X  $!    and DECwindows MOTIF 
  159. X  $!
  160. X! $!    when        who            what
  161. X  $!
  162. X! $!    2-feb-1992    Ethan VanMatre        original from unix makefile
  163. X  $!
  164. X! $
  165. X  $ cc    aa_hadec/opt/obj
  166. X  $ cc    anomaly    /opt/obj
  167. X  $ cc    cal_mjd    /opt/obj
  168. X--- 147,176 ----
  169. X  
  170. X  ecdowney@pobox.cca.cr.rockwell.com
  171. X  
  172. X! June 1, 1993
  173. X  
  174. X! The following DCL file, courtesy fisica@astrpd.DNET.NASA.GOV (Max Calvani -
  175. X! Italy) will build xephem for VMS/DECwindows MOTIF. In addition,
  176. X! drucker@Csa2.LBL.Gov (Bob Drucker, Berkeley/LBL) writes:
  177. X  
  178. X+     For VMS users the default settings file can be pointed to in one of
  179. X+     two ways.  The default name for the resource file on VMS is
  180. X+     SYS$LOGIN:DECW$XDEFAULTS.DAT.  If you don't wish to use this
  181. X+     you can define the logical XENVIRONMENT to point to the file (this
  182. X+     allows you to keep the file anywhere you want with any name).
  183. X+ 
  184. X  $!
  185. X  $!    Makefile.com -- Command file to compile and link Xephem
  186. X  $!
  187. X  $!    A simple minded command file to compile and link Xephem under VAX/VMS
  188. X  $!    and DECwindows MOTIF 
  189. X  $!
  190. X! $!      when            who                     what
  191. X  $!
  192. X! $!      2-feb-1992      Ethan VanMatre          original from unix makefile
  193. X! $!      13-mar-1993    Max Calvani        updated for xephem v2.4.
  194. X  $!
  195. X! $ set ver
  196. X  $ cc    aa_hadec/opt/obj
  197. X  $ cc    anomaly    /opt/obj
  198. X  $ cc    cal_mjd    /opt/obj
  199. X***************
  200. X*** 186,191 ****
  201. X--- 191,197 ----
  202. X  $ cc    listmenu/opt/obj
  203. X  $ cc    mainmenu/opt/obj
  204. X  $ cc    marsmenu/opt/obj
  205. X+ $ cc    marsmap/opt/obj
  206. X  $ cc    misc    /opt/obj
  207. X  $ cc    moon    /opt/obj
  208. X  $ cc    moonmenu/opt/obj
  209. X***************
  210. X*** 200,211 ****
  211. X  $ cc    plot_aux/opt/obj
  212. X  $ cc    plotmenu/opt/obj
  213. X  $ cc    precess    /opt/obj
  214. X  $ cc    query    /opt/obj
  215. X  $ cc    reduce    /opt/obj
  216. X  $ cc    refract    /opt/obj
  217. X  $ cc    riset    /opt/obj
  218. X  $ cc    riset_cir/opt/obj
  219. X- $ cc    risetmenu/opt/obj
  220. X  $ cc    satmenu    /opt/obj
  221. X  $ cc    sex_dec    /opt/obj
  222. X  $ cc    skyfiltmenu/opt/obj
  223. X--- 206,217 ----
  224. X  $ cc    plot_aux/opt/obj
  225. X  $ cc    plotmenu/opt/obj
  226. X  $ cc    precess    /opt/obj
  227. X+ $ cc    preferences/opt/obj
  228. X  $ cc    query    /opt/obj
  229. X  $ cc    reduce    /opt/obj
  230. X  $ cc    refract    /opt/obj
  231. X  $ cc    riset    /opt/obj
  232. X  $ cc    riset_cir/opt/obj
  233. X  $ cc    satmenu    /opt/obj
  234. X  $ cc    sex_dec    /opt/obj
  235. X  $ cc    skyfiltmenu/opt/obj
  236. X***************
  237. X*** 239,244 ****
  238. X--- 245,251 ----
  239. X      listmenu.obj,    -
  240. X      mainmenu.obj,    -
  241. X      marsmenu.obj,    -
  242. X+         marsmap.obj,    -
  243. X      misc.obj,    -
  244. X      moon.obj,    -
  245. X      moonmenu.obj,    -
  246. X***************
  247. X*** 253,264 ****
  248. X      plot_aux.obj,    -
  249. X      plotmenu.obj,    -
  250. X      precess.obj,    -
  251. X      query.obj,    -
  252. X      reduce.obj,    -
  253. X      refract.obj,    -
  254. X      riset.obj,    -
  255. X      riset_cir.obj,    -
  256. X-     risetmenu.obj,    -
  257. X      satmenu.obj,    -
  258. X      sex_dec.obj,    -
  259. X      skyfiltmenu.obj,    -
  260. X--- 260,271 ----
  261. X      plot_aux.obj,    -
  262. X      plotmenu.obj,    -
  263. X      precess.obj,    -
  264. X+         preferences.obj, -
  265. X      query.obj,    -
  266. X      reduce.obj,    -
  267. X      refract.obj,    -
  268. X      riset.obj,    -
  269. X      riset_cir.obj,    -
  270. X      satmenu.obj,    -
  271. X      sex_dec.obj,    -
  272. X      skyfiltmenu.obj,    -
  273. X***************
  274. X*** 278,280 ****
  275. X--- 285,288 ----
  276. X  $!clean:
  277. X  $    purge
  278. X  $!
  279. X+ $ set nover
  280. Xdiff -c v2.4b/XEphem.ad v2.4e/XEphem.ad
  281. X*** v2.4b/XEphem.ad    Tue Jun  1 14:30:43 1993
  282. X--- v2.4e/XEphem.ad    Wed May 19 13:59:45 1993
  283. X***************
  284. X*** 168,173 ****
  285. X--- 168,176 ----
  286. X  XEphem*SkyFilter*SymbolDA.foreground: snow
  287. X  XEphem*SkyFilter*SymbolDA.background: #00004a
  288. X  
  289. X+ ! set the width of the symbol boxes in the Sky view Filter menu.
  290. X+ XEphem*SkyFilter*SymbolDA.width: 20
  291. X+ 
  292. X  ! initial types of object to display in Sky View
  293. X  XEphem*SkyFilter*Planets.set: True
  294. X  XEphem*SkyFilter*Elliptical.set: True
  295. Xdiff -c v2.4b/compiler.c v2.4e/compiler.c
  296. X*** v2.4b/compiler.c    Tue Jun  1 14:30:14 1993
  297. X--- v2.4e/compiler.c    Tue May 18 09:36:50 1993
  298. X***************
  299. X*** 27,32 ****
  300. X--- 27,34 ----
  301. X  #define P_(s) ()
  302. X  #endif
  303. X  
  304. X+ extern double atod P_((char *buf));
  305. X+ 
  306. X  int compile_expr P_((char *ex, char *errbuf));
  307. X  int execute_expr P_((double *vp, char *errbuf));
  308. X  int prog_isgood P_((void));
  309. X***************
  310. X*** 276,282 ****
  311. X          (void) sprintf (err_msg, toomc, MAX_OPX);
  312. X          return (ERR);
  313. X          }
  314. X!         consts[nconsts] = atof (lcexpr);
  315. X          tok = CONST | (nconsts++ << OP_SHIFT);
  316. X          skip_double();
  317. X      } else if (isalpha(c)) {
  318. X--- 278,284 ----
  319. X          (void) sprintf (err_msg, toomc, MAX_OPX);
  320. X          return (ERR);
  321. X          }
  322. X!         consts[nconsts] = atod (lcexpr);
  323. X          tok = CONST | (nconsts++ << OP_SHIFT);
  324. X          skip_double();
  325. X      } else if (isalpha(c)) {
  326. Xdiff -c v2.4b/datamenu.c v2.4e/datamenu.c
  327. X*** v2.4b/datamenu.c    Tue Jun  1 14:31:45 1993
  328. X--- v2.4e/datamenu.c    Tue Jun  1 10:54:35 1993
  329. X***************
  330. X*** 40,45 ****
  331. X--- 40,46 ----
  332. X  extern void f_ra P_((Widget w, double ra));
  333. X  extern void f_showit P_((Widget w, char *s));
  334. X  extern void f_string P_((Widget w, char *s));
  335. X+ extern void field_log P_((Widget w, double value, int logv, char *str));
  336. X  extern void get_something P_((Widget w, char *resource, char *value));
  337. X  extern void get_xmstring P_((Widget w, char *resource, char **txtp));
  338. X  extern void hlp_dialog P_((char *tag, char *deflt[], int ndeflt));
  339. X***************
  340. X*** 66,72 ****
  341. X  static void dm_help_cb P_((Widget w, XtPointer client, XtPointer call));
  342. X  static void dm_compute P_((int r, int force, Now *np));
  343. X  static void dm_format P_((Now *np, Obj *op, RiseSet *rp, int c, Widget w));
  344. X! static void dm_rs_addplus P_((Widget w, int addplus));
  345. X  static void dm_rs_hrsup P_((Widget w, RiseSet *rp));
  346. X  static void show_constellation P_((Now *np, Obj *op, Widget w));
  347. X  static void dm_separation P_((Obj *p, Obj *q, int how, Widget w));
  348. X--- 67,73 ----
  349. X  static void dm_help_cb P_((Widget w, XtPointer client, XtPointer call));
  350. X  static void dm_compute P_((int r, int force, Now *np));
  351. X  static void dm_format P_((Now *np, Obj *op, RiseSet *rp, int c, Widget w));
  352. X! static void dm_rs_addplus P_((Widget w, double tm, int addplus));
  353. X  static void dm_rs_hrsup P_((Widget w, RiseSet *rp));
  354. X  static void show_constellation P_((Now *np, Obj *op, Widget w));
  355. X  static void dm_separation P_((Obj *p, Obj *q, int how, Widget w));
  356. X***************
  357. X*** 844,853 ****
  358. X          f_string (w, "NvrUp ");
  359. X          else if (rp->rs_flags & RS_NORISE)
  360. X          f_string (w, "NoRise");
  361. X!         else {
  362. X!         f_mtime (w, rp->rs_risetm);    /* 5 chars wide */
  363. X!         dm_rs_addplus (w, rp->rs_flags & RS_2RISES);    /* adds 1 */
  364. X!         }
  365. X          break;
  366. X  
  367. X      case RSAZ_ID:
  368. X--- 845,852 ----
  369. X          f_string (w, "NvrUp ");
  370. X          else if (rp->rs_flags & RS_NORISE)
  371. X          f_string (w, "NoRise");
  372. X!         else
  373. X!         dm_rs_addplus (w, rp->rs_risetm, rp->rs_flags & RS_2RISES);
  374. X          break;
  375. X  
  376. X      case RSAZ_ID:
  377. X***************
  378. X*** 872,881 ****
  379. X          f_string (w, "NvrUp ");
  380. X          else if (rp->rs_flags & RS_NOSET)
  381. X          f_string (w, "NoSet ");
  382. X!         else {
  383. X!         f_mtime (w, rp->rs_settm);    /* 5 chars wide */
  384. X!         dm_rs_addplus (w, rp->rs_flags & RS_2SETS);    /* adds 1 */
  385. X!         }
  386. X          break;
  387. X  
  388. X      case SETAZ_ID:
  389. X--- 871,878 ----
  390. X          f_string (w, "NvrUp ");
  391. X          else if (rp->rs_flags & RS_NOSET)
  392. X          f_string (w, "NoSet ");
  393. X!         else
  394. X!         dm_rs_addplus (w, rp->rs_settm, rp->rs_flags & RS_2SETS);
  395. X          break;
  396. X  
  397. X      case SETAZ_ID:
  398. X***************
  399. X*** 898,907 ****
  400. X          f_string (w, "NvrUp ");
  401. X          else if (rp->rs_flags & RS_NOTRANS)
  402. X          f_string (w, "NoTran");
  403. X!         else {
  404. X!         f_mtime (w, rp->rs_trantm);    /* 5 chars wide */
  405. X!         dm_rs_addplus (w, rp->rs_flags & RS_2TRANS);    /* adds 1 */
  406. X!         }
  407. X          break;
  408. X  
  409. X      case TRALT_ID:
  410. X--- 895,902 ----
  411. X          f_string (w, "NvrUp ");
  412. X          else if (rp->rs_flags & RS_NOTRANS)
  413. X          f_string (w, "NoTran");
  414. X!         else
  415. X!         dm_rs_addplus (w, rp->rs_trantm, rp->rs_flags & RS_2TRANS);
  416. X          break;
  417. X  
  418. X      case TRALT_ID:
  419. X***************
  420. X*** 939,957 ****
  421. X      }
  422. X  }
  423. X  
  424. X  static void
  425. X! dm_rs_addplus (w, addplus)
  426. X  Widget w;
  427. X  int addplus;
  428. X  {
  429. X!     char *orig, *new;
  430. X  
  431. X!     get_xmstring (w, XmNlabelString, &orig);
  432. X!     new = XtMalloc(strlen(orig)+2); /* '+' plus the '\0' */
  433. X!     (void) sprintf (new, addplus ? "%s+" : "%s ", orig);
  434. X!     f_string (w, new);
  435. X!     XtFree (orig);
  436. X!     XtFree (new);
  437. X  }
  438. X  
  439. X  /* display the total hours this object has been up.
  440. X--- 934,955 ----
  441. X      }
  442. X  }
  443. X  
  444. X+ /* display the rise/set/transit time tm (in hours) in widget w.
  445. X+  * if addplus is != 0 then add a '+' to the time string.
  446. X+  * N.B. be sure the total string length is the same regardless of addplus.
  447. X+  */
  448. X  static void
  449. X! dm_rs_addplus (w, tm, addplus)
  450. X  Widget w;
  451. X+ double tm;
  452. X  int addplus;
  453. X  {
  454. X!     char str[32];
  455. X  
  456. X!     fs_mtime (str, tm);                /* 5 chars: "hh:mm" */
  457. X!     (void) strcat (str, addplus ? "+" : " ");    /* always add 1 */
  458. X!     field_log (w, tm, 1, str);
  459. X!     f_showit (w, str);
  460. X  }
  461. X  
  462. X  /* display the total hours this object has been up.
  463. X***************
  464. X*** 973,980 ****
  465. X          return;
  466. X      }
  467. X      if (rp->rs_flags & RS_NEVERUP) {
  468. X!         f_mtime (w, 0.0);        /* 5 chars wide */
  469. X!         dm_rs_addplus(w, 0);    /* adds 1 */
  470. X          return;
  471. X      }
  472. X  
  473. X--- 971,977 ----
  474. X          return;
  475. X      }
  476. X      if (rp->rs_flags & RS_NEVERUP) {
  477. X!         dm_rs_addplus (w, 0.0, 0);
  478. X          return;
  479. X      }
  480. X  
  481. X***************
  482. X*** 983,990 ****
  483. X      hrs = s - r;
  484. X      if (hrs < 0)
  485. X          hrs += 24.0;
  486. X!     f_mtime (w, hrs);    /* 5 chars wide */
  487. X!     dm_rs_addplus(w, rp->rs_flags&(RS_NORISE|RS_NOSET|RS_2RISES|RS_2SETS));
  488. X  }
  489. X  
  490. X  static void
  491. X--- 980,986 ----
  492. X      hrs = s - r;
  493. X      if (hrs < 0)
  494. X          hrs += 24.0;
  495. X!     dm_rs_addplus(w, hrs, rp->rs_flags&(RS_NORISE|RS_NOSET|RS_2RISES|RS_2SETS));
  496. X  }
  497. X  
  498. X  static void
  499. Xdiff -c v2.4b/db.c v2.4e/db.c
  500. X*** v2.4b/db.c    Tue Jun  1 14:30:16 1993
  501. X--- v2.4e/db.c    Thu May 20 12:51:21 1993
  502. X***************
  503. X*** 3,14 ****
  504. X  
  505. X  #include <stdio.h>
  506. X  #include <ctype.h>
  507. X- #include <malloc.h>
  508. X  #include <math.h>
  509. X  #if defined(__STDC__)
  510. X  #include <stdlib.h>
  511. X  #include <string.h>
  512. X  #endif
  513. X  #include "astro.h"
  514. X  #include "circum.h"
  515. X  #include "preferences.h"
  516. X--- 3,17 ----
  517. X  
  518. X  #include <stdio.h>
  519. X  #include <ctype.h>
  520. X  #include <math.h>
  521. X+ 
  522. X  #if defined(__STDC__)
  523. X  #include <stdlib.h>
  524. X  #include <string.h>
  525. X+ #else
  526. X+ extern void *malloc(), *realloc();
  527. X  #endif
  528. X+ 
  529. X  #include "astro.h"
  530. X  #include "circum.h"
  531. X  #include "preferences.h"
  532. X***************
  533. X*** 20,25 ****
  534. X--- 23,29 ----
  535. X  #define P_(s) ()
  536. X  #endif
  537. X  
  538. X+ extern double atod P_((char *buf));
  539. X  extern Now *mm_get_now P_((void));
  540. X  extern int obj_cir P_((Now *np, Obj *op));
  541. X  extern void cal_mjd P_((int mn, double dy, int yr, double *Mjd));
  542. X***************
  543. X*** 332,341 ****
  544. X          break;
  545. X      }
  546. X      case F_MAG:
  547. X!         op->f_mag = atof (bp) * MAGSCALE;
  548. X          break;
  549. X      case F_SIZE:
  550. X!         op->f_size = atof (bp);
  551. X          break;
  552. X      case F_EPOCH: {
  553. X          double fepoch;
  554. X--- 336,345 ----
  555. X          break;
  556. X      }
  557. X      case F_MAG:
  558. X!         op->f_mag = atod (bp) * MAGSCALE;
  559. X          break;
  560. X      case F_SIZE:
  561. X!         op->f_size = atod (bp);
  562. X          break;
  563. X      case F_EPOCH: {
  564. X          double fepoch;
  565. X***************
  566. X*** 365,389 ****
  567. X      }
  568. X  
  569. X      case E_INC:
  570. X!         op->e_inc = atof (bp);
  571. X          break;
  572. X      case E_LAN:
  573. X!         op->e_Om = atof (bp);
  574. X          break;
  575. X      case E_AOP:
  576. X!         op->e_om = atof (bp);
  577. X          break;
  578. X      case E_A:
  579. X!         op->e_a = atof (bp);
  580. X          break;
  581. X      case E_N:
  582. X!         op->e_n = atof (bp);
  583. X          break;
  584. X      case E_E:
  585. X!         op->e_e = atof (bp);
  586. X          break;
  587. X      case E_M:
  588. X!         op->e_M = atof (bp);
  589. X          break;
  590. X      case E_CEPOCH:
  591. X          crack_year (bp, pref, &op->e_cepoch);
  592. X--- 369,393 ----
  593. X      }
  594. X  
  595. X      case E_INC:
  596. X!         op->e_inc = atod (bp);
  597. X          break;
  598. X      case E_LAN:
  599. X!         op->e_Om = atod (bp);
  600. X          break;
  601. X      case E_AOP:
  602. X!         op->e_om = atod (bp);
  603. X          break;
  604. X      case E_A:
  605. X!         op->e_a = atod (bp);
  606. X          break;
  607. X      case E_N:
  608. X!         op->e_n = atod (bp);
  609. X          break;
  610. X      case E_E:
  611. X!         op->e_e = atod (bp);
  612. X          break;
  613. X      case E_M:
  614. X!         op->e_M = atod (bp);
  615. X          break;
  616. X      case E_CEPOCH:
  617. X          crack_year (bp, pref, &op->e_cepoch);
  618. X***************
  619. X*** 405,411 ****
  620. X          /* leave type unchanged if no or unrecognized prefix */
  621. X          break;
  622. X          }
  623. X!         op->e_mag.m1 = atof(bp);
  624. X          break;
  625. X      case E_M2:
  626. X          switch (bp[0]) {
  627. X--- 409,415 ----
  628. X          /* leave type unchanged if no or unrecognized prefix */
  629. X          break;
  630. X          }
  631. X!         op->e_mag.m1 = atod(bp);
  632. X          break;
  633. X      case E_M2:
  634. X          switch (bp[0]) {
  635. X***************
  636. X*** 421,430 ****
  637. X          /* leave type unchanged if no or unrecognized prefix */
  638. X          break;
  639. X          }
  640. X!         op->e_mag.m2 = atof(bp);
  641. X          break;
  642. X      case E_SIZE:
  643. X!         op->e_size = atof (bp);
  644. X          break;
  645. X  
  646. X      case H_EP:
  647. X--- 425,434 ----
  648. X          /* leave type unchanged if no or unrecognized prefix */
  649. X          break;
  650. X          }
  651. X!         op->e_mag.m2 = atod(bp);
  652. X          break;
  653. X      case E_SIZE:
  654. X!         op->e_size = atod (bp);
  655. X          break;
  656. X  
  657. X      case H_EP:
  658. X***************
  659. X*** 431,461 ****
  660. X          crack_year (bp, pref, &op->h_ep);
  661. X          break;
  662. X      case H_INC:
  663. X!         op->h_inc = atof (bp);
  664. X          break;
  665. X      case H_LAN:
  666. X!         op->h_Om = atof (bp);
  667. X          break;
  668. X      case H_AOP:
  669. X!         op->h_om = atof (bp);
  670. X          break;
  671. X      case H_E:
  672. X!         op->h_e = atof (bp);
  673. X          break;
  674. X      case H_QP:
  675. X!         op->h_qp = atof (bp);
  676. X          break;
  677. X      case H_EPOCH:
  678. X          crack_year (bp, pref, &op->h_epoch);
  679. X          break;
  680. X      case H_G:
  681. X!         op->h_g = atof (bp);
  682. X          break;
  683. X      case H_K:
  684. X!         op->h_k = atof (bp);
  685. X          break;
  686. X      case H_SIZE:
  687. X!         op->h_size = atof (bp);
  688. X          break;
  689. X  
  690. X      case P_EP:
  691. X--- 435,465 ----
  692. X          crack_year (bp, pref, &op->h_ep);
  693. X          break;
  694. X      case H_INC:
  695. X!         op->h_inc = atod (bp);
  696. X          break;
  697. X      case H_LAN:
  698. X!         op->h_Om = atod (bp);
  699. X          break;
  700. X      case H_AOP:
  701. X!         op->h_om = atod (bp);
  702. X          break;
  703. X      case H_E:
  704. X!         op->h_e = atod (bp);
  705. X          break;
  706. X      case H_QP:
  707. X!         op->h_qp = atod (bp);
  708. X          break;
  709. X      case H_EPOCH:
  710. X          crack_year (bp, pref, &op->h_epoch);
  711. X          break;
  712. X      case H_G:
  713. X!         op->h_g = atod (bp);
  714. X          break;
  715. X      case H_K:
  716. X!         op->h_k = atod (bp);
  717. X          break;
  718. X      case H_SIZE:
  719. X!         op->h_size = atod (bp);
  720. X          break;
  721. X  
  722. X      case P_EP:
  723. X***************
  724. X*** 462,489 ****
  725. X          crack_year (bp, pref, &op->p_ep);
  726. X          break;
  727. X      case P_INC:
  728. X!         op->p_inc = atof (bp);
  729. X          break;
  730. X      case P_AOP:
  731. X!         op->p_om = atof (bp);
  732. X          break;
  733. X      case P_QP:
  734. X!         op->p_qp = atof (bp);
  735. X          break;
  736. X      case P_LAN:
  737. X!         op->p_Om = atof (bp);
  738. X          break;
  739. X      case P_EPOCH:
  740. X          crack_year (bp, pref, &op->p_epoch);
  741. X          break;
  742. X      case P_G:
  743. X!         op->p_g = atof (bp);
  744. X          break;
  745. X      case P_K:
  746. X!         op->p_k = atof (bp);
  747. X          break;
  748. X      case P_SIZE:
  749. X!         op->p_size = atof (bp);
  750. X          break;
  751. X      default:
  752. X          printf ("BUG! db_set_field: bad id: %d\n", id);
  753. X--- 466,493 ----
  754. X          crack_year (bp, pref, &op->p_ep);
  755. X          break;
  756. X      case P_INC:
  757. X!         op->p_inc = atod (bp);
  758. X          break;
  759. X      case P_AOP:
  760. X!         op->p_om = atod (bp);
  761. X          break;
  762. X      case P_QP:
  763. X!         op->p_qp = atod (bp);
  764. X          break;
  765. X      case P_LAN:
  766. X!         op->p_Om = atod (bp);
  767. X          break;
  768. X      case P_EPOCH:
  769. X          crack_year (bp, pref, &op->p_epoch);
  770. X          break;
  771. X      case P_G:
  772. X!         op->p_g = atod (bp);
  773. X          break;
  774. X      case P_K:
  775. X!         op->p_k = atod (bp);
  776. X          break;
  777. X      case P_SIZE:
  778. X!         op->p_size = atod (bp);
  779. X          break;
  780. X      default:
  781. X          printf ("BUG! db_set_field: bad id: %d\n", id);
  782. X***************
  783. X*** 508,515 ****
  784. X      if (nobj[t] >= nmem[t]) {
  785. X          int oldn = nmem[t];
  786. X          int newn = oldn + DBMEMCHUNKS;
  787. X!         char *newp = db[t] ? realloc (db[t], size*newn)
  788. X!                    : malloc (size*newn);
  789. X          if (!newp)
  790. X          return (NULL);
  791. X          zero_mem (newp + size*oldn, size*DBMEMCHUNKS);
  792. X--- 512,519 ----
  793. X      if (nobj[t] >= nmem[t]) {
  794. X          int oldn = nmem[t];
  795. X          int newn = oldn + DBMEMCHUNKS;
  796. X!         char *newp = db[t] ? (char *) realloc (db[t], size*newn)
  797. X!                    : (char *) malloc (size*newn);
  798. X          if (!newp)
  799. X          return (NULL);
  800. X          zero_mem (newp + size*oldn, size*DBMEMCHUNKS);
  801. Xdiff -c v2.4b/dbmenu.c v2.4e/dbmenu.c
  802. X*** v2.4b/dbmenu.c    Tue Jun  1 14:31:11 1993
  803. X--- v2.4e/dbmenu.c    Wed May 19 14:18:50 1993
  804. X***************
  805. X*** 4,13 ****
  806. X  #include <stdio.h>
  807. X  #include <ctype.h>
  808. X  #include <math.h>
  809. X! #include <errno.h>
  810. X  #if defined(__STDC__)
  811. X  #include <stdlib.h>
  812. X  #endif
  813. X  #include <Xm/Xm.h>
  814. X  #include <Xm/Form.h>
  815. X  #include <Xm/Frame.h>
  816. X--- 4,14 ----
  817. X  #include <stdio.h>
  818. X  #include <ctype.h>
  819. X  #include <math.h>
  820. X! 
  821. X  #if defined(__STDC__)
  822. X  #include <stdlib.h>
  823. X  #endif
  824. X+ 
  825. X  #include <Xm/Xm.h>
  826. X  #include <Xm/Form.h>
  827. X  #include <Xm/Frame.h>
  828. X***************
  829. X*** 26,31 ****
  830. X--- 27,33 ----
  831. X  #endif
  832. X  
  833. X  extern Obj *db_next P_((Obj *op, HowNext how));
  834. X+ extern char *syserrstr P_((void));
  835. X  extern int db_n P_((void));
  836. X  extern int db_read P_((FILE *fp, int append));
  837. X  extern void all_newdb P_((int appended));
  838. X***************
  839. X*** 46,52 ****
  840. X  
  841. X  #undef P_
  842. X  
  843. X- extern char *sys_errlist[];
  844. X  extern Widget    toplevel_w;
  845. X  extern char *myclass;
  846. X  #define    XtD    XtDisplay(toplevel_w)
  847. X--- 48,53 ----
  848. X***************
  849. X*** 211,217 ****
  850. X      if (!fp) {
  851. X          char msg[128];
  852. X          (void) sprintf (msg, "Can not open %.75s: %.25s", name,
  853. X!                             sys_errlist[errno]);
  854. X          xe_msg (msg, 1);
  855. X      }
  856. X      return (fp);
  857. X--- 212,218 ----
  858. X      if (!fp) {
  859. X          char msg[128];
  860. X          (void) sprintf (msg, "Can not open %.75s: %.25s", name,
  861. X!                             syserrstr());
  862. X          xe_msg (msg, 1);
  863. X      }
  864. X      return (fp);
  865. Xdiff -c v2.4b/formats.c v2.4e/formats.c
  866. X*** v2.4b/formats.c    Tue Jun  1 14:30:50 1993
  867. X--- v2.4e/formats.c    Tue May 18 09:37:32 1993
  868. X***************
  869. X*** 18,23 ****
  870. X--- 18,24 ----
  871. X  #define P_(s) ()
  872. X  #endif
  873. X  
  874. X+ extern double atod P_((char *buf));
  875. X  extern void dec_sex P_((double d, int *hd, int *m, int *s, int *isneg));
  876. X  extern void f_dec_sexsign P_((double x, int *h, int *m, int *s));
  877. X  extern void field_log P_((Widget w, double value, int logv, char *str));
  878. X***************
  879. X*** 143,149 ****
  880. X      dec = v;
  881. X      frac = (v - dec)*60.0;
  882. X      (void) sprintf (str, "59.%.*s5", p, "999999999");
  883. X!     if (frac >= atof (str)) {
  884. X          dec += 1;
  885. X          frac = 0.0;
  886. X      }
  887. X--- 144,150 ----
  888. X      dec = v;
  889. X      frac = (v - dec)*60.0;
  890. X      (void) sprintf (str, "59.%.*s5", p, "999999999");
  891. X!     if (frac >= atod (str)) {
  892. X          dec += 1;
  893. X          frac = 0.0;
  894. X      }
  895. X***************
  896. X*** 487,493 ****
  897. X          /* not in a number now ... */
  898. X          if (in) {
  899. X              /* ... but we *were* in a number, so it counts */
  900. X!             comp[ncomp] = atof (bp0);
  901. X              set[ncomp] = 1;
  902. X              in = 0;
  903. X          }
  904. X--- 488,494 ----
  905. X          /* not in a number now ... */
  906. X          if (in) {
  907. X              /* ... but we *were* in a number, so it counts */
  908. X!             comp[ncomp] = atod (bp0);
  909. X              set[ncomp] = 1;
  910. X              in = 0;
  911. X          }
  912. Xdiff -c v2.4b/listmenu.c v2.4e/listmenu.c
  913. X*** v2.4b/listmenu.c    Tue Jun  1 14:31:13 1993
  914. X--- v2.4e/listmenu.c    Wed May 19 14:19:00 1993
  915. X***************
  916. X*** 4,17 ****
  917. X  #include <stdio.h>
  918. X  #include <ctype.h>
  919. X  #include <math.h>
  920. X  #if defined(__STDC__)
  921. X  #include <stdlib.h>
  922. X  #endif
  923. X  #include <X11/Xlib.h>
  924. X  #include <Xm/Xm.h>
  925. X  #include <Xm/Form.h>
  926. X  #include <Xm/DrawingA.h>
  927. X! #include <Xm/LabelG.h>
  928. X  #include <Xm/PushB.h>
  929. X  #include <Xm/ToggleB.h>
  930. X  #include <Xm/Separator.h>
  931. X--- 4,19 ----
  932. X  #include <stdio.h>
  933. X  #include <ctype.h>
  934. X  #include <math.h>
  935. X+ 
  936. X  #if defined(__STDC__)
  937. X  #include <stdlib.h>
  938. X  #endif
  939. X+ 
  940. X  #include <X11/Xlib.h>
  941. X  #include <Xm/Xm.h>
  942. X  #include <Xm/Form.h>
  943. X  #include <Xm/DrawingA.h>
  944. X! #include <Xm/Label.h>
  945. X  #include <Xm/PushB.h>
  946. X  #include <Xm/ToggleB.h>
  947. X  #include <Xm/Separator.h>
  948. X***************
  949. X*** 27,32 ****
  950. X--- 29,35 ----
  951. X  
  952. X  extern int access();    /* don't know whether to include unistd.h */
  953. X  
  954. X+ extern char *syserrstr P_((void));
  955. X  extern void all_selection_mode P_((int whether));
  956. X  extern void f_string P_((Widget w, char *s));
  957. X  extern void hlp_dialog P_((char *tag, char *deflt[], int ndeflt));
  958. X***************
  959. X*** 58,73 ****
  960. X  
  961. X  extern Widget toplevel_w;
  962. X  
  963. X- #ifdef VMS
  964. X- #include <perror.h>
  965. X- #include <errno.h>
  966. X- #else
  967. X- extern char *sys_errlist[];
  968. X- extern errno;
  969. X- #endif
  970. X- 
  971. X- #define    errsys    (sys_errlist[errno])
  972. X- 
  973. X  /* max number of fields we can keep track of at once to list */
  974. X  #define MAXLSTFLDS    10
  975. X  #define MAXLSTSTR    32    /* longest string we can list */
  976. X--- 61,66 ----
  977. X***************
  978. X*** 494,500 ****
  979. X          char *buf;
  980. X          XmToggleButtonSetState (active_w, False, False);
  981. X          buf = XtMalloc (strlen(txt)+100);
  982. X!         (void) sprintf (buf, "Can not open %s: %s", txt, errsys);
  983. X          xe_msg (buf, 1);
  984. X          XtFree (buf);
  985. X      }
  986. X--- 487,493 ----
  987. X          char *buf;
  988. X          XmToggleButtonSetState (active_w, False, False);
  989. X          buf = XtMalloc (strlen(txt)+100);
  990. X!         (void) sprintf (buf, "Can not open %s: %s", txt, syserrstr());
  991. X          xe_msg (buf, 1);
  992. X          XtFree (buf);
  993. X      }
  994. Xdiff -c v2.4b/mainmenu.c v2.4e/mainmenu.c
  995. X*** v2.4b/mainmenu.c    Tue Jun  1 14:32:10 1993
  996. X--- v2.4e/mainmenu.c    Tue Jun  1 12:23:55 1993
  997. X***************
  998. X*** 38,43 ****
  999. X--- 38,44 ----
  1000. X  #define P_(s) ()
  1001. X  #endif
  1002. X  
  1003. X+ extern double atod P_((char *buf));
  1004. X  extern double mjd_day P_((double jd));
  1005. X  extern double mjd_hr P_((double jd));
  1006. X  extern int f_ison P_((void));
  1007. X***************
  1008. X*** 118,125 ****
  1009. X  extern char *myclass;
  1010. X  extern XtAppContext xe_app;
  1011. X  #define    XtD    XtDisplay(toplevel_w)
  1012. X- extern char *sys_errlist[];
  1013. X- extern errno;
  1014. X  extern Widget calm_create();
  1015. X  
  1016. X  /* shorthands for fields of a Now structure, now.
  1017. X--- 119,124 ----
  1018. X***************
  1019. X*** 156,161 ****
  1020. X--- 155,162 ----
  1021. X  static XtIntervalId mm_interval_id;    /* set while waiting in a pause loop */
  1022. X  static int mm_selecting;        /* set while our fields are being selected */
  1023. X  
  1024. X+ #define    NO_PAUSE_DELAY    20    /* ms between loops when pause is 0 */
  1025. X+ 
  1026. X  /* field ids
  1027. X   * N.B. must be in same order as they appear in mm_field_map[].
  1028. X   */
  1029. X***************
  1030. X*** 726,732 ****
  1031. X          print_idle();
  1032. X      } else {
  1033. X          mm_interval_id =
  1034. X!         XtAppAddTimeOut (xe_app, spause>0 ? 1000 : 120, mm_timer_cb, 0);
  1035. X      }
  1036. X  }
  1037. X  
  1038. X--- 727,734 ----
  1039. X          print_idle();
  1040. X      } else {
  1041. X          mm_interval_id =
  1042. X!         XtAppAddTimeOut (xe_app, spause>0 ? 1000 : NO_PAUSE_DELAY,
  1043. X!                                 mm_timer_cb, 0);
  1044. X      }
  1045. X  }
  1046. X  
  1047. X***************
  1048. X*** 870,876 ****
  1049. X          if (bp[0] == 'n' || bp[0] == 'N')
  1050. X          time_fromsys (&now);
  1051. X          else
  1052. X!         mjd = atof(bp) - MJD0;
  1053. X          set_t0 (&now);
  1054. X          new = 1;
  1055. X          break;
  1056. X--- 872,878 ----
  1057. X          if (bp[0] == 'n' || bp[0] == 'N')
  1058. X          time_fromsys (&now);
  1059. X          else
  1060. X!         mjd = atod(bp) - MJD0;
  1061. X          set_t0 (&now);
  1062. X          new = 1;
  1063. X          break;
  1064. X***************
  1065. X*** 1035,1041 ****
  1066. X          epoch = EOD;
  1067. X          else {
  1068. X          double e;
  1069. X!         e = atof(bp);
  1070. X          year_mjd (e, &epoch);
  1071. X          }
  1072. X          new = 1;
  1073. X--- 1037,1043 ----
  1074. X          epoch = EOD;
  1075. X          else {
  1076. X          double e;
  1077. X!         e = atod(bp);
  1078. X          year_mjd (e, &epoch);
  1079. X          }
  1080. X          new = 1;
  1081. Xdiff -c v2.4b/misc.c v2.4e/misc.c
  1082. X*** v2.4b/misc.c    Tue Jun  1 14:31:52 1993
  1083. X--- v2.4e/misc.c    Thu May 20 18:13:49 1993
  1084. X***************
  1085. X*** 5,13 ****
  1086. X--- 5,15 ----
  1087. X  #include <stdio.h>
  1088. X  #include <ctype.h>
  1089. X  #include <math.h>
  1090. X+ 
  1091. X  #if defined(__STDC__)
  1092. X  #include <stdlib.h>
  1093. X  #endif
  1094. X+ 
  1095. X  #include <X11/Xlib.h>
  1096. X  #include <X11/cursorfont.h>
  1097. X  #include <Xm/Xm.h>
  1098. X***************
  1099. X*** 88,93 ****
  1100. X--- 90,97 ----
  1101. X  int lc P_((int cx, int cy, int cw, int x1, int y1, int x2, int y2, int *sx1, int *sy1, int *sx2, int *sy2));
  1102. X  void hg_mag P_((double h, double g, double rp, double rho, double rsn, double *mp));
  1103. X  void gk_mag P_((double g, double k, double rp, double rho, double *mp));
  1104. X+ double atod P_((char *buf));
  1105. X+ char *syserrstr P_((void));
  1106. X  
  1107. X  #undef P_
  1108. X  
  1109. X***************
  1110. X*** 809,812 ****
  1111. X--- 813,851 ----
  1112. X  double *mp;
  1113. X  {
  1114. X      *mp = g + 5.0*log10(rho) + 2.5*k*log10(rp);
  1115. X+ }
  1116. X+ 
  1117. X+ /* given a string convert to floating point and return it as a double.
  1118. X+  * this is to avoid the unportabilities associated with declaring atof().
  1119. X+  */
  1120. X+ double
  1121. X+ atod (buf)
  1122. X+ char *buf;
  1123. X+ {
  1124. X+     double tmp;
  1125. X+ 
  1126. X+     (void) sscanf (buf, "%lf", &tmp);
  1127. X+     return (tmp);
  1128. X+ }
  1129. X+ 
  1130. X+ /* return a string for whatever is in errno right now.
  1131. X+  * I never would have imagined it would be so hard to turn errno into a string!
  1132. X+  */
  1133. X+ char *
  1134. X+ syserrstr ()
  1135. X+ {
  1136. X+ #if defined(__STDC__)
  1137. X+ #include <errno.h>
  1138. X+ #include <string.h>
  1139. X+     return (strerror (errno));
  1140. X+ #else
  1141. X+ #if defined(VMS)
  1142. X+ #include <errno.h>
  1143. X+ #include <perror.h>
  1144. X+ #else
  1145. X+     extern char *sys_errlist[];
  1146. X+     extern int errno;
  1147. X+ #endif
  1148. X+     return (sys_errlist[errno]);
  1149. X+ #endif
  1150. X  }
  1151. Xdiff -c v2.4b/patchlevel.h v2.4e/patchlevel.h
  1152. X*** v2.4b/patchlevel.h    Tue Jun  1 14:30:25 1993
  1153. X--- v2.4e/patchlevel.h    Tue Jun  1 10:20:14 1993
  1154. X***************
  1155. X*** 3,6 ****
  1156. X   * it is also updated by any subsequent patches that are issued for xephem.
  1157. X   */
  1158. X  
  1159. X! #define    PATCHLEVEL    "Version 2.4b May 10, 1993"
  1160. X--- 3,6 ----
  1161. X   * it is also updated by any subsequent patches that are issued for xephem.
  1162. X   */
  1163. X  
  1164. X! #define    PATCHLEVEL    "Version 2.4e June 1, 1993"
  1165. Xdiff -c v2.4b/plotmenu.c v2.4e/plotmenu.c
  1166. X*** v2.4b/plotmenu.c    Tue Jun  1 14:30:58 1993
  1167. X--- v2.4e/plotmenu.c    Wed May 19 14:19:24 1993
  1168. X***************
  1169. X*** 4,12 ****
  1170. X--- 4,14 ----
  1171. X  #include <stdio.h>
  1172. X  #include <ctype.h>
  1173. X  #include <math.h>
  1174. X+ 
  1175. X  #if defined(__STDC__)
  1176. X  #include <stdlib.h>
  1177. X  #endif
  1178. X+ 
  1179. X  #include <X11/Xlib.h>
  1180. X  #include <Xm/Xm.h>
  1181. X  #include <Xm/Form.h>
  1182. X***************
  1183. X*** 25,30 ****
  1184. X--- 27,33 ----
  1185. X  #define P_(s) ()
  1186. X  #endif
  1187. X  
  1188. X+ extern char *syserrstr P_((void));
  1189. X  extern int plot_cartesian P_((FILE *pfp, Widget widget, unsigned int nx, unsigned int ny, int flipx, int flipy, int grid));
  1190. X  extern void all_selection_mode P_((int whether));
  1191. X  extern void f_string P_((Widget w, char *s));
  1192. X***************
  1193. X*** 70,85 ****
  1194. X  extern Widget toplevel_w;
  1195. X  #define    XtD    XtDisplay(toplevel_w)
  1196. X  
  1197. X- #ifdef VMS
  1198. X- #include <perror.h>
  1199. X- #include <errno.h>
  1200. X- #else
  1201. X- extern char *sys_errlist[];
  1202. X- extern errno;
  1203. X- #endif
  1204. X- 
  1205. X- #define    errsys    (sys_errlist[errno])
  1206. X- 
  1207. X  /* max number of things we can keep track of at once to plot */
  1208. X  #define    MAXPLTLINES    10
  1209. X  #define    MAXFLDNAM    32    /* longest allowed field name */
  1210. X--- 73,78 ----
  1211. X***************
  1212. X*** 622,628 ****
  1213. X          char *buf;
  1214. X          XmToggleButtonSetState (active_w, False, False);
  1215. X          buf = XtMalloc (strlen(txt)+100);
  1216. X!         (void) sprintf (buf, "Can not open %s: %s", txt, errsys);
  1217. X          xe_msg (buf, 1);
  1218. X          XtFree (buf);
  1219. X      }
  1220. X--- 615,621 ----
  1221. X          char *buf;
  1222. X          XmToggleButtonSetState (active_w, False, False);
  1223. X          buf = XtMalloc (strlen(txt)+100);
  1224. X!         (void) sprintf (buf, "Can not open %s: %s", txt, syserrstr());
  1225. X          xe_msg (buf, 1);
  1226. X          XtFree (buf);
  1227. X      }
  1228. X***************
  1229. X*** 668,674 ****
  1230. X      if (!fp) {
  1231. X          char *buf;
  1232. X          buf = XtMalloc (strlen(fn)+100);
  1233. X!         (void) sprintf (buf, "Can not open %s: %s", fn, errsys);
  1234. X          xe_msg (buf, 1);
  1235. X          XtFree (buf);
  1236. X          XtFree (fn);
  1237. X--- 661,667 ----
  1238. X      if (!fp) {
  1239. X          char *buf;
  1240. X          buf = XtMalloc (strlen(fn)+100);
  1241. X!         (void) sprintf (buf, "Can not open %s: %s", fn, syserrstr());
  1242. X          xe_msg (buf, 1);
  1243. X          XtFree (buf);
  1244. X          XtFree (fn);
  1245. Xdiff -c v2.4b/skyviewmenu.c v2.4e/skyviewmenu.c
  1246. X*** v2.4b/skyviewmenu.c    Tue Jun  1 14:32:28 1993
  1247. X--- v2.4e/skyviewmenu.c    Tue Jun  1 13:24:09 1993
  1248. X***************
  1249. X*** 63,68 ****
  1250. X--- 63,69 ----
  1251. X  extern int svf_filter_ok P_((Obj *op));
  1252. X  extern int tickmarks P_((double min, double max, int numdiv, double ticks[]));
  1253. X  extern void aa_hadec P_((double lati, double alt, double az, double *ha, double *dec));
  1254. X+ extern void confnd P_((double r, double d, double e, char **name));
  1255. X  extern void db_update P_((Obj *op));
  1256. X  extern void ecl_eq P_((double Mjd, double Lat, double Lng, double *ra, double *dec));
  1257. X  extern void eq_ecl P_((double Mjd, double ra, double dec, double *Lat, double *Lng));
  1258. X***************
  1259. X*** 174,179 ****
  1260. X--- 175,181 ----
  1261. X  static Pixmap sv_pm;            /* off-screen pixmap we *really* draw */
  1262. X  static Widget talt_w, taz_w;        /* tracking alt/az report widgets */
  1263. X  static Widget tra_w, tdec_w;        /* tracking ra/dec report widgets */
  1264. X+ static Widget tconst_w;            /* tracking constellation report wdgt */
  1265. X  
  1266. X  /* pixels and GCs
  1267. X   */
  1268. X***************
  1269. X*** 357,364 ****
  1270. X  sv_id (op)
  1271. X  Obj *op;
  1272. X  {
  1273. X!     Display *dsp = XtDisplay (svda_w);
  1274. X!     Window win = XtWindow (svda_w);
  1275. X      unsigned int wide, h, r, xb, yb;
  1276. X      double altdec, azra;
  1277. X      int x, y;
  1278. X--- 359,366 ----
  1279. X  sv_id (op)
  1280. X  Obj *op;
  1281. X  {
  1282. X!     Display *dsp;
  1283. X!     Window win;
  1284. X      unsigned int wide, h, r, xb, yb;
  1285. X      double altdec, azra;
  1286. X      int x, y;
  1287. X***************
  1288. X*** 366,371 ****
  1289. X--- 368,376 ----
  1290. X      if (!svform_w || !XtIsManaged(svform_w) || !op || op->type == UNDEFOBJ)
  1291. X          return (-2);
  1292. X  
  1293. X+     dsp = XtDisplay (svda_w);
  1294. X+     win = XtWindow (svda_w);
  1295. X+ 
  1296. X      sv_getcircle (&wide, &h, &r, &xb, &yb);
  1297. X  
  1298. X      altdec = aa_mode ? op->s_alt : op->s_dec;
  1299. X***************
  1300. X*** 1085,1090 ****
  1301. X--- 1090,1107 ----
  1302. X      set_xmstring (taz_w, XmNlabelString, " ");
  1303. X      XtManageChild(taz_w);
  1304. X  
  1305. X+     /* make a label for the constellation just below Alt */
  1306. X+ 
  1307. X+     n = 0;
  1308. X+     XtSetArg (args[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
  1309. X+     XtSetArg (args[n], XmNleftWidget, fov_w); n++;
  1310. X+     XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
  1311. X+     XtSetArg (args[n], XmNtopWidget, talt_w); n++;
  1312. X+     XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
  1313. X+     tconst_w = XmCreateLabel (svform_w, "TConst", args, n);
  1314. X+     set_xmstring (tconst_w, XmNlabelString, " ");
  1315. X+     XtManageChild(tconst_w);
  1316. X+ 
  1317. X      /* make a drawing area inside the sliders for drawing the sky */
  1318. X  
  1319. X      n = 0;
  1320. X***************
  1321. X*** 1442,1447 ****
  1322. X--- 1459,1465 ----
  1323. X      int evt = ev->type;
  1324. X      int okmotion, okbutton;
  1325. X      double lst;
  1326. X+     char *constellation;
  1327. X  
  1328. X      /* only interested if motion event or button 1 press/release */
  1329. X      okmotion = evt == MotionNotify && ev->xmotion.state == Button1Mask;
  1330. X***************
  1331. X*** 1482,1487 ****
  1332. X--- 1500,1508 ----
  1333. X          refract (pressure, temp, alt, &alt);
  1334. X          }
  1335. X  
  1336. X+         confnd (ra, dec, epoch == EOD ? mjd : epoch, &constellation);
  1337. X+         constellation += 5;    /* skip the abbreviation */
  1338. X+ 
  1339. X          (void) strcpy (alt_buf, "Alt: ");
  1340. X          fs_angle (alt_buf+5, alt);
  1341. X          (void) strcpy (az_buf, "Az: ");
  1342. X***************
  1343. X*** 1495,1500 ****
  1344. X--- 1516,1522 ----
  1345. X          (void) strcpy (az_buf, " ");
  1346. X          (void) strcpy (ra_buf, " ");
  1347. X          (void) strcpy (dec_buf, " ");
  1348. X+         constellation = " ";
  1349. X      }
  1350. X  
  1351. X      f_showit (talt_w, alt_buf);
  1352. X***************
  1353. X*** 1501,1506 ****
  1354. X--- 1523,1529 ----
  1355. X      f_showit (taz_w, az_buf);
  1356. X      f_showit (tra_w, ra_buf);
  1357. X      f_showit (tdec_w, dec_buf);
  1358. X+     f_showit (tconst_w, constellation);
  1359. X  }
  1360. X  
  1361. X  /* a dot has been picked:
  1362. X***************
  1363. X*** 2254,2260 ****
  1364. X  }
  1365. X  
  1366. X  /* determine if the given object is visible and within a circle of radius r
  1367. X!  * pixels. if so, return 1 and compute the location in *xp/*yp, else return 0.
  1368. X   * N.B. only call this for bona fide db objects -- *not* for objects in the
  1369. X   *   TrailObj lists -- it will destroy their history.
  1370. X   */
  1371. X--- 2277,2283 ----
  1372. X  }
  1373. X  
  1374. X  /* determine if the given object is visible and within a circle of radius r
  1375. X!  * pixels. if so, return 1 and compute the location in *xp / *yp, else return 0.
  1376. X   * N.B. only call this for bona fide db objects -- *not* for objects in the
  1377. X   *   TrailObj lists -- it will destroy their history.
  1378. X   */
  1379. Xdiff -c v2.4b/time.c v2.4e/time.c
  1380. X*** v2.4b/time.c    Tue Jun  1 14:30:34 1993
  1381. X--- v2.4e/time.c    Tue Jun  1 12:26:24 1993
  1382. X***************
  1383. X*** 20,25 ****
  1384. X--- 20,26 ----
  1385. X  
  1386. X  #undef P_
  1387. X  
  1388. X+ 
  1389. X  static long c0;
  1390. X  static double mjd0;
  1391. X  
  1392. X***************
  1393. X*** 55,62 ****
  1394. X  double inc;
  1395. X  {
  1396. X      if (inc == RTC) {
  1397. X!         long c;
  1398. X!         (void) time (&c);
  1399. X          mjd = mjd0 + (c - c0)/SPD;
  1400. X      } else
  1401. X          mjd += inc/24.0;
  1402. X--- 56,62 ----
  1403. X  double inc;
  1404. X  {
  1405. X      if (inc == RTC) {
  1406. X!         long c = time (NULL);
  1407. X          mjd = mjd0 + (c - c0)/SPD;
  1408. X      } else
  1409. X          mjd += inc/24.0;
  1410. Xdiff -c v2.4b/versionmenu.c v2.4e/versionmenu.c
  1411. X*** v2.4b/versionmenu.c    Tue Jun  1 14:31:17 1993
  1412. X--- v2.4e/versionmenu.c    Tue Jun  1 13:32:32 1993
  1413. X***************
  1414. X*** 6,12 ****
  1415. X--- 6,21 ----
  1416. X   */
  1417. X  
  1418. X  /*
  1419. X+  * 2.4e 6/1    can not list rise/set/transit times while looping: fixed.
  1420. X+  *        decreased loop delay when pause is set to 0.
  1421. X+  *        changed troublesome comment in skyviewmenu.c.
  1422. X+  *        another change for DEC's alpha in time.c.
  1423. X+  *        added constellation name to Sky View cursor tracking report.
  1424. X+  *        patch to bring v2.4b to v2.4e posted to comp.sources.x.
  1425. X+  * 2.4d 5/27    Sky Mark in ObjX/Y before Sky View seg faults: fixed.
  1426. X+  * 2.4c 5/19    portability enhancements, particularly to VMS and Motif 1.2.
  1427. X   * 2.4b 5/10    changed to using memcpy() instead of struct assign (for Alpha).
  1428. X+  *        2.4b was released to comp.sources.x May 1993 in v19i090-v19i110.
  1429. X   * 2.4a 4/23    changed usage of time() (just needed for DEC's Alpha CPUs)
  1430. X   * 2.4 4/21     fixed blank jup and sat views (unsigned).
  1431. X   * 2.3 4/12    add ecliptic option to sky view.
  1432. Xdiff -c v2.4b/xephem.c v2.4e/xephem.c
  1433. X*** v2.4b/xephem.c    Tue Jun  1 14:31:47 1993
  1434. X--- v2.4e/xephem.c    Wed May 19 13:37:00 1993
  1435. X***************
  1436. X*** 463,490 ****
  1437. X      cascade = XmCreateCascadeButton (menu_bar, "Control", args, n);
  1438. X      XtManageChild (cascade);
  1439. X  
  1440. X!     /*    Create "ObjX/Y..." Cascade Button.  */
  1441. X!     str = XmStringCreate ("ObjX/Y...", XmSTRING_DEFAULT_CHARSET);
  1442. X      n = 0;
  1443. X!     XtSetArg (args[n], XmNlabelString, str); n++;
  1444. X      XtSetArg (args[n], XmNmnemonic, 'O'); n++;
  1445. X!     cascade = XmCreateCascadeButton (menu_bar, "ObjXY", args, n);
  1446. X!     XtManageChild (cascade);
  1447. X!     XtAddCallback (cascade, XmNactivateCallback, m_activate_cb,
  1448. X                              (XtPointer)OBJS);
  1449. X!     XmStringFree (str);
  1450. X! 
  1451. X!     /*    Create "DB..." Cascade Button.  */
  1452. X!     str = XmStringCreate ("DB...", XmSTRING_DEFAULT_CHARSET);
  1453. X      n = 0;
  1454. X!     XtSetArg (args[n], XmNlabelString, str); n++;
  1455. X!     XtSetArg (args[n], XmNmnemonic, 'D'); n++;
  1456. X!     cascade = XmCreateCascadeButton (menu_bar, "DB", args, n);
  1457. X      XtManageChild (cascade);
  1458. X!     XtAddCallback (cascade, XmNactivateCallback, m_activate_cb,
  1459. X!                             (XtPointer)DB);
  1460. X!     XmStringFree (str);
  1461. X! 
  1462. X      /*    Create "Preferences" PulldownMenu.  */
  1463. X  
  1464. X      pref_create_pulldown (menu_bar);
  1465. X--- 463,492 ----
  1466. X      cascade = XmCreateCascadeButton (menu_bar, "Control", args, n);
  1467. X      XtManageChild (cascade);
  1468. X  
  1469. X!     /*    Create "Objects" pulldown  */
  1470. X      n = 0;
  1471. X!     menu_pane = XmCreatePulldownMenu (menu_bar, "obj_pane", args, n);
  1472. X!     
  1473. X!     n = 0;
  1474. X!     XtSetArg (args[n], XmNmnemonic, 'D'); n++;
  1475. X!     button = XmCreatePushButton (menu_pane, "Data Base", args, n);
  1476. X!     XtManageChild (button);
  1477. X!     XtAddCallback (button, XmNactivateCallback, m_activate_cb,
  1478. X!                             (XtPointer)DB);
  1479. X!     
  1480. X!     n = 0;
  1481. X      XtSetArg (args[n], XmNmnemonic, 'O'); n++;
  1482. X!     button = XmCreatePushButton (menu_pane, "ObjX/Y", args, n);
  1483. X!     XtManageChild (button);
  1484. X!     XtAddCallback (button, XmNactivateCallback, m_activate_cb,
  1485. X                              (XtPointer)OBJS);
  1486. X!     
  1487. X      n = 0;
  1488. X!     XtSetArg (args[n], XmNsubMenuId, menu_pane);  n++;
  1489. X!     XtSetArg (args[n], XmNmnemonic, 'O'); n++;
  1490. X!     cascade = XmCreateCascadeButton (menu_bar, "Objects", args, n);
  1491. X      XtManageChild (cascade);
  1492. X!     
  1493. X      /*    Create "Preferences" PulldownMenu.  */
  1494. X  
  1495. X      pref_create_pulldown (menu_bar);
  1496. Xdiff -c v2.4b/xephem.hlp v2.4e/xephem.hlp
  1497. X*** v2.4b/xephem.hlp    Tue Jun  1 14:30:45 1993
  1498. X--- v2.4e/xephem.hlp    Tue Jun  1 14:12:32 1993
  1499. X***************
  1500. X*** 60,71 ****
  1501. X      The "Control" pulldown toggles the plotting, listing and searching control
  1502. X      menus.
  1503. X  
  1504. X!     The "ObjX/Y..." pushbutton toggles the menu that allows you to define
  1505. X!     the user defined objects, ObjX and ObjY. Said menu also allows you to
  1506. X!     inspect each item currently in the xephem database.
  1507. X  
  1508. X!     The "DB..." pushbutton toggles the menu that allows to add or replace
  1509. X!     entries in the xephem database from files of database objects.
  1510. X  
  1511. X      The "Preferences" pulldown lists the available preferences that may be
  1512. X      changed at runtime. The options currently available include whether the
  1513. X--- 60,76 ----
  1514. X      The "Control" pulldown toggles the plotting, listing and searching control
  1515. X      menus.
  1516. X  
  1517. X!     The "Objects" pulldown entries toggle the menus that control reading
  1518. X!     database files of objects into memory and defining the two user defined
  1519. X!     objects, ObjX and ObjY.
  1520. X  
  1521. X!         The "Data Base" pushbutton toggles the menu that allows you to add or
  1522. X!         replace objects in memory from files of database objects.
  1523. X!     
  1524. X!         The "ObjX/Y" pushbutton toggles the menu that allows you to define
  1525. X!         the user defined objects, ObjX and ObjY. This menu also allows you to
  1526. X!         inspect the fields of any object currently in memory and locate the
  1527. X!         object on the Sky View menu.
  1528. X  
  1529. X      The "Preferences" pulldown lists the available preferences that may be
  1530. X      changed at runtime. The options currently available include whether the
  1531. X***************
  1532. X*** 114,142 ****
  1533. X   Dusk          Local time when the sun center is "Twilight dip" degrees below
  1534. X                 the horizon after sunset today.
  1535. X   Night Length  Length of astronomical night, ie, Dawn - Dusk.  If this and the
  1536. X!            display for Dawn and Dusk are shown as "-----", it means the sun
  1537. X!            is either always below or always above "Twilight dip" degrees
  1538. X!            below the horizon on this particular day.
  1539. X  
  1540. X   N Steps       The number of times the display will be updated (time advanced
  1541. X                 by Step Size each step) automatically.
  1542. X   Step Size     The amount of time UTC (and its derivatives) is incremented
  1543. X!            each loop. 
  1544. X   Pause         Number of seconds to pause between screen updates. This is
  1545. X!            used mainly to set up for free-running unattended operation.
  1546. X!            Pausing is not done when plotting or searching is on.
  1547. X  
  1548. X   Latitude      Location latitude, positive degrees north of equator.
  1549. X   Longitude     Location longitude, positive degrees west of Greenwich meridian.
  1550. X   Elevation     Local elevation of the ground above sea level, in feet. (see
  1551. X!            implementation notes). Used in refraction correction.
  1552. X   Temperature   Local surface air temperature, in degrees F. Used in refraction
  1553. X!            correction.
  1554. X   Atm Pressure  Local surface air pressure, in inches of mercury. Used in
  1555. X!            refraction correction.
  1556. X   Epoch         The epoch, to the nearest 0.1 years, to which the ra/dec
  1557. X!            fields are precessed.  This says (OfDate) when coordinates
  1558. X!            are not precessed, ie, are in the epoch of date.
  1559. X  
  1560. X  The calendar on the right of the Main menu is based on UTC. Selecting a date
  1561. X  button will set the date. Unlabeled buttons before the first of the month
  1562. X--- 119,147 ----
  1563. X   Dusk          Local time when the sun center is "Twilight dip" degrees below
  1564. X                 the horizon after sunset today.
  1565. X   Night Length  Length of astronomical night, ie, Dawn - Dusk.  If this and the
  1566. X!                display for Dawn and Dusk are shown as "-----", it means the sun
  1567. X!                is either always below or always above "Twilight dip" degrees
  1568. X!                below the horizon on this particular day.
  1569. X  
  1570. X   N Steps       The number of times the display will be updated (time advanced
  1571. X                 by Step Size each step) automatically.
  1572. X   Step Size     The amount of time UTC (and its derivatives) is incremented
  1573. X!                each loop. 
  1574. X   Pause         Number of seconds to pause between screen updates. This is
  1575. X!                used mainly to set up for free-running unattended operation.
  1576. X!                Pausing is not done when plotting or searching is on.
  1577. X  
  1578. X   Latitude      Location latitude, positive degrees north of equator.
  1579. X   Longitude     Location longitude, positive degrees west of Greenwich meridian.
  1580. X   Elevation     Local elevation of the ground above sea level, in feet. (see
  1581. X!                implementation notes). Used in refraction correction.
  1582. X   Temperature   Local surface air temperature, in degrees F. Used in refraction
  1583. X!                correction.
  1584. X   Atm Pressure  Local surface air pressure, in inches of mercury. Used in
  1585. X!                refraction correction.
  1586. X   Epoch         The epoch, to the nearest 0.1 years, to which the ra/dec
  1587. X!                fields are precessed.  This says (OfDate) when coordinates
  1588. X!                are not precessed, ie, are in the epoch of date.
  1589. X  
  1590. X  The calendar on the right of the Main menu is based on UTC. Selecting a date
  1591. X  button will set the date. Unlabeled buttons before the first of the month
  1592. X***************
  1593. X*** 254,264 ****
  1594. X   Long      longitude, in degrees west of Greenwich, in the form d:m:s.
  1595. X   Lat       latitude, in degrees north of the equator, in the form d:m:s.
  1596. X   Elevation height above sea level, in feet or meters, such as 800. Used to
  1597. X!        compute parallax of solar system objects.
  1598. X   Temp      air temperature, in degrees F or C, such as 60.
  1599. X   Pressure  air pressure, in inches of Mercury or mBar, such as 29.50.
  1600. X!        Temp and Pressure are used to compute refraction when the AdpHzrn
  1601. X!        option is active; see the Help for the Data setup table.
  1602. X   StepSize  the time increment between screen updates, such as "1" to give
  1603. X             one hour updates. this can be a specific amount or RTC to use
  1604. X             the system clock as a real-time source. You may also specify a
  1605. X--- 259,269 ----
  1606. X   Long      longitude, in degrees west of Greenwich, in the form d:m:s.
  1607. X   Lat       latitude, in degrees north of the equator, in the form d:m:s.
  1608. X   Elevation height above sea level, in feet or meters, such as 800. Used to
  1609. X!            compute parallax of solar system objects.
  1610. X   Temp      air temperature, in degrees F or C, such as 60.
  1611. X   Pressure  air pressure, in inches of Mercury or mBar, such as 29.50.
  1612. X!            Temp and Pressure are used to compute refraction when the AdpHzrn
  1613. X!            option is active; see the Help for the Data setup table.
  1614. X   StepSize  the time increment between screen updates, such as "1" to give
  1615. X             one hour updates. this can be a specific amount or RTC to use
  1616. X             the system clock as a real-time source. You may also specify a
  1617. X***************
  1618. X*** 268,277 ****
  1619. X             see the discussion under Program Operation.
  1620. X   Epoch     this sets the desired ra/dec precession epoch. you can put any
  1621. X             date here (use decimal form, such as 1992.5) or "EOD" to use the
  1622. X!        current instant ("Epoch of Date").
  1623. X   Pause     The number of seconds to pause between calculation steps.
  1624. X   TwilightDip Number of degrees the sun is below the horizon that you want to
  1625. X!        define as being the end of "twilight"; must be at least 0.
  1626. X  @Date/time
  1627. X  Xephem uses many values that get are entered in some variation of X/Y/Z form.
  1628. X  We call this a "triad" input format.
  1629. X--- 273,282 ----
  1630. X             see the discussion under Program Operation.
  1631. X   Epoch     this sets the desired ra/dec precession epoch. you can put any
  1632. X             date here (use decimal form, such as 1992.5) or "EOD" to use the
  1633. X!            current instant ("Epoch of Date").
  1634. X   Pause     The number of seconds to pause between calculation steps.
  1635. X   TwilightDip Number of degrees the sun is below the horizon that you want to
  1636. X!            define as being the end of "twilight"; must be at least 0.
  1637. X  @Date/time
  1638. X  Xephem uses many values that get are entered in some variation of X/Y/Z form.
  1639. X  We call this a "triad" input format.
  1640. X***************
  1641. X*** 615,628 ****
  1642. X  Various odd ball rising, transit and setting conditions are accounted for
  1643. X  and marked as follows when they occur:
  1644. X  
  1645. X!  NoRise      up some time but never rises, as such, today.
  1646. X!  NoSet      up some time but never sets, as such, today.
  1647. X!  NoTran      up some time but doesn't transit, as such, today.
  1648. X!  CirPol      object is circumpolar (never goes below horizon) today.
  1649. X!  NvrUp      object is never up today.
  1650. X!  XX:XX+      "+" appended to rise, transit or set times means the event occurs
  1651. X                twice today; the time given is the time of the first event.
  1652. X!       "+" appended to "Hours Up" means it is still up at midnight.
  1653. X  
  1654. X  Any of the information in this table may be plotted, listed or used in a
  1655. X  search algorithm. See the help for these control functions for more details.
  1656. X--- 620,633 ----
  1657. X  Various odd ball rising, transit and setting conditions are accounted for
  1658. X  and marked as follows when they occur:
  1659. X  
  1660. X!  NoRise          up some time but never rises, as such, today.
  1661. X!  NoSet          up some time but never sets, as such, today.
  1662. X!  NoTran          up some time but doesn't transit, as such, today.
  1663. X!  CirPol          object is circumpolar (never goes below horizon) today.
  1664. X!  NvrUp          object is never up today.
  1665. X!  XX:XX+          "+" appended to rise, transit or set times means the event occurs
  1666. X                twice today; the time given is the time of the first event.
  1667. X!           "+" appended to "Hours Up" means it is still up at midnight.
  1668. X  
  1669. X  Any of the information in this table may be plotted, listed or used in a
  1670. X  search algorithm. See the help for these control functions for more details.
  1671. X***************
  1672. X*** 653,689 ****
  1673. X  
  1674. X   Cns           name of the constellation in which the object appears.
  1675. X   R_A           apparent geocentric right ascension of object, precessed to
  1676. X!            given epoch, in hours, minutes and decimal minutes.
  1677. X   Dec           apparent geocentric declination of object, precessed to
  1678. X!            given epoch, in degrees and minutes.
  1679. X   Az            degrees eastward of true north for object.
  1680. X   Alt           degrees up from a horizontal plane that is Elevation feet above
  1681. X                 sea level.
  1682. X   HeLong        true heliocentric longitude, in degrees.  Earth's is displayed
  1683. X                 on the sun's line.  For the moon this is the geocentric
  1684. X!            longitude.
  1685. X   HeLat         true heliocentric latitude, in degrees.  For the moon this is
  1686. X                 the geocentric latitude.
  1687. X   EaDst         true distance from Earth center to object center, in AU, except
  1688. X                 distance to the moon is in miles or km depending on the Units
  1689. X!            preference.
  1690. X   SnDst         true distance from sun center to object center, in AU.
  1691. X   Elong         spherical angular separation between sun and given object,
  1692. X!            calculated from the their geocentric ecliptic coordinates.
  1693. X!            Note this is not just the difference in ecliptic longitude.
  1694. X!            The sign, however, is simply sign(obj's longitude - sun's
  1695. X!            longitude), ie, degrees east.  thus, a positive elongation
  1696. X!            means the object rises after the sun.  This field is not
  1697. X!            generally useful in searching for conjunctions because of
  1698. X!            the discontinuous sign change that occurs at conjunction.
  1699. X   Size          angular size of object, in arc seconds.
  1700. X   VMag          visual magnitude of object.
  1701. X   Phase         percent of visible surface in sunlight. Note the moon phase
  1702. X!            is calculated simplistically as just abs(elongation)/180*100
  1703. X!            which can be a few degrees off... this means that because of
  1704. X!            how elongation is defined it doesn't say 0 during new moon
  1705. X!            (or 100 during full) except during close eclipses (maybe
  1706. X!            that's a "feature"?).
  1707. X  
  1708. X  Column three controls information related to rising, transiting, and
  1709. X  setting.  These may be computed according to two options.
  1710. X--- 658,694 ----
  1711. X  
  1712. X   Cns           name of the constellation in which the object appears.
  1713. X   R_A           apparent geocentric right ascension of object, precessed to
  1714. X!                given epoch, in hours, minutes and decimal minutes.
  1715. X   Dec           apparent geocentric declination of object, precessed to
  1716. X!                given epoch, in degrees and minutes.
  1717. X   Az            degrees eastward of true north for object.
  1718. X   Alt           degrees up from a horizontal plane that is Elevation feet above
  1719. X                 sea level.
  1720. X   HeLong        true heliocentric longitude, in degrees.  Earth's is displayed
  1721. X                 on the sun's line.  For the moon this is the geocentric
  1722. X!                longitude.
  1723. X   HeLat         true heliocentric latitude, in degrees.  For the moon this is
  1724. X                 the geocentric latitude.
  1725. X   EaDst         true distance from Earth center to object center, in AU, except
  1726. X                 distance to the moon is in miles or km depending on the Units
  1727. X!                preference.
  1728. X   SnDst         true distance from sun center to object center, in AU.
  1729. X   Elong         spherical angular separation between sun and given object,
  1730. X!                calculated from the their geocentric ecliptic coordinates.
  1731. X!                Note this is not just the difference in ecliptic longitude.
  1732. X!                The sign, however, is simply sign(obj's longitude - sun's
  1733. X!                longitude), ie, degrees east.  thus, a positive elongation
  1734. X!                means the object rises after the sun.  This field is not
  1735. X!                generally useful in searching for conjunctions because of
  1736. X!                the discontinuous sign change that occurs at conjunction.
  1737. X   Size          angular size of object, in arc seconds.
  1738. X   VMag          visual magnitude of object.
  1739. X   Phase         percent of visible surface in sunlight. Note the moon phase
  1740. X!                is calculated simplistically as just abs(elongation)/180*100
  1741. X!                which can be a few degrees off... this means that because of
  1742. X!                how elongation is defined it doesn't say 0 during new moon
  1743. X!                (or 100 during full) except during close eclipses (maybe
  1744. X!                that's a "feature"?).
  1745. X  
  1746. X  Column three controls information related to rising, transiting, and
  1747. X  setting.  These may be computed according to two options.
  1748. X***************
  1749. X*** 710,721 ****
  1750. X   TrnTm
  1751. X   TrnAlt   The local time and altitude when the object crosses the meridian
  1752. X            today, ie, when its azimuth is true south or, if no precession, when
  1753. X!       the local sidereal time equals the object's right ascension.
  1754. X   SetTm
  1755. X   SetAz    The local time and azimuth when the upper limb (or center) of the
  1756. X            object sets today.
  1757. X   HrsUp    The number of hours the object is up today, that is, the difference
  1758. X!       between the set and rise times.
  1759. X  
  1760. X  Note that these times are for the current local day. See the description of
  1761. X  "odd ball" circumstances that this definition can produce and how xephem
  1762. X--- 715,726 ----
  1763. X   TrnTm
  1764. X   TrnAlt   The local time and altitude when the object crosses the meridian
  1765. X            today, ie, when its azimuth is true south or, if no precession, when
  1766. X!           the local sidereal time equals the object's right ascension.
  1767. X   SetTm
  1768. X   SetAz    The local time and azimuth when the upper limb (or center) of the
  1769. X            object sets today.
  1770. X   HrsUp    The number of hours the object is up today, that is, the difference
  1771. X!           between the set and rise times.
  1772. X  
  1773. X  Note that these times are for the current local day. See the description of
  1774. X  "odd ball" circumstances that this definition can produce and how xephem
  1775. X***************
  1776. X*** 777,804 ****
  1777. X  central display is intended to be similar to a telescopic view.  Descriptions
  1778. X  of each function are keyed to the schematic depiction below:
  1779. X  
  1780. X!             _____________________________________________
  1781. X!             |Alt-Az  |   | [Alt]               [Az] |   |
  1782. X!             |RA-Dec  | F |                          | A |
  1783. X!             |--------| O |                          | l |
  1784. X!             |Grid    | V |                          | t |
  1785. X!             |--------|   |                          |   |
  1786. X!             |F Mag   |   |                          | / |
  1787. X!             |B Mag   |   |           Sky            |   |
  1788. X!             |--------|   |                          | D |
  1789. X!             |Dots    |   |                          | e |
  1790. X!             |Ecliptic|   |                          | c |
  1791. X!             |Labels  |   |                          |   |
  1792. X!             |--------|   |                          |   |
  1793. X!             |Locate  |   |                          |   |
  1794. X!             |--------|   | [RA]               [Dec] |   |
  1795. X!             |        |___|__________________________|___|
  1796. X!             |        |             Az / RA              |
  1797. X!             |        |__________________________________|
  1798. X!             |        |         Date/Time stamp          |
  1799. X!             |________|__________________________________|
  1800. X!             |   Filter          Close            Help   |
  1801. X!             |___________________________________________|
  1802. X  
  1803. X  Alt-Az / RA-Dec
  1804. X      The radio box in the upper left corner selects whether the display
  1805. X--- 782,809 ----
  1806. X  central display is intended to be similar to a telescopic view.  Descriptions
  1807. X  of each function are keyed to the schematic depiction below:
  1808. X  
  1809. X!                     _____________________________________________
  1810. X!                     |Alt-Az  |   | [Alt]               [Az] |   |
  1811. X!                     |RA-Dec  | F | [Constellation]          | A |
  1812. X!                     |--------| O |                          | l |
  1813. X!                     |Grid    | V |                          | t |
  1814. X!                     |--------|   |                          |   |
  1815. X!                     |F Mag   |   |                          | / |
  1816. X!                     |B Mag   |   |           Sky            |   |
  1817. X!                     |--------|   |                          | D |
  1818. X!                     |Dots    |   |                          | e |
  1819. X!                     |Ecliptic|   |                          | c |
  1820. X!                     |Labels  |   |                          |   |
  1821. X!                     |--------|   |                          |   |
  1822. X!                     |Locate  |   |                          |   |
  1823. X!                     |--------|   | [RA]               [Dec] |   |
  1824. X!                     |        |___|__________________________|___|
  1825. X!                     |        |             Az / RA              |
  1826. X!                     |        |__________________________________|
  1827. X!                     |        |         Date/Time stamp          |
  1828. X!                     |________|__________________________________|
  1829. X!                     |   Filter          Close            Help   |
  1830. X!                     |___________________________________________|
  1831. X  
  1832. X  Alt-Az / RA-Dec
  1833. X      The radio box in the upper left corner selects whether the display
  1834. X***************
  1835. X*** 866,875 ****
  1836. X      The left vertically-oriented slider controls the field-of-view of the
  1837. X      display circle. This can be varied from 1 to 180 degrees.
  1838. X  
  1839. X! [Alt] [Az] [RA] [Dec]
  1840. X!    The coordinates of the cursor are tracked and displayed across the bottom
  1841. X!    and top of the circular display area as long as it is within the circle and
  1842. X!    the left mouse button is depressed.
  1843. X  
  1844. X     NOTE: The values displayed during tracking for the coordinate system
  1845. X     opposite to the one currently in effect may not agree exactly with
  1846. X--- 871,880 ----
  1847. X      The left vertically-oriented slider controls the field-of-view of the
  1848. X      display circle. This can be varied from 1 to 180 degrees.
  1849. X  
  1850. X! [Alt] [Az] [RA] [Dec] [Constellation]
  1851. X!    The coordinates and constellation of the cursor are tracked and displayed
  1852. X!    across the top and bottom of the circular display area as long as the left
  1853. X!    mouse button is depressed and the cursor is within the circle.
  1854. X  
  1855. X     NOTE: The values displayed during tracking for the coordinate system
  1856. X     opposite to the one currently in effect may not agree exactly with
  1857. X***************
  1858. X*** 898,931 ****
  1859. X      selected, the data will be as it was at the time the position was created.
  1860. X      In addition, the popup offers several control operations, as follows:
  1861. X  
  1862. X!     Selecting "Point" from the popup will center the object in the field of
  1863. X!     view (as well as can be done with the accuracy of the pointing scales
  1864. X!     anyway).
  1865. X  
  1866. X!     Selecting "Make ObjX/Y" will assign the given object to become ObjX
  1867. X!     or ObjY, depending on which one is currently being displayed in the
  1868. X!     ObjX/Y menu. See the help for the ObjX/Y menu for more information on
  1869. X!     that menu.
  1870. X  
  1871. X!     Selecting "Leave Trail" will start to accumulate all positions of the
  1872. X!     given object as time is advanced. Each new location will be connected
  1873. X!     with a line to its previous location. The trails remain correct if the
  1874. X!     display coordinate system is changed. Trails may be turned on or off
  1875. X!     without loss of trail information. However, trailing information is
  1876. X!     discarded if trailing is turned off when a new time step is performed.
  1877. X!     If any point in a trail is selected the information displayed is as per
  1878. X!     the object at that time. The fastest way to accumulate trailing
  1879. X!     information is to turn trailing on and pop the menu down while running.
  1880. X  
  1881. X!     Note that in Alt-Az mode, if an object goes below the horizon the line
  1882. X!     segments of the trail are displayed but not the actual points.
  1883. X  
  1884. X!     Selecting "Persistent Label" will place the name of the object near it
  1885. X!     on the display. This will remain until the label is turned off. Note
  1886. X!     this option is maintained separately for trailed objects and for
  1887. X!     the untrailed objects; that is, you have independent control over
  1888. X!     labeling for a trailed object and its currently displayed object
  1889. X!     since the latter also always appears in the trailed list.
  1890. X  
  1891. X      The coordinates of the cursor are displayed in the corners of the circular
  1892. X      sky area as long as the cursor is within the central circle and the left
  1893. X--- 903,936 ----
  1894. X      selected, the data will be as it was at the time the position was created.
  1895. X      In addition, the popup offers several control operations, as follows:
  1896. X  
  1897. X!         Selecting "Point" from the popup will center the object in the field of
  1898. X!         view (as well as can be done with the accuracy of the pointing scales
  1899. X!         anyway).
  1900. X  
  1901. X!         Selecting "Make ObjX/Y" will assign the given object to become ObjX
  1902. X!         or ObjY, depending on which one is currently being displayed in the
  1903. X!         ObjX/Y menu. See the help for the ObjX/Y menu for more information on
  1904. X!         that menu.
  1905. X  
  1906. X!         Selecting "Leave Trail" will start to accumulate all positions of the
  1907. X!         given object as time is advanced. Each new location will be connected
  1908. X!         with a line to its previous location. The trails remain correct if the
  1909. X!         display coordinate system is changed. Trails may be turned on or off
  1910. X!         without loss of trail information. However, trailing information is
  1911. X!         discarded if trailing is turned off when a new time step is performed.
  1912. X!         If any point in a trail is selected the information displayed is as per
  1913. X!         the object at that time. The fastest way to accumulate trailing
  1914. X!         information is to turn trailing on and pop the menu down while running.
  1915. X  
  1916. X!         Note that in Alt-Az mode, if an object goes below the horizon the line
  1917. X!         segments of the trail are displayed but not the actual points.
  1918. X  
  1919. X!         Selecting "Persistent Label" will place the name of the object near it
  1920. X!         on the display. This will remain until the label is turned off. Note
  1921. X!         this option is maintained separately for trailed objects and for
  1922. X!         the untrailed objects; that is, you have independent control over
  1923. X!         labeling for a trailed object and its currently displayed object
  1924. X!         since the latter also always appears in the trailed list.
  1925. X  
  1926. X      The coordinates of the cursor are displayed in the corners of the circular
  1927. X      sky area as long as the cursor is within the central circle and the left
  1928. X***************
  1929. X*** 1082,1127 ****
  1930. X   For other object types, the remaining fields are defined as follows:
  1931. X  
  1932. X   elliptical format (e < 1):
  1933. X!     i = inclination, degrees
  1934. X!     O = longitude of ascending node, degrees
  1935. X!     o = argument of perihelion, degrees
  1936. X!     a = mean distance (aka semi-major axis), AU
  1937. X!     n = mean daily motion, degrees per day (computed from a**3/2 if omitted)
  1938. X!     e = eccentricity,
  1939. X!     M = mean anomaly (ie, degrees from perihelion),
  1940. X!     E = epoch date (ie, time of M),
  1941. X!     D = the equinox year (ie, time of i/O/o).
  1942. X!     g/k or H/G = magnitude model; select which by preceding the first field
  1943. X!         with either a "g" or an "H"; H/G is the default if neither is given.
  1944. X!     s = angular size at 1 AU, arc seconds, optional
  1945. X  
  1946. X   hyperbolic format (e > 1):
  1947. X!     T = epoch of perihelion
  1948. X!     i = inclination, degrees
  1949. X!     O = longitude of ascending node, degrees
  1950. X!     o = argument of perihelion, degrees
  1951. X!     e = eccentricity,
  1952. X!     q = perihelion distance, AU
  1953. X!     D = the equinox year (ie, time of i/O/o).
  1954. X!     g/k = magnitude model
  1955. X!     s = angular size at 1 AU, arc seconds, optional
  1956. X  
  1957. X   parabolic format (e == 1):
  1958. X!     T = epoch of perihelion
  1959. X!     i = inclination, degrees
  1960. X!     o = argument of perihelion, degrees
  1961. X!     q = perihelion distance, AU
  1962. X!     O = longitude of ascending node, degrees
  1963. X!     D = the equinox year (ie, time of i/O/o).
  1964. X!     g/k = magnitude model
  1965. X!     s = angular size at 1 AU, arc seconds, optional
  1966. X  
  1967. X   fixed format:
  1968. X!     RA, hours
  1969. X!     Declination, degrees
  1970. X!     magnitude
  1971. X!     reference epoch
  1972. X!     s = angular size, arc minutes, optional
  1973. X  @Object
  1974. X  Xephem supports two user-defined objects, denoted ObjX and ObjY. These may
  1975. X  be fixed objects or objects in elliptical, hyperbolic or parabolic
  1976. X--- 1087,1132 ----
  1977. X   For other object types, the remaining fields are defined as follows:
  1978. X  
  1979. X   elliptical format (e < 1):
  1980. X!         i = inclination, degrees
  1981. X!         O = longitude of ascending node, degrees
  1982. X!         o = argument of perihelion, degrees
  1983. X!         a = mean distance (aka semi-major axis), AU
  1984. X!         n = mean daily motion, degrees per day (computed from a**3/2 if omitted)
  1985. X!         e = eccentricity,
  1986. X!         M = mean anomaly (ie, degrees from perihelion),
  1987. X!         E = epoch date (ie, time of M),
  1988. X!         D = the equinox year (ie, time of i/O/o).
  1989. X!         g/k or H/G = magnitude model; select which by preceding the first field
  1990. X!             with either a "g" or an "H"; H/G is the default if neither is given.
  1991. X!         s = angular size at 1 AU, arc seconds, optional
  1992. X  
  1993. X   hyperbolic format (e > 1):
  1994. X!         T = epoch of perihelion
  1995. X!         i = inclination, degrees
  1996. X!         O = longitude of ascending node, degrees
  1997. X!         o = argument of perihelion, degrees
  1998. X!         e = eccentricity,
  1999. X!         q = perihelion distance, AU
  2000. X!         D = the equinox year (ie, time of i/O/o).
  2001. X!         g/k = magnitude model
  2002. X!         s = angular size at 1 AU, arc seconds, optional
  2003. X  
  2004. X   parabolic format (e == 1):
  2005. X!         T = epoch of perihelion
  2006. X!         i = inclination, degrees
  2007. X!         o = argument of perihelion, degrees
  2008. X!         q = perihelion distance, AU
  2009. X!         O = longitude of ascending node, degrees
  2010. X!         D = the equinox year (ie, time of i/O/o).
  2011. X!         g/k = magnitude model
  2012. X!         s = angular size at 1 AU, arc seconds, optional
  2013. X  
  2014. X   fixed format:
  2015. X!         RA, hours
  2016. X!         Declination, degrees
  2017. X!         magnitude
  2018. X!         reference epoch
  2019. X!         s = angular size, arc minutes, optional
  2020. X  @Object
  2021. X  Xephem supports two user-defined objects, denoted ObjX and ObjY. These may
  2022. X  be fixed objects or objects in elliptical, hyperbolic or parabolic
  2023. Xdiff -c v2.4b/xephem.man v2.4e/xephem.man
  2024. X*** v2.4b/xephem.man    Tue Jun  1 14:30:11 1993
  2025. X--- v2.4e/xephem.man    Wed May 19 14:12:37 1993
  2026. X***************
  2027. X*** 4,9 ****
  2028. X--- 4,11 ----
  2029. X  .SH Syntax
  2030. X  \fBxephem\fP
  2031. X  .SH Description
  2032. X+ .na
  2033. X+ .nh
  2034. X  .PP
  2035. X  .B Xephem
  2036. X  is an interactive astronomical ephemeris program for X Windows. It has built-in
  2037. X***************
  2038. X*** 37,51 ****
  2039. X  .B Xephem
  2040. X  has information about the Solar system planets and several moons
  2041. X  built in. These can be accessed without the need to access an external
  2042. X! database. However, if a database of objects is available then
  2043. X  .B xephem
  2044. X! can read this information into memory and use it as well. The database
  2045. X! is read in using the
  2046. X! .I DB...
  2047. X! pulldown. The objects may be inspected in detail, manipulated and assigned
  2048. X! to so-called `user defined objects' X and Y using the
  2049. X! .I ObjX/Y...
  2050. X! pulldown.
  2051. X  
  2052. X  All of the tabular data that 
  2053. X  .B xephem
  2054. X--- 39,55 ----
  2055. X  .B Xephem
  2056. X  has information about the Solar system planets and several moons
  2057. X  built in. These can be accessed without the need to access an external
  2058. X! database. In addition, if a database of objects is available then
  2059. X  .B xephem
  2060. X! can read this information into memory and use it as well. Database files
  2061. X! are read in using the
  2062. X! .I Data Base
  2063. X! button in the
  2064. X! .I Objects
  2065. X! pulldown. The objects in memory may be inspected in detail,
  2066. X! manipulated and assigned to so-called `user defined objects' X and Y using the
  2067. X! .I ObjX/Y
  2068. X! button in the same pulldown.
  2069. X  
  2070. X  All of the tabular data that 
  2071. X  .B xephem
  2072. X***************
  2073. X*** 60,65 ****
  2074. X--- 64,75 ----
  2075. X  .I Preferences
  2076. X  pulldown.
  2077. X  
  2078. X+ The
  2079. X+ .I Files
  2080. X+ pulldown in the main menu allows one to reset the main menu from the initial
  2081. X+ resource settings; toggle whether the general messages menu is display; and
  2082. X+ quit the program.
  2083. X+ 
  2084. X  Finally, the
  2085. X  .I Help
  2086. X  pulldown provides several categories of assistance applicable to the overall
  2087. X***************
  2088. X*** 85,95 ****
  2089. X  code is in xephem.c surrounded by #ifdef WANT_EDITRES.
  2090. X  .SH Author
  2091. X  .PP
  2092. X! Elwood Downey, currently at ecdowney@pobox.cca.cr.rockwell.com
  2093. X  .SH See also
  2094. X  .PP
  2095. X! Ephem, the ancestor of xephem suitable for "dumb" 24x80 character displays,
  2096. X  including VMS and DOS as well as UNIX.
  2097. X  .PP
  2098. X! Ephem and xephem are both on export.lcs.mit.edu; look for contrib/ephem*
  2099. X  and contrib/xephem* for the latest releases.
  2100. X--- 95,109 ----
  2101. X  code is in xephem.c surrounded by #ifdef WANT_EDITRES.
  2102. X  .SH Author
  2103. X  .PP
  2104. X! Elwood Downey, currently at ecdowney@pobox.cca.cr.rockwell.com.
  2105. X  .SH See also
  2106. X  .PP
  2107. X! .B Ephem,
  2108. X! the ancestor of xephem suitable for "dumb" 24x80 character displays,
  2109. X  including VMS and DOS as well as UNIX.
  2110. X  .PP
  2111. X! .B Ephem
  2112. X! and
  2113. X! .B xephem
  2114. X! are both on export.lcs.mit.edu; look for contrib/ephem*
  2115. X  and contrib/xephem* for the latest releases.
  2116. X
  2117. END_OF_FILE
  2118.   if test 69363 -ne `wc -c <'xephem.p1'`; then
  2119.     echo shar: \"'xephem.p1'\" unpacked with wrong size!
  2120.   fi
  2121.   # end of 'xephem.p1'
  2122. fi
  2123. echo shar: End of archive.
  2124. exit 0
  2125. exit 0 # Just in case...
  2126. -- 
  2127.   // chris@IMD.Sterling.COM       | Send comp.sources.x submissions to:
  2128. \X/  Amiga - The only way to fly! |    sources-x@imd.sterling.com
  2129.  "It's intuitively obvious to the |
  2130.   most casual observer..."        | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
  2131.