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