Nein, alte TOS-Versionen verhalten sich nur anders.
Ohne es jetzt direkt testen zu können, aber folgendes sollte unabhängig vom TOS funktionieren:
(unter der Annahme, das C:\ das aktuelle Verzeichnis ist wenn das Label von C gelöscht werden soll,
ansonsten müssen die Pfadnamen entsprechend zusammengebastelt werden)
DTA dta;
DTA *olddta;
int ret;
olddta = Fgetdta();
Fsetdta(&dta);
ret = 0;
if (Fsfirst("C:\*.*", FA_VOLUME) == 0)
{
/* altes Label löschen. Alte TOS-Versionen veweigern dies mit -33 */
ret = Fdelete(dta.d_fname);
if (ret == -33)
{
/* normale Datei mit gleichem Namen anlegen */
ret = (int)Fcreate(dta.d_fname, 0);
if (ret > 0)
{
Fclose(ret);
ret = Fdelete(dta.d_fname);
}
}
}
Fsetdta(olddta);
return ret;
Danach kann dann ein neues Label angelegt werden, wenn gewünscht.