From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Matthew Mundell Newsgroups: gmane.emacs.devel Subject: Re: dired-do-touch Date: 24 Mar 2004 21:59:50 +0000 Sender: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Message-ID: <87u10dnbxl.fsf@sno.mundell.ukfsn.org> References: <20040321165848.0DB3C662F8@imf.math.ku.dk> <405DDAF3.2080608@math.ku.dk> <87vfkwbg51.fsf@sno.mundell.ukfsn.org> <877jxbqlp8.fsf@sno.mundell.ukfsn.org> NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1080165882 29953 80.91.224.253 (24 Mar 2004 22:04:42 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Wed, 24 Mar 2004 22:04:42 +0000 (UTC) Cc: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Wed Mar 24 23:04:28 2004 Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1B6GU8-00074Q-00 for ; Wed, 24 Mar 2004 23:04:28 +0100 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.35 #1 (Debian)) id 1B6GU7-00078q-00 for ; Wed, 24 Mar 2004 23:04:27 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.30) id 1B6GTz-0005dq-DP for emacs-devel@quimby.gnus.org; Wed, 24 Mar 2004 17:04:19 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.30) id 1B6GTM-0005cd-Gq for emacs-devel@gnu.org; Wed, 24 Mar 2004 17:03:40 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.30) id 1B6GPn-0004ev-LQ for emacs-devel@gnu.org; Wed, 24 Mar 2004 17:00:30 -0500 Original-Received: from [217.158.120.143] (helo=mail.ukfsn.org) by monty-python.gnu.org with esmtp (Exim 4.30) id 1B6GPm-0004e0-PI for emacs-devel@gnu.org; Wed, 24 Mar 2004 16:59:58 -0500 Original-Received: from localhost (lucy.ukfsn.org [127.0.0.1]) by mail.ukfsn.org (Postfix) with ESMTP id 38E43E6DC4; Wed, 24 Mar 2004 21:59:19 +0000 (GMT) Original-Received: from mail.ukfsn.org ([127.0.0.1]) by localhost (lucy.ukfsn.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22445-06; Wed, 24 Mar 2004 21:59:19 +0000 (GMT) Original-Received: from sno.mundell.ukfsn.org (dsl213-218-238-16.as15444.net [213.218.238.16]) by mail.ukfsn.org (Postfix) with ESMTP id C971BE6DC0; Wed, 24 Mar 2004 21:59:18 +0000 (GMT) Original-Received: from sno.mundell.ukfsn.org ([10.0.0.3]) by sno.mundell.ukfsn.org with esmtp (Exim 3.36 #1 (Debian)) id 1B6GPf-0000gU-00; Wed, 24 Mar 2004 21:59:51 +0000 Original-To: storm@cua.dk (Kim F. Storm) Original-Lines: 127 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.4 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+emacs-devel=quimby.gnus.org@gnu.org Xref: main.gmane.org gmane.emacs.devel:20856 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:20856 storm@cua.dk (Kim F. Storm) writes: > Eli Zaretskii writes: > > > > I think that this is acceptable behaviour on such systems. > > > > What is? to signal an error? > > Ups -- no, that's not what I meant. > > Let me try again: > > > else more-or-less silently ignore errors in this function for > > directories on such systems. > > I think that this is acceptable behaviour on such systems. > > > > > Maybe the function could simply return t if time was modified, nil > > > otherwise. Then it would be easier for a programmer to change his > > > code to deal with systems where the call fails. > > > > Yes, a good idea, IMHO. > > So let's do it that way. Matt? Silently ignoring the error for directories on those systems sounds like the right approach. Here is the primitive. Does the change look OK? It needs to be tried on those systems. =================================================================== RCS file: /cvsroot/emacs/emacs/src/fileio.c,v diff -u -r1.499 fileio.c -- src/fileio.c 18 Mar 2004 02:58:45 -0000 1.499 ++ src/fileio.c 24 Mar 2004 14:51:31 -0000 @@ -323,6 +323,7 @@ Lisp_Object Qfile_accessible_directory_p; Lisp_Object Qfile_modes; Lisp_Object Qset_file_modes; Lisp_Object Qset_file_times; Lisp_Object Qfile_newer_than_file_p; Lisp_Object Qinsert_file_contents; Lisp_Object Qwrite_region; @@ -3438,7 +3439,59 @@ XSETINT (value, (~ realmask) & 0777); return value; } extern int lisp_time_argument P_ ((Lisp_Object, time_t *, int *)); DEFUN ("set-file-times", Fset_file_times, Sset_file_times, 1, 2, 0, doc: /* Set times of file FILENAME to TIME. Set both access and modification times. Return t on success, else nil. Use the current time if TIME is nil. TIME is in the format of `current-time'. */) (filename, time) Lisp_Object filename, time; { Lisp_Object absname, encoded_absname; Lisp_Object handler; time_t sec; int usec; if (! lisp_time_argument (time, &sec, &usec)) error ("Invalid time specification"); absname = Fexpand_file_name (filename, current_buffer->directory); /* If the file name has special constructs in it, call the corresponding file handler. */ handler = Ffind_file_name_handler (absname, Qset_file_times); if (!NILP (handler)) return call3 (handler, Qset_file_times, absname, time); encoded_absname = ENCODE_FILE (absname); { EMACS_TIME t; EMACS_SET_SECS (t, sec); EMACS_SET_USECS (t, usec); if (set_file_times (SDATA (encoded_absname), t, t)) { #ifdef DOS_NT struct stat st; /* Setting times on a directory always fails. */ if (stat (SDATA (encoded_absname), &st) == 0 && (st.st_mode & S_IFMT) == S_IFDIR) return Qnil; #endif report_file_error ("Setting file times", Fcons (absname, Qnil)); return Qnil; } } return Qt; } #ifdef __NetBSD__ #define unix 42 @@ -6339,6 +6392,7 @@ Qfile_accessible_directory_p = intern ("file-accessible-directory-p"); Qfile_modes = intern ("file-modes"); Qset_file_modes = intern ("set-file-modes"); Qset_file_times = intern ("set-file-times"); Qfile_newer_than_file_p = intern ("file-newer-than-file-p"); Qinsert_file_contents = intern ("insert-file-contents"); Qwrite_region = intern ("write-region"); @@ -6372,6 +6426,7 @@ staticpro (&Qfile_accessible_directory_p); staticpro (&Qfile_modes); staticpro (&Qset_file_modes); staticpro (&Qset_file_times); staticpro (&Qfile_newer_than_file_p); staticpro (&Qinsert_file_contents); staticpro (&Qwrite_region); @@ -6595,6 +6650,7 @@ defsubr (&Sfile_regular_p); defsubr (&Sfile_modes); defsubr (&Sset_file_modes); defsubr (&Sset_file_times); defsubr (&Sset_default_file_modes); defsubr (&Sdefault_file_modes); defsubr (&Sfile_newer_than_file_p);