Mal die Eigeninitiative selbst ergriffen und folgendes gebastelt:
Code: Alles auswählen
Procedure trashfile(file$)
If FileSize(file$) = -2 : ProcedureReturn #False : EndIf
targetdir1$ = GetHomeDirectory() + ".local/share/Trash/files/"
targetdir2$ = GetHomeDirectory() + ".local/share/Trash/info/"
targetfile$ = GetFilePart(file$)
If FileSize(targetdir1$ + targetfile$) >= 0
; eine Datei mit gleichem Namen existiert bereits im Trash
; Prüfung, ob eine Datei mit Zählklammer (1) besteht und wenn ja, (2), (3), usw. testen
counter = 1
While FileSize(targetdir1$ + targetfile$ + "(" + Str(counter) + ")") >= 0
counter + 1 ; Zähler ums 1 erhöhen
Wend
targetfile$ = targetfile$ + "(" + Str(counter) + ")"
EndIf
result = RenameFile(file$, targetdir1$ + targetfile$)
If result
;wenn verschieben erfolgreich
cf = CreateFile(#PB_Any, targetdir2$ + targetfile$ + ".trashinfo")
If cf
;wenn Trashinfo erstellt werden kann
WriteStringN(cf, "[Trash Info]")
WriteStringN(cf, "Path=" + file$)
WriteStringN(cf, "DeletionDate=" + FormatDate("%yyyy-%mm-%ddT%hh:%ii:%ss", Date()))
CloseFile(cf)
ProcedureReturn #True
Else
;Fehler bei Erstellen der Trashinfo -> Datei wieder restaurieren
RenameFile(targetdir1$ + targetfile$, file$)
ProcedureReturn #False
EndIf
Else
;wenn verschieben nicht erfolgreich
ProcedureReturn #False
EndIf
EndProcedure
würde die Datei test.txt in den Papierkorb schieben.
Keine Ahnung, ob das Gebastelte die Anforderungen voll erfüllt oder nur scheinbar funktioniert. Habe das auch erstmal auf einzelne Dateien beschränkt, Verzeichnisse müssten da wohl etwas anders gehandhabt werden.
Meine Fragen wären jetzt noch:
* Muss das Betriebssystem darüber informiert werden, dass sich was im Trash verändert hat. Wenn ja, wie?
* Muss die fortlaufende Nummerierung zur Chronologie passen oder ist das egal, da es nur um die Unterscheidung der Dateien geht.
Vielleicht kann da jemand noch etwas mehr Licht ins Dunkel bringen