ich schlage folgenden patch vor
Index: fhem.pl
===================================================================
--- fhem.pl (Revision 5411)
+++ fhem.pl (Arbeitskopie)
@@ -435,10 +435,14 @@
if($attr{global}{configfile} eq 'configDB') {
my $ret = cfgDB_ReadAll(undef);
+ $attr{global}{motd} .= "\n\nError on loading fhem. Check your configuration!\n".
+ "Set global attr motd to none to confirm and delete this message." if($ret);
Log 1, "configDB: $ret" if($ret);
} else {
my $ret = CommandInclude(undef, $attr{global}{configfile});
+ $attr{global}{motd} .= "\n\nError on loading fhem. Check your configuration!\n".
+ "Set global attr motd to none to confirm and delete this message." if($ret);
Log 1, "configfile: $ret" if($ret);
if($attr{global}{statefile} && -r $attr{global}{statefile}) {
der diese Ausgabe erzeugt:
(http://up.picr.de/17840125sk.png)
falls während des Startens von fhem irgenwelche Fehler festgestellt wurden. Damit soll dem Anwender direkt signalisiert werden, dass irgendetwas nicht stimmt und er die Möglichkeit hat, seine Konfiguration zu prüfen BEVOR er das nächste "save config" durchführt und damit die nichtausgeführten defines etc. endgültig aus seiner Konfiguration löscht.
Diskussion dazu wurde z.B. hier geführt: http://forum.fhem.de/index.php/topic,22096.0.html
ich schlage zusätzlich folgenden patch vor:--- /Users/andre/fhem-code/fhem/FHEM/98_telnet.pm 2014-02-08 10:10:07.000000000 +0100
+++ 98_telnet.pm 2014-04-02 12:48:57.000000000 +0200
@@ -187,8 +187,11 @@
$chash->{encoding} = AttrVal($name, "encoding", "utf8");
syswrite($chash->{CD}, sprintf("%c%c%c", 255, 253, 0) ) if( AttrVal($name, "encoding", "") ); #DO BINARY
$chash->{CD}->flush();
- syswrite($chash->{CD}, sprintf("%c%c%cPassword: ", 255, 251, 1)) # WILL ECHO
- if(telnet_pw($name, $chash->{NAME}));
+ if(telnet_pw($name, $chash->{NAME})) {
+ syswrite($chash->{CD}, sprintf("%c%c%cPassword: ", 255, 251, 1)) # WILL ECHO
+ } else {
+ syswrite($chash->{CD}, $attr{global}{motd});
+ }
return;
}
@@ -238,6 +241,7 @@
if($ret) {
$hash->{pwEntered} = 1;
+ syswrite($hash->{CD}, $attr{global}{motd});
next;
} else {
if($hash->{isClient}) {
damit wird die globale nachricht auch bei telnet verbinungen ausgegeben.
@betateilchen: habs etwas zusammengefasst, und auf "auto-delete" umgestellt, kannst du bitte pruefen, ob es noch funktioniert?
@justme1968: damit habe ich Probleme, da vermutlich etliche Programme, die per telnet was ausloesen, stoeren wuerde. Vermutlich waere es aber ok, wenn das motd vor dem ersten Prompt (fhem> ) kommen wuerde. Eure Meinung?
du hast recht. ich habe aber leider keine gute idee wie man das vermeiden kann.
da sind wir übrigens auch wieder bei dem alten problem das ich so lange kein fhem> prompt habe bis ich eine leerzeile eingebe. das finde ich aber sehr positiv weil so copy und paste viel besser geht und ich mich jedes mal ärgere wenn der prompt kommt.
ich hab grad nochwas entdeckt - momentchen.
So, jetzt nochmal...
Zitat von: rudolfkoenig am 02 April 2014, 13:10:16
@betateilchen: habs etwas zusammengefasst, und auf "auto-delete" umgestellt, kannst du bitte pruefen, ob es noch funktioniert?
getestet und folgenden Bug gefunden:
falsch:
if($cfgRet) {
$attr{global}{motd} = "$cfgErrMsg,\ncheck the Logfile for details.";
richtig:
if($cfgRet) {
$attr{global}{motd} = "$cfgErrMsg\n$cfgRet\ncheck the Logfile for details.";
Sonst werden die gesammelten Fehlermeldungen nicht - wie vorgesehen - angezeigt.
Ansonsten habe ich den Positiv- wie den Negativfall sowohl mit fhem.cfg als auch mit configDB erfolgreich getestet.
Zitat von: rudolfkoenig am 02 April 2014, 13:10:16Vermutlich waere es aber ok, wenn das motd vor dem ersten Prompt (fhem> ) kommen wuerde. Eure Meinung?
Dazu kann ich keine Meinung äußern, da ich mit telnet nicht arbeite.
Aber vermutlich hast Du mit der Ausgabe vor dem ersten Prompt recht.
damit Rudi es nicht vergißt/übersieht: *hochschubs*
@betateilchen: Bug ist das sicher keins, hoechstens unpraktisch. Ich weise bereits in der Meldung darauf hin, dass die Details in der Log zu finden sind, wenn ich die Fehler auch ausgebe, dann kann ich den Hinweis sparen. Ich finde es so "ordentlicher", aber das ist sicher Ansichtssache.
@justme1968: habe gerade gesehen, dass telnet diese Meldung vor dem ersten Prompt bereits jetzt schon ausgibt.
Zitat von: rudolfkoenig am 03 April 2014, 14:14:04
@betateilchen: Bug ist das sicher keins, hoechstens unpraktisch.
hm, dann hab ich Deine Intention im Coding falsch interpretiert. (Obwohl sich ja auch kein Problem daraus ergeben würde, gleich die gesammelten Fehlermeldungen mit auszugeben, wenn man schon darauf hinweist, dass welche exisiteren)
Ok, ich warte dann mal, bis der erste User danach fragt, warum man die eigentliche Fehlermeldung nicht gleich angezeigt bekommt 8)