Anonymous user
Simple database: Difference between revisions
→{{header|Common Lisp}}: version backups
(→{{header|Common Lisp}}: don't overwrite if file exists as it should have been renamed before) |
(→{{header|Common Lisp}}: version backups) |
||
Line 119:
:date (parse-date (prompt-read "Date watched" (format-ymd)))
:tags (parse-tags (prompt-read "Tags"))))
(defun parse-integer-quietly (&rest args)
(ignore-errors (apply #'parse-integer args)))
(defun get-next-version (basename)
(flet ((parse-version (pathname)
(string-left-trim (file-namestring basename)
(file-namestring pathname))
:start 1) 0)))
(let* ((files (directory (format nil "~A,*" (namestring basename))))
(max (reduce #'max files :key #'parse-version)))
(merge-pathnames (format nil "~a,~d" (file-namestring basename) (1+ max))
basename))))
(defun save-db (dbfile database)
(let ((file (probe-file dbfile)))
(rename-file file (
(with-open-file (out file :direction :output)
▲ :direction :output)
(with-standard-io-syntax
(let ((*print-case* :downcase))
|