Martin Schnitkemper wrote:
> Am Montag, 10.01.2022 01:22 schrieb Marcel Logen:
> >
> > Beim Speichern eines Artikels aus der Quelltext-Ansicht
> > sollte der Artikel-Text der eventuell vorhandenen Datei
> > *angefügt* werden statt die Datei zu überschreiben.
>
> In dem Zusammenhang ist mir folgendes aufgefallen (getestet mit 1.0.1pre4):
>
> (1) Wenn ich einen Artikel speichern möchte, wird mir als Dateiname mein
> Homeverzeichnis angeboten und die Schaltfläche "Speichern" ist aktiv. Das
> darf nicht sein, weil der Ordner keine reguläre Datei ist;
Ja, das sieht nach Bug aus. Dieses Fenster stammt aber nicht von flnews,
sondern aus der FLTK-Bibliothek. Da kann auch ein anderer Dateiauswahl-
Dialog erscheinen, je nach Betriebssystem und Konfiguration.
> die Speicherung
> habe ich mir erst mal verkniffen weil ich nicht riskieren wollte, am Ende
> $HOMEless dazustehen.
Wenn ich die POSIX Dokumentation richtig interpretiere, dann kann man
Verzeichnisse mit open() nicht zum schreiben öffnen:
<
https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html>
|
| These functions shall fail if:
| [...]
| EISDIR
| The named file is a directory and oflag includes O_WRONLY or O_RDWR,
| or includes O_CREAT without O_DIRECTORY.
In unserem Fall sind beide Bedingungen erfüllt. Testprogramm:
------------------------------------------------------------------------
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int retval = open("/tmp/x",
O_WRONLY | O_CREAT | O_TRUNC,
S_IRUSR | S_IWUSR);
if (-1 == retval)
{
perror("Error");
exit(EXIT_FAILURE);
}
else
{
printf("OK\n");
exit(EXIT_SUCCESS);
}
}
------------------------------------------------------------------------
Es funktioniert wie erwartet (nicht). Wenn "/tmp/x" bereits existiert,
und ein Verzeichnis ist, wird der Versuch mit EISDIR abgewiesen.
Getestet auf NetBSD und GNU/Linux.
flnews sagt dann "Operation failed".
Akuter Handlungsbedarf besteht da also wohl nicht.
> Die Schaltfläche müsste beim Eintritt in ein
> Verzeichnis bzw. Aufruf des Dialogs immer inaktiv sein.
Ja, das sehe ich auch so.
> (2) Wenn ich mich in der angebotenen Verzeichnisstruktur bewege, ist die
> Schaltfläche zur Speicherung richtigerweise inaktiv und wird erst wieder
> aktiv, wenn ich im Feld "Dateiname" das vorgegebene Verzeichnis um einen
> Dateinamen erweitere.
Kann ich ebenfalls reproduzieren.
> (3) Ich fände es angenehmer, wenn als Vorgabe im Feld "Dateiname" auch
> wirklich schon ein Dateiname stünde, beispielsweise die eindeutige MSGID,
> der ja vom Benutzer immer noch angepasst werden könnte, entweder manuell
> oder als Auswahl einer Datei im Verzeichnis. So muss der Benutzer ja
> jedes Mal einen Dateinamen eintragen oder aus dem Dateisystem einen
> vorhandenen wählen.
Das hört sich prinzipiell sinnvoll an.
> Das Anfügen an eine bestehende Datei halte ich nicht für
> ideal, weil im ungünstigen Fall dann eine Datei mit mehrfachem, gleichen
> Inhalt entstehen würde.
Gefällt mir auch nicht.
> > Ich meine, ich hätte mich da vor einiger Zeit beim Ab-
> > speichern mal verklickt und dadurch versehentlich eine
> > Datei überschrieben.
>
> Da wäre ein vorgeschalteter Dialog wünschenswert, ob die Datei
> überschrieben (oder optional der Inhalt angefügt) werden soll. Jetzt wird
> ohne eine Rückfrage jede Datei, egal welchen Inhalts, ersetzt.
Was leicht machbar wäre ist eine "Wollen sie wirklich überschreiben?"
Abfrage.
> Wenn man den Dialog mit drei Schaltflächen ("Ersetzen", "Anhängen" und
> "Abbrechen") versehen würde, wären wahrscheinlich alle Interessen
> abgedeckt.
Das funktioniert nicht, dieses Fenster stammt nicht von flnews s.o.
und könnte z.B. auch ein Apple- oder GTK-Dateiauswahldialog sein.