Christian Seiler: fgets Problem wenn Datei 0 enthält

Beitrag lesen

Hallo Tom,

Und red nicht um den Brei rum, das ist einfach schlampig impelmentiert!

Nein. Es ist vielleicht nicht sonderlich logisch _definiert_ (wie gesagt: getMonths() in Javascript ist ein weiteres Beispiel), aber an der _Implementierung_ selbst ist nichts auszusetzen.

Das war aber schon immer so und ist auch gut dokumentiert.

Und weil es immer so war, muss es auch immer so bleiben?

Wenn Du das Verhalten einer Funktion von heute auf morgen einfach ändern würdest, was meinst Du, wie viele Programme dann plötzlich nicht mehr funktionieren würden?

Es ist aber durchaus legitim, wenn ich auf mögliche Probleme mit der Funktion hinweise, da sie nachvollziehbar vielen PHP-Programmierern genau an dieser Stelle Schwierigkeiten bereitet.

Du kommst in einem Posting an und wirfst wieder schwammige Kritik um Dich, dass irgendwelche PHP-Funktionen "Probleme" machen würden - und das liest sich so, als ob die Implementierung dieser Funktionen defekt sei. In diesem Kontext habe ich "Probleme" gelesen. Ich habe es als hirnrissig bezeichnet, so zu argumentieren.

Wenn Du der Auffassung bist, dass die Semantiken der Funktion nicht wirklich toll sind (und da stimme ich Dir zu) und das auch unmissverständlich rüberbringst, dann sage ich auch nichts weiter.

Wenn Du aber (wie so oft) einfach nur schwammige Bemerkungen über irgend etwas machst (die sich in der Vergangenheit bei Dir sehr oft als vollkommen substanzlos herausgestellt haben), dann brauchst Du bitte nicht erwarten, dass jeder Dich hier korrekt versteht.

Betrachten wir mal Dein ursprüngliches Posting und sehen es uns mal an:

haben seit einiger Zeit ein Problem

Total schwammig. Impliziert vor allem, dass beide Funktionen vom gleichen Problem betroffen sind.

Es werden nicht soviele Nutz-Zeichen gelesen, wie Du in Auftrag gibst, sondern ein oder zwei weniger.et

Wieder total schwammig. Hier wird (in dem Posting alleine) absolut nicht klar, was Du sagen willst. "in Auftrag gibst" impliziert, dass die Funktion sich nicht korrekt verhält, nicht, dass sie einfach anders als erwartet definiert ist. Außerdem "ein oder zwei weniger" deutet darauf hin, dass Du es selbst nicht so genau weißt.

fread() darf z.B. nicht mehr auf 0 Bytes ausgeführt werden. Das ist typischer Juppi-Unsinn. Da wird die Eigensicherheit von Funktionen, die über Genarationen geschaffen wurde, verspielt...

Hier sind gleich vier Punkte drin:

a) "auf 0 Bytes ausgeführt werden" habe ich beim ersten Lesen so verstanden, als ob in der Datei nur noch 0 Bytes übrig wären / die Netzwerkverbindung schon zu wäre. Dann funktioniert fread() aber korrekt.

b) (siehe dazu v.a. den Rest meiner anderen Postings) Als Du dann endlich erläutert hast, was Du damit genau meinst, wird klar, dass das irgendwie ziemlicher Unsinn ist, den Du da haben willst. Was dann die Glaubwürdigkeit der Kritik selbst nochmal drastisch herabsetzt.

c) "Juppi-Unsinn": no comment...

d) "die über Genarationen geschaffen wurde, verspielt": Erst beschwerst Du Dich, dass fgets() unlogisch ist, obwohl es dem C-Standard folgt, dann regst Du Dich aber darüber auf, dass sich fread() angeblich nicht an Konventionen hält. Entscheide Dich doch bitte mal.

Um mal eine Formulierung anzubieten, die Du in Deinem ursprünglichen Posting hättest verwenden können zu fgets():

---------- snip ----------
Ich möchte Dich noch vor fgets() in PHP warnen, das verhält sich nicht, wie
ein normaler Mensch es erwarten würde: Statt maximal $puffergroesse Zeichen
werden nur $puffergroesse - 1 Zeichen eingelesen, wenn eine Zeile mal länger
als erwartet sein sollte.
---------- snip ----------

Oder irgendwie so ähnlich. Das wäre kurz, prägnant, klar und unmissverständlich gewesen. Dann hätte hier auch keiner etwas gesagt.

Viele Grüße,
Christian