From: Matthew Mundell <matt@mundell.ukfsn.org>
Cc: emacs-devel@gnu.org
Subject: Re: dired-do-touch
Date: 23 Mar 2004 21:48:19 +0000 [thread overview]
Message-ID: <877jxbqlp8.fsf@sno.mundell.ukfsn.org> (raw)
In-Reply-To: u65cwnkg2.fsf@elta.co.il
> Eli Zaretskii <eliz@elta.co.il> writes:
>
> > > From: Matthew Mundell <matt@mundell.ukfsn.org>
> > > Date: 22 Mar 2004 23:45:14 +0000
> > >
> > > + if (set_file_times (SDATA (encoded_absname), t, t) < 0)
> > > + report_file_error ("Setting file times", Fcons (absname, Qnil));
> >
> > I think this will throw an error on Windows if the file is a
> > directory. So it would be good to single out that case on DOS_NT
> > systems.
Does the version below correctly handle the case?
> > Otherwise, thanks a lot!
Thanks. Here are change logs and the Dired "T" key binding, to go with
yesterday's patches.
2004-03-23 Matthew Mundell <matt@mundell.ukfsn.org>
* dired-aux.el (dired-touch, dired-do-touch): New defuns.
* dired.el: Bind dired-do-touch to T.
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/dired.el,v
diff -u -r1.273 dired.el
--- lisp/dired.el 23 Mar 2004 05:20:11 -0000 1.273
+++ lisp/dired.el 23 Mar 2004 12:17:57 -0000
@@ -909,6 +909,7 @@
(define-key map "Q" 'dired-do-query-replace-regexp)
(define-key map "R" 'dired-do-rename)
(define-key map "S" 'dired-do-symlink)
+ (define-key map "T" 'dired-do-touch)
(define-key map "X" 'dired-do-shell-command)
(define-key map "Z" 'dired-do-compress)
(define-key map "!" 'dired-do-shell-command)
2004-03-23 Matthew Mundell <matt@mundell.ukfsn.org>
* fileio.c (Qset_file_times): New variable.
(Fset_file_times): New function.
(lisp_time_argument): New declaration.
(syms_of_fileio): staticpro and intern new variable, defsubr new
function.
* editfns.c (lisp_time_argument): Provide externally.
===================================================================
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 23 Mar 2004 12:56:40 -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,66 @@
XSETINT (value, (~ realmask) & 0777);
return value;
}
+\f
+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 access and modification times of file FILENAME.
+If optional second argument TIME is supplied then it is used instead
+of the current time. TIME must be 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);
+
+#ifdef WINDOWSNT
+ {
+ DWORD attributes;
+ Lisp_Object filename;
+ /* Ensure file is writable while its modified time is set. */
+ filename = SDATA (encoded_absname);
+ attributes = GetFileAttributes (filename);
+ SetFileAttributes (filename, attributes & ~FILE_ATTRIBUTE_READONLY);
+ if (set_file_times (filename, t, t))
+ {
+ /* Restore original attributes. */
+ SetFileAttributes (filename, attributes);
+ report_file_error ("Setting file times", Fcons (absname, Qnil));
+ }
+ /* Restore original attributes. */
+ SetFileAttributes (filename, attributes);
+ }
+#else
+ if (set_file_times (SDATA (encoded_absname), t, t))
+ report_file_error ("Setting file times", Fcons (absname, Qnil));
+#endif
+ }
+ return Qnil;
+}
\f
#ifdef __NetBSD__
#define unix 42
@@ -6339,6 +6399,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 +6433,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 +6657,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);
next prev parent reply other threads:[~2004-03-23 21:48 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20040321165848.0DB3C662F8@imf.math.ku.dk>
2004-03-21 18:12 ` dired-do-touch Lars Hansen
2004-03-22 23:45 ` dired-do-touch Matthew Mundell
2004-03-23 6:31 ` dired-do-touch Eli Zaretskii
2004-03-23 21:48 ` Matthew Mundell [this message]
2004-03-24 7:11 ` dired-do-touch Eli Zaretskii
2004-03-24 10:57 ` dired-do-touch Kim F. Storm
2004-03-24 11:10 ` dired-do-touch Eli Zaretskii
2004-03-24 12:22 ` dired-do-touch Kim F. Storm
2004-03-24 21:59 ` dired-do-touch Matthew Mundell
2004-03-25 7:10 ` dired-do-touch Eli Zaretskii
2004-03-24 20:57 ` dired-do-touch Matthew Mundell
2004-03-25 2:00 ` dired-do-touch Richard Stallman
2004-03-26 18:31 ` dired-do-touch Matthew Mundell
2004-03-28 1:36 ` dired-do-touch Richard Stallman
2004-03-28 1:36 ` dired-do-touch Richard Stallman
2011-07-28 12:57 [PATCH] fix goto-line Jose E. Marchesi
2011-07-28 14:07 ` Juanma Barranquero
2011-07-29 11:15 ` Juri Linkov
2011-07-29 11:22 ` Juanma Barranquero
2011-07-29 15:28 ` Juri Linkov
2011-07-29 16:45 ` Paul Eggert
2011-07-30 9:17 ` dired-do-touch (was: [PATCH] fix goto-line) Juri Linkov
2011-07-30 9:50 ` dired-do-touch Juri Linkov
2011-07-30 9:54 ` dired-do-touch (was: [PATCH] fix goto-line) Andreas Schwab
2011-07-30 11:01 ` dired-do-touch Juri Linkov
-- strict thread matches above, loose matches on Subject: below --
2007-08-23 20:06 dired-do-touch martin rudalics
2007-08-23 22:35 ` dired-do-touch Sean Sieger
[not found] <mailman.5195.1187881677.32220.help-gnu-emacs@gnu.org>
2007-08-23 15:23 ` dired-do-touch Sven Joachim
2007-08-23 17:43 ` dired-do-touch Sean Sieger
2007-08-23 15:07 dired-do-touch Sean Sieger
2007-08-23 15:36 ` dired-do-touch Peter Dyballa
[not found] ` <4135e3e50708231035pbc95223m8988de9677ec3c4c@mail.gmail.com>
2007-08-23 18:06 ` dired-do-touch Peter Dyballa
[not found] ` <mailman.5210.1187892398.32220.help-gnu-emacs@gnu.org>
2007-08-24 6:32 ` dired-do-touch Fabian Braennstroem
2007-08-24 16:44 ` dired-do-touch Sean Sieger
[not found] ` <mailman.5260.1187973928.32220.help-gnu-emacs@gnu.org>
2007-08-24 21:15 ` dired-do-touch Fabian Braennstroem
2007-08-23 17:39 ` dired-do-touch Sean Sieger
2004-04-24 15:28 dired-do-touch Lars Hansen
2004-04-24 17:01 ` dired-do-touch Eli Zaretskii
2004-04-24 17:04 ` dired-do-touch Lars Hansen
2004-03-20 19:05 dired-do-touch Matthew Mundell
2004-03-21 13:31 ` dired-do-touch Ehud Karni
2004-03-21 18:27 ` dired-do-touch Eli Zaretskii
2004-03-21 16:50 ` dired-do-touch Eli Zaretskii
2004-03-21 19:21 ` dired-do-touch Richard Stallman
2004-03-25 14:54 ` dired-do-touch Juri Linkov
2004-03-25 21:07 ` dired-do-touch Juri Linkov
2004-03-27 5:52 ` dired-do-touch Richard Stallman
2004-03-27 10:59 ` dired-do-touch Juri Linkov
2004-03-27 12:17 ` dired-do-touch Eli Zaretskii
2004-03-27 13:06 ` dired-do-touch Juri Linkov
2004-03-27 16:13 ` dired-do-touch Matthew Mundell
2004-03-27 17:52 ` dired-do-touch Juri Linkov
2004-03-28 19:59 ` dired-do-touch Matthew Mundell
2004-03-29 6:59 ` dired-do-touch Eli Zaretskii
2004-03-29 19:15 ` dired-do-touch Juri Linkov
2004-03-29 22:24 ` dired-do-touch Andreas Schwab
2004-03-30 6:50 ` dired-do-touch Eli Zaretskii
2004-03-30 9:59 ` dired-do-touch Juri Linkov
2004-03-30 12:35 ` dired-do-touch Matthew Mundell
2004-03-30 19:43 ` dired-do-touch Stefan Monnier
2004-03-31 3:14 ` dired-do-touch Juri Linkov
2004-03-31 15:53 ` dired-do-touch Matthew Mundell
2004-03-31 15:04 ` dired-do-touch Richard Stallman
2004-03-31 19:42 ` dired-do-touch Stefan Monnier
2004-04-02 6:01 ` dired-do-touch Richard Stallman
2004-04-23 20:57 ` dired-do-touch Stefan Monnier
2004-03-30 16:18 ` dired-do-touch Matthew Mundell
2004-03-29 19:27 ` dired-do-touch Juri Linkov
2004-03-27 16:09 ` dired-do-touch Matthew Mundell
2004-03-28 4:25 ` dired-do-touch Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877jxbqlp8.fsf@sno.mundell.ukfsn.org \
--to=matt@mundell.ukfsn.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.