aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dired.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/dired.c b/src/dired.c
index fe1d8098c77..d21cb65c9d3 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -117,6 +117,8 @@ Lisp_Object Qfile_name_completion;
117Lisp_Object Qfile_name_all_completions; 117Lisp_Object Qfile_name_all_completions;
118Lisp_Object Qfile_attributes; 118Lisp_Object Qfile_attributes;
119Lisp_Object Qfile_attributes_lessp; 119Lisp_Object Qfile_attributes_lessp;
120
121static int scmp P_ ((unsigned char *, unsigned char *, int));
120 122
121 123
122Lisp_Object 124Lisp_Object
@@ -734,6 +736,34 @@ file_name_completion (file, dirname, all_flag, ver_flag)
734 return Fsignal (Qquit, Qnil); 736 return Fsignal (Qquit, Qnil);
735} 737}
736 738
739/* Compare exactly LEN chars of strings at S1 and S2,
740 ignoring case if appropriate.
741 Return -1 if strings match,
742 else number of chars that match at the beginning. */
743
744static int
745scmp (s1, s2, len)
746 register unsigned char *s1, *s2;
747 int len;
748{
749 register int l = len;
750
751 if (completion_ignore_case)
752 {
753 while (l && DOWNCASE (*s1++) == DOWNCASE (*s2++))
754 l--;
755 }
756 else
757 {
758 while (l && *s1++ == *s2++)
759 l--;
760 }
761 if (l == 0)
762 return -1;
763 else
764 return len - l;
765}
766
737static int 767static int
738file_name_completion_stat (dirname, dp, st_addr) 768file_name_completion_stat (dirname, dp, st_addr)
739 Lisp_Object dirname; 769 Lisp_Object dirname;