aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2012-09-30 19:07:14 -0700
committerPaul Eggert2012-09-30 19:07:14 -0700
commit86ec63ba3057ac5b3b760ebbdd547ff6d455cb65 (patch)
tree4d51b01424790cd9f2d3369f12792f4d076e80e6 /src
parent19e54a4d41c41edea579287b3a0423d4ff361d34 (diff)
downloademacs-86ec63ba3057ac5b3b760ebbdd547ff6d455cb65.tar.gz
emacs-86ec63ba3057ac5b3b760ebbdd547ff6d455cb65.zip
Revert the FOLLOW-SYMLINKS change for file-attributes.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/dired.c26
-rw-r--r--src/lisp.h2
-rw-r--r--src/sysdep.c3
4 files changed, 16 insertions, 21 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 9704c6d4469..9ad044a570a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,11 @@
12012-10-01 Paul Eggert <eggert@cs.ucla.edu> 12012-10-01 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Revert the FOLLOW-SYMLINKS change for file-attributes.
4 Doing it right would require several changes to Tramp, and there's
5 not enough time to get that tested before the freeze today.
6 * dired.c (directory_files_internal, Ffile_attributes):
7 Undo last change.
8
3 * frame.c (x_report_frame_params): Port better to wider ints. 9 * frame.c (x_report_frame_params): Port better to wider ints.
4 Do not assume that EMACS_UINT is the same width as uprintmax_t, 10 Do not assume that EMACS_UINT is the same width as uprintmax_t,
5 or that pointers can be printed in 15 decimal digits. 11 or that pointers can be printed in 15 decimal digits.
diff --git a/src/dired.c b/src/dired.c
index 84a172deb58..4986f845101 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -110,13 +110,12 @@ directory_files_internal_unwind (Lisp_Object dh)
110/* Function shared by Fdirectory_files and Fdirectory_files_and_attributes. 110/* Function shared by Fdirectory_files and Fdirectory_files_and_attributes.
111 If not ATTRS, return a list of directory filenames; 111 If not ATTRS, return a list of directory filenames;
112 if ATTRS, return a list of directory filenames and their attributes. 112 if ATTRS, return a list of directory filenames and their attributes.
113 In the latter case, ID_FORMAT and FOLLOW_SYMLINKS are passed to 113 In the latter case, ID_FORMAT is passed to Ffile_attributes. */
114 Ffile_attributes. */
115 114
116Lisp_Object 115Lisp_Object
117directory_files_internal (Lisp_Object directory, Lisp_Object full, 116directory_files_internal (Lisp_Object directory, Lisp_Object full,
118 Lisp_Object match, Lisp_Object nosort, bool attrs, 117 Lisp_Object match, Lisp_Object nosort, bool attrs,
119 Lisp_Object id_format, Lisp_Object follow_symlinks) 118 Lisp_Object id_format)
120{ 119{
121 DIR *d; 120 DIR *d;
122 ptrdiff_t directory_nbytes; 121 ptrdiff_t directory_nbytes;
@@ -298,8 +297,7 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
298 297
299 /* Both Fexpand_file_name and Ffile_attributes can GC. */ 298 /* Both Fexpand_file_name and Ffile_attributes can GC. */
300 decoded_fullname = Fexpand_file_name (name, directory); 299 decoded_fullname = Fexpand_file_name (name, directory);
301 fileattrs = Ffile_attributes (decoded_fullname, id_format, 300 fileattrs = Ffile_attributes (decoded_fullname, id_format);
302 follow_symlinks);
303 301
304 list = Fcons (Fcons (finalname, fileattrs), list); 302 list = Fcons (Fcons (finalname, fileattrs), list);
305 UNGCPRO; 303 UNGCPRO;
@@ -352,8 +350,7 @@ If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
352 return call5 (handler, Qdirectory_files, directory, 350 return call5 (handler, Qdirectory_files, directory,
353 full, match, nosort); 351 full, match, nosort);
354 352
355 return directory_files_internal (directory, full, match, nosort, 0, 353 return directory_files_internal (directory, full, match, nosort, 0, Qnil);
356 Qnil, Qnil);
357} 354}
358 355
359DEFUN ("directory-files-and-attributes", Fdirectory_files_and_attributes, 356DEFUN ("directory-files-and-attributes", Fdirectory_files_and_attributes,
@@ -381,8 +378,7 @@ which see. */)
381 return call6 (handler, Qdirectory_files_and_attributes, 378 return call6 (handler, Qdirectory_files_and_attributes,
382 directory, full, match, nosort, id_format); 379 directory, full, match, nosort, id_format);
383 380
384 return directory_files_internal (directory, full, match, nosort, 1, 381 return directory_files_internal (directory, full, match, nosort, 1, id_format);
385 id_format, Qnil);
386} 382}
387 383
388 384
@@ -879,7 +875,7 @@ stat_gname (struct stat *st)
879#endif 875#endif
880} 876}
881 877
882DEFUN ("file-attributes", Ffile_attributes, Sfile_attributes, 1, 3, 0, 878DEFUN ("file-attributes", Ffile_attributes, Sfile_attributes, 1, 2, 0,
883 doc: /* Return a list of attributes of file FILENAME. 879 doc: /* Return a list of attributes of file FILENAME.
884Value is nil if specified file cannot be opened. 880Value is nil if specified file cannot be opened.
885 881
@@ -888,9 +884,6 @@ below) - valid values are 'string and 'integer. The latter is the
888default, but we plan to change that, so you should specify a non-nil value 884default, but we plan to change that, so you should specify a non-nil value
889for ID-FORMAT if you use the returned uid or gid. 885for ID-FORMAT if you use the returned uid or gid.
890 886
891Optional argument FOLLOW-SYMLINKS says whether to follow symbolic
892links. If t, they are followed; if nil, they are not.
893
894Elements of the attribute list are: 887Elements of the attribute list are:
895 0. t for directory, string (name linked to) for symbolic link, or nil. 888 0. t for directory, string (name linked to) for symbolic link, or nil.
896 1. Number of links to file. 889 1. Number of links to file.
@@ -924,7 +917,7 @@ which see.
924 917
925On some FAT-based filesystems, only the date of last access is recorded, 918On some FAT-based filesystems, only the date of last access is recorded,
926so last access time will always be midnight of that day. */) 919so last access time will always be midnight of that day. */)
927 (Lisp_Object filename, Lisp_Object id_format, Lisp_Object follow_symlinks) 920 (Lisp_Object filename, Lisp_Object id_format)
928{ 921{
929 Lisp_Object values[12]; 922 Lisp_Object values[12];
930 Lisp_Object encoded; 923 Lisp_Object encoded;
@@ -960,10 +953,7 @@ so last access time will always be midnight of that day. */)
960 encoded = ENCODE_FILE (filename); 953 encoded = ENCODE_FILE (filename);
961 UNGCPRO; 954 UNGCPRO;
962 955
963 if ((!NILP (follow_symlinks) 956 if (lstat (SSDATA (encoded), &s) < 0)
964 ? stat (SSDATA (encoded), &s)
965 : lstat (SSDATA (encoded), &s))
966 != 0)
967 return Qnil; 957 return Qnil;
968 958
969 values[0] = (S_ISLNK (s.st_mode) ? Ffile_symlink_p (filename) 959 values[0] = (S_ISLNK (s.st_mode) ? Ffile_symlink_p (filename)
diff --git a/src/lisp.h b/src/lisp.h
index e182d3bc14b..c3cabe0af29 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3474,7 +3474,7 @@ extern void syms_of_ccl (void);
3474extern void syms_of_dired (void); 3474extern void syms_of_dired (void);
3475extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, 3475extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object,
3476 Lisp_Object, Lisp_Object, 3476 Lisp_Object, Lisp_Object,
3477 bool, Lisp_Object, Lisp_Object); 3477 bool, Lisp_Object);
3478 3478
3479/* Defined in term.c. */ 3479/* Defined in term.c. */
3480extern int *char_ins_del_vector; 3480extern int *char_ins_del_vector;
diff --git a/src/sysdep.c b/src/sysdep.c
index efebb49870c..a825145c6dd 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2532,8 +2532,7 @@ list_system_processes (void)
2532 process. */ 2532 process. */
2533 procdir = build_string ("/proc"); 2533 procdir = build_string ("/proc");
2534 match = build_string ("[0-9]+"); 2534 match = build_string ("[0-9]+");
2535 proclist = directory_files_internal (procdir, Qnil, match, Qt, 0, 2535 proclist = directory_files_internal (procdir, Qnil, match, Qt, 0, Qnil);
2536 Qnil, Qnil);
2537 2536
2538 /* `proclist' gives process IDs as strings. Destructively convert 2537 /* `proclist' gives process IDs as strings. Destructively convert
2539 each string into a number. */ 2538 each string into a number. */