{
ssBuff[l] = mmBuff[l + index + 1]; //add 1 to skip the ','
}
+
+ char *pLocal;
+ std::unique_ptr<char> pCurrentLocal(null);
+ pLocal = setlocale (LC_ALL, 0); // Get the name of the current locale.
+ if( pLocal == null )
+ {
+ SysLog(NID_CNT, "setlocale failed. (get current locale)");
+ continue;
+ }
+ pCurrentLocal.reset(strdup (pLocal));
+
+ pLocal = setlocale(LC_ALL, "C");
+ if( pLocal == null )
+ {
+ SysLog(NID_CNT, "setlocale failed. (set POSIX C locale)");
+ continue;
+ }
+
double ddVal = atof(buf); // degree value
double mmVal = atof(mmBuff); // minutesvalue
double ssVal = atof(ssBuff); // seconds value
+
+ pLocal = setlocale (LC_ALL, pCurrentLocal.get()); // restore the locale.
+ if( pLocal == null )
+ {
+ SysLog(NID_CNT, "setlocale failed. (set current locale)");
+ continue;
+ }
+
pMetadata->latitude = ddVal + (mmVal/MINUTES) + (ssVal/SECONDS);
// if latitude designation is Southern (SOUTH) then latitude degree will be negative DD
{
ssBuff[l] = mmBuff[l + index + 1]; //add 1 to skip the ','
}
+
+ char *pLocal;
+ std::unique_ptr<char> pCurrentLocal(null);
+ pLocal = setlocale (LC_ALL, 0); // Get the name of the current locale.
+ if( pLocal == null )
+ {
+ SysLog(NID_CNT, "setlocale failed. (get current locale)");
+ continue;
+ }
+ pCurrentLocal.reset(strdup (pLocal));
+
+ pLocal = setlocale(LC_ALL, "C");
+ if( pLocal == null )
+ {
+ SysLog(NID_CNT, "setlocale failed. (set POSIX C locale)");
+ continue;
+ }
+
double ddVal = atof(buf); // degree value
double mmVal = atof(mmBuff); // minutesvalue
double ssVal = atof(ssBuff); // seconds value
+
+ pLocal = setlocale (LC_ALL, pCurrentLocal.get()); // restore the locale.
+ if( pLocal == null )
+ {
+ SysLog(NID_CNT, "setlocale failed. (set current locale)");
+ continue;
+ }
+
pMetadata->longitude = ddVal + (mmVal/MINUTES) + (ssVal/SECONDS);
// if longitude designation is Western (WEST) then longitude degree will be negative DD