[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/play/gamegrid.el [lexbind]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/play/gamegrid.el [lexbind] |
Date: |
Tue, 14 Oct 2003 19:42:23 -0400 |
Index: emacs/lisp/play/gamegrid.el
diff -c emacs/lisp/play/gamegrid.el:1.11.2.1
emacs/lisp/play/gamegrid.el:1.11.2.2
*** emacs/lisp/play/gamegrid.el:1.11.2.1 Fri Apr 4 01:20:31 2003
--- emacs/lisp/play/gamegrid.el Tue Oct 14 19:42:16 2003
***************
*** 450,455 ****
--- 450,480 ----
(t
(gamegrid-add-score-with-update-game-score file score))))
+
+ ;; On POSIX systems there are four cases to distinguish:
+
+ ;; 1. FILE is an absolute filename. Then it should be a file in
+ ;; temporary file directory. This is the way,
+ ;; `gamegrid-add-score' was supposed to be used in the past and
+ ;; is covered here for backward-compatibility.
+ ;;
+ ;; 2. The helper program "update-game-score" is setuid and the
+ ;; file FILE does already exist in a system wide shared game
+ ;; directory. This should be the normal case on POSIX systems,
+ ;; if the game was installed system wide. Use
+ ;; "update-game-score" to add the score to the file in the
+ ;; shared game directory.
+ ;;
+ ;; 3. "update-game-score" is setuid, but the file FILE does *not*
+ ;; exist in the system wide shared game directory. Use
+ ;; `gamegrid-add-score-insecure' to create--if necessary--and
+ ;; update FILE. This is for the case that a user has installed
+ ;; a game on her own.
+ ;;
+ ;; 4. "update-game-score" is not setuid. Use it to create/update
+ ;; FILE in the user's home directory. There is presumably no
+ ;; shared game directory.
+
(defun gamegrid-add-score-with-update-game-score (file score)
(let* ((result nil) ;; What is this good for? -- os
(have-shared-game-dir
***************
*** 457,484 ****
(expand-file-name "update-game-score"
exec-directory))
#o4000)))))
! (if (and have-shared-game-dir
! (file-exists-p (expand-file-name file
shared-game-score-directory)))
! ;; Use the setuid update-gamescore program to update a
! ;; system-wide score file.
! (gamegrid-add-score-with-update-game-score-1
! (expand-file-name file shared-game-score-directory) score)
! ;; Else: Add the score to a score file in the user's home
! ;; directory. If `have-shared-game-dir' is non-nil, the
! ;; "update-gamescore" program is setuid, so don't use it.
! (if have-shared-game-dir
! (gamegrid-add-score-insecure file score
! gamegrid-user-score-file-directory)
! (let ((f (expand-file-name
! gamegrid-user-score-file-directory)))
! (when (file-writable-p f)
! (unless (eq (car-safe (file-attributes f))
! t)
! (make-directory f))
! (setq f (expand-file-name file f))
! (unless (file-exists-p f)
! (write-region "" nil f nil 'silent nil 'excl)))
! (gamegrid-add-score-with-update-game-score-1 f score))))))
(defun gamegrid-add-score-with-update-game-score-1 (target score)
(let ((default-directory "/")
--- 482,515 ----
(expand-file-name "update-game-score"
exec-directory))
#o4000)))))
! (cond ((file-name-absolute-p file)
! (gamegrid-add-score-insecure file score))
! ((and have-shared-game-dir
! (file-exists-p (expand-file-name file
shared-game-score-directory)))
! ;; Use the setuid "update-game-score" program to update a
! ;; system-wide score file.
! (gamegrid-add-score-with-update-game-score-1
! (expand-file-name file shared-game-score-directory) score))
! ;; Else: Add the score to a score file in the user's home
! ;; directory.
! (have-shared-game-dir
! ;; If `have-shared-game-dir' is non-nil, then
! ;; "update-gamescore" program is setuid, so don't use it.
! (unless (file-exists-p
! (directory-file-name gamegrid-user-score-file-directory))
! (make-directory gamegrid-user-score-file-directory t))
! (gamegrid-add-score-insecure file score
! gamegrid-user-score-file-directory))
! (t (let ((f (expand-file-name
! gamegrid-user-score-file-directory)))
! (when (file-writable-p f)
! (unless (eq (car-safe (file-attributes f))
! t)
! (make-directory f))
! (setq f (expand-file-name file f))
! (unless (file-exists-p f)
! (write-region "" nil f nil 'silent nil 'excl)))
! (gamegrid-add-score-with-update-game-score-1 f score))))))
(defun gamegrid-add-score-with-update-game-score-1 (target score)
(let ((default-directory "/")
***************
*** 547,550 ****
--- 578,582 ----
(provide 'gamegrid)
+ ;;; arch-tag: a96c2ff4-1c12-427e-bd3d-faeaf174cd46
;;; gamegrid.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/play/gamegrid.el [lexbind],
Miles Bader <=