mirror of
https://codeberg.org/cage/tinmop/
synced 2025-02-09 07:18: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*)
|
(text-utils:strcat home *directory-sep*)
|
||||||
home)))
|
home)))
|
||||||
|
|
||||||
|
(defparameter *temporary-files-created* ())
|
||||||
|
|
||||||
(defun temporary-file (&optional (temp-directory nil))
|
(defun temporary-file (&optional (temp-directory nil))
|
||||||
(let ((tmpdir (or temp-directory
|
(let ((tmpdir (or temp-directory
|
||||||
(os-utils:default-temp-dir))))
|
(os-utils:default-temp-dir))))
|
||||||
@ -258,8 +260,13 @@
|
|||||||
(nix:mkstemp (format nil "~atmp~a~a" *directory-sep* *directory-sep*
|
(nix:mkstemp (format nil "~atmp~a~a" *directory-sep* *directory-sep*
|
||||||
config:+program-name+)))
|
config:+program-name+)))
|
||||||
(declare (ignore x))
|
(declare (ignore x))
|
||||||
|
(push filename *temporary-files-created*)
|
||||||
filename)))
|
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)
|
(defmacro with-anaphoric-temp-file ((stream &key (prefix nil) (unlink nil)) &body body)
|
||||||
`(let ((temp-file (temporary-file ,prefix))) ; anaphora
|
`(let ((temp-file (temporary-file ,prefix))) ; anaphora
|
||||||
(unwind-protect
|
(unwind-protect
|
||||||
|
@ -283,7 +283,9 @@
|
|||||||
:delete-file-if-exists
|
:delete-file-if-exists
|
||||||
:file-hash
|
:file-hash
|
||||||
:home-dir
|
:home-dir
|
||||||
|
:*temporary-files-created*
|
||||||
:temporary-file
|
:temporary-file
|
||||||
|
:clean-temporary-files
|
||||||
:with-anaphoric-temp-file
|
:with-anaphoric-temp-file
|
||||||
:temp-file
|
:temp-file
|
||||||
:file-can-write-p
|
:file-can-write-p
|
||||||
|
@ -27,15 +27,38 @@
|
|||||||
(db-utils:close-db)
|
(db-utils:close-db)
|
||||||
(os-utils:exit-program))
|
(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 ()
|
(defun clean-close-program ()
|
||||||
"Use this to close the program"
|
"Use this to close the program"
|
||||||
(flet ((on-input-complete (maybe-accepted)
|
(flet ((on-input-complete (maybe-accepted)
|
||||||
(if (boolean-input-accepted-p maybe-accepted)
|
(when (boolean-input-accepted-p maybe-accepted)
|
||||||
(let ((delete-event (make-instance 'delete-all-status-event))
|
(let ((delete-event (make-instance 'delete-all-status-event)))
|
||||||
(quit-event (make-instance 'quit-program-event)))
|
(push-event delete-event)
|
||||||
(push-event delete-event)
|
(clean-temporary-files)))))
|
||||||
(push-event quit-event))
|
|
||||||
(quit-program))))
|
|
||||||
(let ((delete-count (db:count-status-marked-to-delete)))
|
(let ((delete-count (db:count-status-marked-to-delete)))
|
||||||
(if (> delete-count 0)
|
(if (> delete-count 0)
|
||||||
(ask-string-input #'on-input-complete
|
(ask-string-input #'on-input-complete
|
||||||
@ -44,7 +67,7 @@
|
|||||||
"Delete ~a messages? [y/N] "
|
"Delete ~a messages? [y/N] "
|
||||||
delete-count)
|
delete-count)
|
||||||
delete-count))
|
delete-count))
|
||||||
(quit-program)))))
|
(clean-temporary-files)))))
|
||||||
|
|
||||||
(defun notify (message &key (life nil) (as-error nil) (priority +standard-event-priority+))
|
(defun notify (message &key (life nil) (as-error nil) (priority +standard-event-priority+))
|
||||||
(let ((event (make-instance 'notify-user-event
|
(let ((event (make-instance 'notify-user-event
|
||||||
|
Loading…
x
Reference in New Issue
Block a user