110 |
static gint |
static gint |
111 |
parse (gchar * s, gdouble * lat, gdouble * lon) |
parse (gchar * s, gdouble * lat, gdouble * lon) |
112 |
{ |
{ |
113 |
register gchar *i, *t = NULL, *e; |
gchar *i, *t = NULL, *e; |
114 |
|
gboolean first = TRUE; |
115 |
|
|
116 |
e = s + strlen (s); |
e = s + strlen (s); |
117 |
for (i = s; i < e; ++i) |
for (i = s; i < e; ++i) |
118 |
|
{ |
119 |
|
if (g_ascii_isalpha (*i)) |
120 |
{ |
{ |
121 |
switch (*i) |
if (first) |
122 |
{ |
{ |
123 |
case 'n': |
*i = '\0'; |
124 |
case 'N': |
t = i + 1; |
125 |
*i = '\0'; |
first = FALSE; |
126 |
t = i + 1; |
if (g_strrstr (s, _("N")) == 0) |
127 |
*lat = atof (s); |
*lat = atof (s); |
128 |
break; |
else |
129 |
case 's': |
*lat = -atof (s); |
130 |
case 'S': |
} |
131 |
*i = '\0'; |
else |
132 |
t = i + 1; |
{ |
133 |
*lat = -atof (s); |
*i = '\0'; |
134 |
break; |
if (g_strrstr (s, _("E")) == 0) |
135 |
case 'e': |
*lon = -atof (t); |
136 |
case 'E': |
else |
137 |
*i = '\0'; |
*lon = atof (t); |
138 |
*lon = -atof (t); |
} |
|
break; |
|
|
case 'w': |
|
|
case 'W': |
|
|
*i = '\0'; |
|
|
*lon = atof (t); |
|
|
break; |
|
|
} |
|
139 |
} |
} |
140 |
|
} |
141 |
|
|
142 |
*lat = dm2dec (*lat); |
*lat = dm2dec (*lat); |
143 |
*lon = dm2dec (*lon); |
*lon = dm2dec (*lon); |