]> git.wh0rd.org Git - nano.git/commitdiff
files.c:diralphasort() - Changed stat calls to lstat to stop abort on symlinks, other...
authorChris Allegretta <chrisa@asty.org>
Wed, 28 Mar 2001 02:14:28 +0000 (02:14 +0000)
committerChris Allegretta <chrisa@asty.org>
Wed, 28 Mar 2001 02:14:28 +0000 (02:14 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@578 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

BUGS
ChangeLog
files.c

diff --git a/BUGS b/BUGS
index 6e8c7548a98766d362699fd7e89c06de3b55f545..5f47aab0540a6b26464d32ca77fee6536a858e42 100644 (file)
--- a/BUGS
+++ b/BUGS
   the first fail if no string is entered (56) [FIXED].
 - Page down on a file of editwinrows fails (again). Reported by Ryan
   Krebs (57) [FIXED].
+- File browser aborts on Solaris in qsort() call.  (Reported by
+  Matthias Andree) (58) [FIXED by Matthias Andree].
 
 ** Open BUGS **
 
index aee08bfd8265540eca0b066da93a04a81a296841..6a1e445327de7137f7c93ba81f1b58e224184f79 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,10 @@ CVS -
        - Minor patch for intl check (really this time) (Albert Chin)
 - faq.html:
        - Fixed typo in section 6.1 (discovered by Bob Farmer).
+- files.c:
+  diralphasort()
+       - Changed stat calls to lstat to stop abort on symlinks, otherwise
+         return 0.  (Matthias Andree, fixes bug #58)
 
 nano-1.0.0 - 03/22/2001
 - General
diff --git a/files.c b/files.c
index ebc9b554862db4356acbf1f4b5a316bf7df9f39e..63d8fd6bec5f4edd309127e7e017027e2de8e1ac 100644 (file)
--- a/files.c
+++ b/files.c
@@ -318,7 +318,7 @@ int do_insertfile(void)
  * we don't set the global variable filename to it's name, and don't
  * print out how many lines we wrote on the statusbar.
  * 
- * tmp means we are writing a tmp file in a secute fashion.  We use
+ * tmp means we are writing a tmp file in a secure fashion.  We use
  * it when spell checking or dumping the file on an error.
  */
 int write_file(char *name, int tmp)
@@ -1005,11 +1005,7 @@ int diralphasort(const void *va, const void *vb) {
     char *a = *(char **)va, *b = *(char **)vb;
     int answer = 0;
 
-    if (stat(a, &file1info) == -1)
-       answer = 1;
-    else if (stat(b, &file2info) == -1)
-       answer = 1;
-    else {
+    if ((lstat(a, &file1info) != -1) && (lstat(b, &file2info) != -1)) {
        /* If is a is a dir and b isn't, return -1.
           Else if b is a dir and a isn't, return 0.
           Else return a < b */