3 * static const char SCCSID[]="@(#)geod_set.c 4.8 95/09/23 GIE REL";
13 void geod_set(int argc, char **argv)
15 paralist *start = 0, *curr = NULL; /* added NULL */
21 * put arguments into internal linked list
24 emess(1, "no arguments in initialization list");
25 for (i = 0; i < argc; ++i)
27 curr = curr->next = pj_mkparam(argv[i]);
29 start = curr = pj_mkparam(argv[i]);
31 * set elliptical parameters
33 if (pj_ell_set(start, &geod_a, &es))
34 emess(1, "ellipse setup failure");
38 if ((name = pj_param(start, "sunits").s)) { /* added parentheses */
41 for (i = 0; (s = pj_units[i].id) && strcmp(name, s); ++i);
43 emess(1, "%s unknown unit conversion id", name);
44 fr_meter = 1. / (to_meter = atof(pj_units[i].to_meter));
46 to_meter = fr_meter = 1.;
47 if ((ellipse = es != 0.)) { /* added parentheses */
52 f64 = geod_f * geod_f / 64;
55 geod_f = f2 = f4 = f64 = 0.;
58 * check if line or arc mode
60 if (pj_param(start, "tlat_1").i) {
63 phi1 = pj_param(start, "rlat_1").f;
64 lam1 = pj_param(start, "rlon_1").f;
65 if (pj_param(start, "tlat_2").i) {
66 phi2 = pj_param(start, "rlat_2").f;
67 lam2 = pj_param(start, "rlon_2").f;
70 } else if ((geod_S = pj_param(start, "dS").f)) { /* added
73 al12 = pj_param(start, "rA").f;
77 emess(1, "incomplete geodesic/arc info");
78 if ((n_alpha = pj_param(start, "in_A").i) > 0) {
79 if (!(del_alpha = pj_param(start, "rdel_A").f))
80 emess(1, "del azimuth == 0");
81 } else if ((del_S = fabs(pj_param(start, "ddel_S").f))) { /* added
84 n_S = geod_S / del_S + .5;
85 } else if ((n_S = pj_param(start, "in_S").i) <= 0)
86 emess(1, "no interval divisor selected");
91 for (; start; start = curr) {