mirror of
https://codeberg.org/cage/tinmop/
synced 2025-02-08 07:08:39 +01:00
- added exit handler to clean temporary files.
This commit is contained in:
parent
543f699ee4
commit
99977af671
@ -248,6 +248,8 @@
|
||||
(text-utils:strcat home *directory-sep*)
|
||||
home)))
|
||||
|
||||
(defparameter *temporary-files-created* ())
|
||||
|
||||
(defun temporary-file (&optional (temp-directory nil))
|
||||
(let ((tmpdir (or temp-directory
|
||||
(os-utils:default-temp-dir))))
|
||||
@ -258,8 +260,13 @@
|
||||
(nix:mkstemp (format nil "~atmp~a~a" *directory-sep* *directory-sep*
|
||||
config:+program-name+)))
|
||||
(declare (ignore x))
|
||||
(push filename *temporary-files-created*)
|
||||
filename)))
|
||||
|
||||
(defun clean-temporary-files ()
|
||||
(dolist (temporary-file *temporary-files-created*)
|
||||
(delete-file-if-exists temporary-file)))
|
||||
|
||||
(defmacro with-anaphoric-temp-file ((stream &key (prefix nil) (unlink nil)) &body body)
|
||||
`(let ((temp-file (temporary-file ,prefix))) ; anaphora
|
||||
(unwind-protect
|
||||
|
@ -283,7 +283,9 @@
|
||||
:delete-file-if-exists
|
||||
:file-hash
|
||||
:home-dir
|
||||
:*temporary-files-created*
|
||||
:temporary-file
|
||||
:clean-temporary-files
|
||||
:with-anaphoric-temp-file
|
||||
:temp-file
|
||||
:file-can-write-p
|
||||
|
@ -27,15 +27,38 @@
|
||||
(db-utils:close-db)
|
||||
(os-utils:exit-program))
|
||||
|
||||
(defun clean-temporary-files ()
|
||||
"Use this to close the program"
|
||||
(flet ((on-input-complete (maybe-accepted)
|
||||
(when (boolean-input-accepted-p maybe-accepted)
|
||||
(fs:clean-temporary-files))
|
||||
(push-event (make-instance 'quit-program-event))))
|
||||
(let ((temporary-text (strcat (format nil
|
||||
(_ "~a Temporary files~2%")
|
||||
(swconf:gemini-h1-prefix))
|
||||
(format nil
|
||||
"~{- ~a~%~}"
|
||||
fs:*temporary-files-created*)))
|
||||
(temporary-files-count (length fs:*temporary-files-created*)))
|
||||
(if (> temporary-files-count 0)
|
||||
(progn
|
||||
(setf (message-window:source-text *message-window*) temporary-text)
|
||||
(windows:draw *message-window*)
|
||||
(ask-string-input #'on-input-complete
|
||||
:prompt (format nil
|
||||
(n_ "Delete ~a temporary file? [y/N] "
|
||||
"Delete ~a temporary files? [y/N] "
|
||||
temporary-files-count)
|
||||
temporary-files-count)))
|
||||
(push-event (make-instance 'quit-program-event))))))
|
||||
|
||||
(defun clean-close-program ()
|
||||
"Use this to close the program"
|
||||
(flet ((on-input-complete (maybe-accepted)
|
||||
(if (boolean-input-accepted-p maybe-accepted)
|
||||
(let ((delete-event (make-instance 'delete-all-status-event))
|
||||
(quit-event (make-instance 'quit-program-event)))
|
||||
(push-event delete-event)
|
||||
(push-event quit-event))
|
||||
(quit-program))))
|
||||
(when (boolean-input-accepted-p maybe-accepted)
|
||||
(let ((delete-event (make-instance 'delete-all-status-event)))
|
||||
(push-event delete-event)
|
||||
(clean-temporary-files)))))
|
||||
(let ((delete-count (db:count-status-marked-to-delete)))
|
||||
(if (> delete-count 0)
|
||||
(ask-string-input #'on-input-complete
|
||||
@ -44,7 +67,7 @@
|
||||
"Delete ~a messages? [y/N] "
|
||||
delete-count)
|
||||
delete-count))
|
||||
(quit-program)))))
|
||||
(clean-temporary-files)))))
|
||||
|
||||
(defun notify (message &key (life nil) (as-error nil) (priority +standard-event-priority+))
|
||||
(let ((event (make-instance 'notify-user-event
|
||||
|
Loading…
x
Reference in New Issue
Block a user