On 29.01.08 10:08:16, Andreas Pakulat wrote:
> On 29.01.08 09:35:11, Christian Stimming wrote:
> > Quoting Andreas Pakulat <[EMAIL PROTECTED]>:
> > Wenn sich die Uhrzeit durch 
> > die ktoblzcheck-Umstellung ändern sollte, dann schau erstmal dort in 
> > src/lib/ktoblzcheck.cc rein. Natürlich ist dort bei einem setenv() auf 
> > TZ=CET auch anschließend wieder eine Rück-Umstellung auf den vorigen Wert 
> > implementiert. Allerdings scheinen die getenv/setenv-Funktionen relativ 
> > frickelig zu sein.
> 
> Eigentlich nicht, aber nach dem setenv("TZ", "CET", 1); wird in tzset();
> aufgerufen. Danach wird TZ auf den alten Wert zurueckgesetzt (bei mir
> "") und dann wird der eigentliche Code ausgefuehrt. Irgendwie ist mir
> das suspekt. 2 Dinge:
>
> a) es fehlt ein tzset(); nach dem zuruecksetzen von "TZ"?
> b) Sollte das zuruecksetzen nicht erst am Ende des relevanten Codes
> passieren?
> 
> Ich werd das jetzt mal testen.

So, fertig getestet. Problem ist das setenv("TZ", "", 1) !=
unsetenv("TZ"). Und man tzset erklaert warum das ein Problem ist.
/etc/localtime wird nur gelesen wenn TZ nicht gesetzt ist (also auch
nicht auf nen leeren String).

Der angehaengte Patch fixt das Problem.

Andreas

-- 
Everything that you know is wrong, but you can be straightened out.
diff -u -ur ktoblzcheck-1.16/src/lib/ktoblzcheck.cc 
ktoblzcheck-1.16.new/src/lib/ktoblzcheck.cc
--- ktoblzcheck-1.16/src/lib/ktoblzcheck.cc     2007-11-07 23:05:25.000000000 
+0100
+++ ktoblzcheck-1.16.new/src/lib/ktoblzcheck.cc 2008-01-29 10:15:59.000000000 
+0100
@@ -379,14 +379,16 @@
    // Set the timezone information hard to CET (Central European Time)
    // because that's what specifies the (German, after all) bankdata.
    char *old_TZ_p = getenv("TZ");
-   std::string old_TZ(old_TZ_p ? old_TZ_p : "");
    //cout << "Old TZ: " << old_TZ << endl;
    setenv("TZ", "CET", 1); // setenv() unavailable of windows/mingw
 #endif
    tzset();
    // and reset the env variable TZ again.
 #if !defined(__MINGW32__) | !defined(_WIN32)
-   setenv("TZ", old_TZ.c_str(), 1);
+   if( old_TZ_p )
+     setenv("TZ", old_TZ_p, 1);
+   else
+     unsetenv("TZ");
 #endif
 
    // In the long run, this method should rather look up the available
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Aqbanking-devel mailing list
Aqbanking-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to