Mercurial > emacs
changeset 44989:78b836bc2213
(gamegrid-add-score-with-update-game-score): Test whether or not
update-game-score is setuid, and do the right thing.
author | Colin Walters <walters@gnu.org> |
---|---|
date | Mon, 29 Apr 2002 22:53:44 +0000 |
parents | 964839c0844c |
children | 8412bb92c791 |
files | lisp/play/gamegrid.el |
diffstat | 1 files changed, 20 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/play/gamegrid.el Mon Apr 29 22:50:36 2002 +0000 +++ b/lisp/play/gamegrid.el Mon Apr 29 22:53:44 2002 +0000 @@ -413,18 +413,24 @@ (gamegrid-add-score-with-update-game-score file score)))) (defun gamegrid-add-score-with-update-game-score (file score) - (let ((result nil) - (errbuf (generate-new-buffer " *update-game-score loss*")) - (target (if game-score-directory - file - (let ((f (expand-file-name "~/.emacs.d/games"))) - (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)) - f)))) + (let* ((result nil) + (errbuf (generate-new-buffer " *update-game-score loss*")) + (have-shared-game-dir + (not (zerop (logand (file-modes + (expand-file-name "update-game-score" + exec-directory)) + #o4000)))) + (target (if have-shared-game-dir + (expand-file-name file game-score-directory) + (let ((f (expand-file-name game-score-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))) + f)))) (let ((default-directory "/")) (apply 'call-process @@ -432,7 +438,8 @@ (list (expand-file-name "update-game-score" exec-directory) nil errbuf nil - "-m" (int-to-string gamegrid-score-file-length) file + "-m" (int-to-string gamegrid-score-file-length) + "-d" (expand-file-name game-score-directory) file (int-to-string score) (concat (user-full-name)