Make a backup file: Difference between revisions

→‎{{header|Common Lisp}}: filename versioning and some cleanup
(Some examples on this page assume that the original file already exists.)
(→‎{{header|Common Lisp}}: filename versioning and some cleanup)
Line 15:
 
=={{header|Common Lisp}}==
<lang lisp>(defun saveparse-withinteger-backupquietly (filename&rest dataargs)
(ignore-errors (apply #'parse-integer args)))
 
(defun get-next-version (basename)
(flet ((parse-version (pathname)
(or :direction(parse-integer-quietly :output
(string-left-trim (file-namestring basename)
(file-namestring pathname))
:if-exists :supersedestart 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-with-backup (filename data)
(let ((file (probe-file filename)))
(rename-file file (concatenate 'string (fileget-namestringnext-version file) ",1"))
(with-open-file (out file :direction :output)
(print data out)))))</lang>
:direction :output
:if-exists :supersede)
(with-standard-io-syntax
(print data out)))))</lang>
 
=={{header|Java}}==
Anonymous user