Autor Thema: Fehler im GEMDOS  (Gelesen 74 mal)

1 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Count

  • Benutzer
  • Beiträge: 265
Fehler im GEMDOS
« am: Gestern um 15:04:30 »
Ist der GEMDOS-Bug, dass Pfadangaben keine doppelten Backslashes enthalten dürfen, bekannt? Ich habe nirgendwo etwas darüber finden können. Wenn versucht wird, mit Fopen eine Datei zu öffnen, und in der Pfadangabe doppelte Backslashes verwendet werden, wird diese Datei nicht gefunden und Fopen liefert EFILNF zurück.

Dabei scheint es egal zu sein, an welcher Stelle im Pfad bzw. bei welcher Verzeichnisbaumtiefe der doppelte Backslash vorkommt.

Getestet habe ich das ganze mit Hatari und TOS 3.06, 2.06, 1.04 und KAOS (14121990) sowie auf meinem MegaSTE mit TOS 2.06. Im Emulator tritt der Fehler übrigens nicht bei GEMDOS-Laufwerken auf, sondern nur bei Festplatten- (und vermutlich Disketten-) Images.

Hier ein kleines Beispiel in GFA-Basic:
path$="C:\\NEWDESK.INF"+CHR$(0)
pathaddr%=VARPTR(path$)
handle%=GEMDOS(61,L:pathaddr%,0)
IF handle%<0
  PRINT "Fehler ";handle%
ELSE
  VOID GEMDOS(62,handle%)
ENDIF

Passend dazu liefert fopen() in C natürlich einen NULL-Pointer:
#include <stdio.h>
#include <errno.h>

int main()
{
    FILE *fp = fopen("C:\\\\NEWDESK.INF", "r");

    if (fp == NULL) {
        printf("Fehler %d\n", errno);
    } else {
        fclose(fp);
    }

    return 0;
}
« Letzte Änderung: Gestern um 15:31:51 von Count »

Offline kernal

  • Benutzer
  • Beiträge: 180
Re: Fehler im GEMDOS
« Antwort #1 am: Gestern um 16:05:08 »
Wieso sollte das ein Fehler sein? Zwei Pafdtrenner direkt hintereinander ergeben keinen Sinn. Die Aufrufparameter sind Fehlerhaft. Da Pfadangaben heutzutage leider häufig lasch gehandhabt werden, tolerieren viele moderne Betriebssysteme dieses Fehlverhalten. Daher funktioniert das höchstwahrscheinlich im Emulator auch mit GEMDOS-Laufwerken - ich nehme an, der Emulator reicht den Pfad ungeprüft an das Host-OS weiter und überlässt dem die Prüfung.