Mercurial > emacs
comparison src/fontset.c @ 83222:ae7fab96922c
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-626
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-627
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-628
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-629
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-630
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-631
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-632
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-633
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-634
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-635
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-636
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-637
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-638
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-54
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-55
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-56
Update from CVS: Add lisp/legacy-gnus-agent.el
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-57
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-58
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-262
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Mon, 25 Oct 2004 18:17:28 +0000 |
parents | 0fc4928cc48e b935fc1cb542 |
children | 7a0245dd1848 |
comparison
equal
deleted
inserted
replaced
83221:0fc4928cc48e | 83222:ae7fab96922c |
---|---|
788 | 788 |
789 if (!CONSP (Vcached_fontset_data) | 789 if (!CONSP (Vcached_fontset_data) |
790 || strcmp (SDATA (pattern), CACHED_FONTSET_NAME)) | 790 || strcmp (SDATA (pattern), CACHED_FONTSET_NAME)) |
791 { | 791 { |
792 /* We must at first update the cached data. */ | 792 /* We must at first update the cached data. */ |
793 char *regex = (char *) alloca (SCHARS (pattern) * 2 + 3); | 793 char *regex, *p0, *p1; |
794 char *p0, *p1 = regex; | 794 int ndashes = 0, nstars = 0; |
795 | 795 |
796 /* Convert "*" to ".*", "?" to ".". */ | 796 for (p0 = SDATA (pattern); *p0; p0++) |
797 { | |
798 if (*p0 == '-') | |
799 ndashes++; | |
800 else if (*p0 == '*') | |
801 nstars++; | |
802 } | |
803 | |
804 /* If PATTERN is not full XLFD we conert "*" to ".*". Otherwise | |
805 we convert "*" to "[^-]*" which is much faster in regular | |
806 expression matching. */ | |
807 if (ndashes < 14) | |
808 p1 = regex = (char *) alloca (SBYTES (pattern) + 2 * nstars + 1); | |
809 else | |
810 p1 = regex = (char *) alloca (SBYTES (pattern) + 5 * nstars + 1); | |
811 | |
797 *p1++ = '^'; | 812 *p1++ = '^'; |
798 for (p0 = (char *) SDATA (pattern); *p0; p0++) | 813 for (p0 = (char *) SDATA (pattern); *p0; p0++) |
799 { | 814 { |
800 if (*p0 == '*') | 815 if (*p0 == '*') |
801 { | 816 { |
802 *p1++ = '.'; | 817 if (ndashes < 14) |
818 *p1++ = '.'; | |
819 else | |
820 *p1++ = '[', *p1++ = '^', *p1++ = '-', *p1++ = ']'; | |
803 *p1++ = '*'; | 821 *p1++ = '*'; |
804 } | 822 } |
805 else if (*p0 == '?') | 823 else if (*p0 == '?') |
806 *p1++ = '.'; | 824 *p1++ = '.'; |
807 else | 825 else |