X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fsysdep.c;h=54e1bf2b16fb41bc60a5b5ad9c93281676a83338;hp=e327cff19e374f5d70ee552201d62584a36c098a;hb=3062d425fac0473eb5aa2efc0bb002f6ce0cb028;hpb=c740b47fa11cbfe4416bbcfb991ad714f82610a8 diff --git a/src/sysdep.c b/src/sysdep.c index e327cff..54e1bf2 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -33,7 +33,7 @@ Boston, MA 02111-1307, USA. */ #ifdef WIN32_NATIVE #ifdef MINGW -#include +#include #else /* should not conflict with "process.h", as per ANSI definition. This is not true with visual c though. The trick below works with @@ -2985,23 +2985,22 @@ sys_readdir (DIR *dirp) if (rtnval == NULL) /* End of directory */ return NULL; { - Extcount external_len; - int ascii_filename_p = 1; const Extbyte * const external_name = (const Extbyte *) rtnval->d_name; - - /* Optimize for the common all-ASCII case, computing len en passant */ - for (external_len = 0; external_name[external_len] ; external_len++) - { - if (!BYTE_ASCII_P (external_name[external_len])) - ascii_filename_p = 0; - } - if (ascii_filename_p) + Extcount external_len = strlen (rtnval->d_name); + const Bufbyte *internal_name; + Bytecount internal_len; + + TO_INTERNAL_FORMAT (DATA, (external_name, external_len), + ALLOCA, (internal_name, internal_len), + Qfile_name); + + /* check for common case of ASCII filename */ + if (internal_len == external_len && + !memcmp (external_name, internal_name, internal_len)) return rtnval; { /* Non-ASCII filename */ static Bufbyte_dynarr *internal_DIRENTRY; - const Bufbyte *internal_name; - Bytecount internal_len; if (!internal_DIRENTRY) internal_DIRENTRY = Dynarr_new (Bufbyte); else @@ -3010,9 +3009,6 @@ sys_readdir (DIR *dirp) Dynarr_add_many (internal_DIRENTRY, (Bufbyte *) rtnval, offsetof (DIRENTRY, d_name)); - TO_INTERNAL_FORMAT (DATA, (external_name, external_len), - ALLOCA, (internal_name, internal_len), - Qfile_name); Dynarr_add_many (internal_DIRENTRY, internal_name, internal_len); Dynarr_add (internal_DIRENTRY, '\0'); /* NUL-terminate */