From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/57528 Path: main.gmane.org!not-for-mail From: Paul Stodghill Newsgroups: gmane.emacs.gnus.general Subject: Patch for filesystems that do not support chmod. Date: Wed, 19 May 2004 08:53:26 -0400 Sender: ding-owner@lists.math.uh.edu Message-ID: NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1084971271 2917 80.91.224.253 (19 May 2004 12:54:31 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 19 May 2004 12:54:31 +0000 (UTC) Original-X-From: ding-owner+M6068@lists.math.uh.edu Wed May 19 14:54:15 2004 Return-path: Original-Received: from malifon.math.uh.edu ([129.7.128.13]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1BQQaM-0001Ro-00 for ; Wed, 19 May 2004 14:54:14 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by malifon.math.uh.edu with smtp (Exim 3.20 #1) id 1BQQZp-0000EZ-00; Wed, 19 May 2004 07:53:41 -0500 Original-Received: from util2.math.uh.edu ([129.7.128.23]) by malifon.math.uh.edu with esmtp (Exim 3.20 #1) id 1BQQZg-0000ET-00 for ding@lists.math.uh.edu; Wed, 19 May 2004 07:53:32 -0500 Original-Received: from justine.libertine.org ([66.139.78.221] ident=postfix) by util2.math.uh.edu with esmtp (Exim 4.30) id 1BQQZf-0004jQ-SE for ding@lists.math.uh.edu; Wed, 19 May 2004 07:53:31 -0500 Original-Received: from exchfe2.cs.cornell.edu (exchfenlb-2.cs.cornell.edu [128.84.97.34]) by justine.libertine.org (Postfix) with ESMTP id DA8ED3A022E for ; Wed, 19 May 2004 07:53:30 -0500 (CDT) Original-Received: from exchfe2.cs.cornell.edu ([128.84.97.28]) by exchfe2.cs.cornell.edu with Microsoft SMTPSVC(6.0.3790.0); Wed, 19 May 2004 08:53:27 -0400 Original-Received: from barney-xp.cs.cornell.edu.cs.cornell.edu ([128.84.99.89]) by exchfe2.cs.cornell.edu over TLS secured channel with Microsoft SMTPSVC(6.0.3790.0); Wed, 19 May 2004 08:53:26 -0400 Original-To: ding@gnus.org User-Agent: Gnus/5.110002 (No Gnus v0.2) XEmacs/21.4 (Security Through Obscurity, cygwin32) X-OriginalArrivalTime: 19 May 2004 12:53:26.0942 (UTC) FILETIME=[470EA3E0:01C43DA0] Precedence: bulk Xref: main.gmane.org gmane.emacs.gnus.general:57528 X-Report-Spam: http://spam.gmane.org/gmane.emacs.gnus.general:57528 Here's my problem: I store all of my Gnus files on a FAT32 filesystem so that I can share them between Windows and Linux on my dual-boot system. Unfortunately, Cygwin (Linux too, I think) does not provide a complete implementation of chmod for FAT32 filesystems. As a result, Gnus's calls to `set-file-modes' will likely fail. I offer the following patch to NGnus 0.02 for your consideration. Basically, it introduces a global variable, `gnus-set-file-modes', which can be set to nil to prevent Gnus from making any calls to set-file-modes. I will be happy to rework this basic upon feedback. I have copyright assignment papers files with the FSF for Gnus. Thank you. diff -ru ../ngnus-0.2-orig/lisp/gnus-registry.el ./lisp/gnus-registry.el --- ../ngnus-0.2-orig/lisp/gnus-registry.el 2004-04-27 19:10:12.000000000 -0400 +++ ./lisp/gnus-registry.el 2004-05-19 08:42:52.000000000 -0400 @@ -202,7 +202,7 @@ ;; Replace the existing startup file with the temp file. (rename-file working-file startup-file t) - (set-file-modes startup-file setmodes))) + (gnus-set-file-modes startup-file setmodes))) (condition-case nil (delete-file working-file) (file-error nil))))) diff -ru ../ngnus-0.2-orig/lisp/gnus-start.el ./lisp/gnus-start.el --- ../ngnus-0.2-orig/lisp/gnus-start.el 2004-04-08 12:02:08.000000000 -0400 +++ ./lisp/gnus-start.el 2004-05-19 08:42:46.000000000 -0400 @@ -870,7 +870,7 @@ (when (and (file-exists-p gnus-current-startup-file) (file-exists-p dribble-file) (setq modes (file-modes gnus-current-startup-file))) - (set-file-modes dribble-file modes)) + (gnus-set-file-modes dribble-file modes)) (goto-char (point-min)) (when (search-forward "Gnus was exited on purpose" nil t) (setq purpose t)) @@ -2752,7 +2752,7 @@ ;; Replace the existing startup file with the temp file. (rename-file working-file startup-file t) - (set-file-modes startup-file setmodes))) + (gnus-set-file-modes startup-file setmodes))) (condition-case nil (delete-file working-file) (file-error nil))))) @@ -2897,7 +2897,7 @@ (let ((coding-system-for-write gnus-ding-file-coding-system)) (gnus-write-buffer slave-name)) (when modes - (set-file-modes slave-name modes))))) + (gnus-set-file-modes slave-name modes))))) (defun gnus-master-read-slave-newsrc () (let ((slave-files diff -ru ../ngnus-0.2-orig/lisp/gnus-util.el ./lisp/gnus-util.el --- ../ngnus-0.2-orig/lisp/gnus-util.el 2004-04-07 21:48:42.000000000 -0400 +++ ./lisp/gnus-util.el 2004-05-19 08:43:06.000000000 -0400 @@ -1473,6 +1473,14 @@ (concat old-dir ".."))))))))) +(defcustom gnus-set-file-modes t "When nil, do not attempt to change file modes. This is useful when Gnus files are stored on filesystems that do not support chmod (e.g., FAT32)." :type 'boolean :group 'gnus) + +(defun gnus-set-file-modes (filename mode) + "Wrapper for set-file-modes. +No-op if `gnus-set-file-modes' is set to nil." + (if gnus-set-file-modes + (set-file-modes filename mode))) + (provide 'gnus-util) ;;; gnus-util.el ends here diff -ru ../ngnus-0.2-orig/lisp/gnus-uu.el ./lisp/gnus-uu.el --- ../ngnus-0.2-orig/lisp/gnus-uu.el 2004-04-25 14:01:34.000000000 -0400 +++ ./lisp/gnus-uu.el 2004-05-19 08:42:42.000000000 -0400 @@ -1751,7 +1751,7 @@ (setq gnus-uu-work-dir (mm-make-temp-file (concat gnus-uu-tmp-dir "gnus") 'dir)) - (set-file-modes gnus-uu-work-dir 448) + (gnus-set-file-modes gnus-uu-work-dir 448) (setq gnus-uu-work-dir (file-name-as-directory gnus-uu-work-dir)) (push (cons gnus-newsgroup-name gnus-uu-work-dir) gnus-uu-tmp-alist)))) diff -ru ../ngnus-0.2-orig/lisp/mail-source.el ./lisp/mail-source.el --- ../ngnus-0.2-orig/lisp/mail-source.el 2004-03-08 01:54:24.000000000 -0500 +++ ./lisp/mail-source.el 2004-05-19 08:42:38.000000000 -0400 @@ -608,7 +608,7 @@ (expand-file-name "movemail" exec-directory)) nil errors nil from to))))) (when (file-exists-p to) - (set-file-modes to mail-source-default-file-modes)) + (gnus-set-file-modes to mail-source-default-file-modes)) (if (and (or (not (buffer-modified-p errors)) (zerop (buffer-size errors))) (and (numberp result) diff -ru ../ngnus-0.2-orig/lisp/mm-decode.el ./lisp/mm-decode.el --- ../ngnus-0.2-orig/lisp/mm-decode.el 2004-03-22 00:31:58.000000000 -0500 +++ ./lisp/mm-decode.el 2004-05-19 08:42:36.000000000 -0400 @@ -735,7 +735,7 @@ (copiousoutput (assoc "copiousoutput" mime-info)) file buffer) ;; We create a private sub-directory where we store our files. - (set-file-modes dir 448) + (gnus-set-file-modes dir 448) (if filename (setq file (expand-file-name (gnus-map-function mm-file-name-rewrite-functions diff -ru ../ngnus-0.2-orig/lisp/nnmail.el ./lisp/nnmail.el --- ../ngnus-0.2-orig/lisp/nnmail.el 2004-04-15 02:42:24.000000000 -0400 +++ ./lisp/nnmail.el 2004-05-19 08:42:30.000000000 -0400 @@ -1882,7 +1882,7 @@ (let ((coding-system-for-write nnmail-file-coding-system) (file-name-coding-system nnmail-pathname-coding-system)) (write-region start end filename append visit lockname) - (set-file-modes filename nnmail-default-file-modes))) + (gnus-set-file-modes filename nnmail-default-file-modes))) ;;; ;;; Status functions