if {![exists -proc _del_bindir]} { source /mod/webif/lib/setup require ts.class system.class tdelete if {[system pkginst undelete]} { set _del_dustbin [system dustbin] } else { set _del_dustbin "" } proc _del_bindir {file} { global _del_dustbin set dir [file dirname $file] regsub "^[system mediaroot]" $dir $_del_dustbin ndir if {$dir eq $ndir} { set ndir $_del_dustbin } system mkdir_p $ndir return $ndir } proc _del_touch {file} { exec /mod/bin/busybox/touch $file } proc safe_delete {file} { global _del_dustbin # Check if the file is already in the dustbin if {$_del_dustbin ne "" && [\ string first $_del_dustbin $file] > -1} { set dustbin "" } else { set dustbin $_del_dustbin } # Directory if {[file isdirectory $file]} { if {$dustbin ne ""} { set ndir "[_del_bindir $file]/[file tail $file]" while {[file isdirectory $ndir]} { append ndir "_" } file rename $file $ndir _del_touch $ndir } else { tdelete $file } return 1 } if {[string match {*.ts} $file]} { set ts [ts fetch $file] # Check TS validity if {![catch {$ts get file}]} { if {$dustbin ne ""} { $ts move [_del_bindir $file] 1 1 } else { if {[$ts delete]} { return 1 } else { return 0 } } return 1 } } # otherwise treat as normal file. if {$dustbin ne ""} { set nfile "[_del_bindir $file]/[file tail $file]" file rename $file $nfile _del_touch $nfile } else { tdelete $file } catch {file delete "[file rootname $file].hmi"} return 1 } }