X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fenvironment%2Fmetar.cxx;h=79401e39419d3680ae0495f1d68b34da42cfb987;hb=aa2ed5fb0cb16766f440231f23581bb90e9963d8;hp=d0dd28c16ecd34ab123880543c539d3d4ce8039f;hpb=4e7fe460a5c5c1b64dd1d540bc197dbb89614b7f;p=simgear.git diff --git a/simgear/environment/metar.cxx b/simgear/environment/metar.cxx index d0dd28c1..79401e39 100644 --- a/simgear/environment/metar.cxx +++ b/simgear/environment/metar.cxx @@ -24,6 +24,9 @@ * @file metar.cxx * Interface for encoded Meteorological Aerodrome Reports (METAR). */ +#ifdef HAVE_CONFIG_H +# include +#endif #include #include @@ -156,7 +159,7 @@ void SGMetar::useCurrentDate() { struct tm now; time_t now_sec = time(0); -#if defined( _MSC_VER ) || defined ( __MINGW32__ ) +#ifdef _WIN32 now = *gmtime(&now_sec); #else gmtime_r(&now_sec, &now); @@ -490,7 +493,6 @@ bool SGMetar::scanVisibility() distance = i; } else { // M?(\d{1,2}|\d{1,2}/\d{1,2}|\d{1,2} \d{1,2}/\d{1,2})(SM|KM) - modifier = 0; if (*m == 'M') m++, modifier = SGMetarVisibility::LESS_THAN; @@ -744,6 +746,14 @@ bool SGMetar::scanSkyCondition() int i; SGMetarCloud cl; + if (!strncmp(m, "//////", 6)) { + m += 6; + if (!scanBoundary(&m)) + return false; + _m = m; + return true; + } + if (!strncmp(m, "CLR", i = 3) // clear || !strncmp(m, "SKC", i = 3) // sky clear || !strncmp(m, "NSC", i = 3) // no significant clouds @@ -833,7 +843,7 @@ bool SGMetar::scanTemperature() return false; if (!scanBoundary(&m)) { if (!strncmp(m, "XX", 2)) // not spec compliant! - m += 2, sign = 0; + m += 2, sign = 0, dew = temp; else { sign = 1; if (*m == 'M') @@ -1171,7 +1181,7 @@ const struct Token *SGMetar::scanToken(char **str, const struct Token *list) { const struct Token *longest = 0; int maxlen = 0, len; - char *s; + const char *s; for (int i = 0; (s = list[i].id); i++) { len = strlen(s); if (!strncmp(s, *str, len) && len > maxlen) {