X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fdired-msw.c;h=791ed06a91c5c192dc4253eceb6a0068216c422f;hb=d3c5cd1b305a4b61e27abfc5a43d0d9f711eab8b;hp=73c5d109791ec401da0e228c7205ea7390fab700;hpb=40402600969429d5253e62c6314a3eebbb21f027;p=chise%2Fxemacs-chise.git.1 diff --git a/src/dired-msw.c b/src/dired-msw.c index 73c5d10..791ed06 100644 --- a/src/dired-msw.c +++ b/src/dired-msw.c @@ -173,6 +173,7 @@ mswindows_get_files (char *dirfile, int nowild, Lisp_Object pattern, int findex, len; char win32pattern[MAXNAMLEN+3]; HANDLE fh; + int errm; /* * Much of the following code and comments were taken from dired.c. @@ -214,6 +215,8 @@ mswindows_get_files (char *dirfile, int nowild, Lisp_Object pattern, */ findex = 0; fh = INVALID_HANDLE_VALUE; + errm = SetErrorMode (SEM_FAILCRITICALERRORS + | SEM_NOOPENFILEERRORBOX); while (1) { @@ -226,6 +229,7 @@ mswindows_get_files (char *dirfile, int nowild, Lisp_Object pattern, fh = FindFirstFile(win32pattern, &files[findex]); if (fh == INVALID_HANDLE_VALUE) { + SetErrorMode (errm); report_file_error ("Opening directory", list1(build_string(dirfile))); } @@ -239,6 +243,7 @@ mswindows_get_files (char *dirfile, int nowild, Lisp_Object pattern, break; } FindClose(fh); + SetErrorMode (errm); report_file_error ("Reading directory", list1(build_string(dirfile))); } @@ -277,6 +282,8 @@ mswindows_get_files (char *dirfile, int nowild, Lisp_Object pattern, *nfiles = findex; break; } + + SetErrorMode (errm); return (files); } @@ -428,9 +435,8 @@ switches do not contain `d', so that a full listing is expected. (file, switches, wildcard, full_directory_p)) { Lisp_Object result, handler, wildpat, fns, basename; - char *filename; char *switchstr; - int len, nfiles, i; + int nfiles, i; int hide_system, hide_dot, reverse, display_size; WIN32_FIND_DATA *files, **sorted_files; enum mswindows_sortby sort_by; @@ -495,28 +501,11 @@ switches do not contain `d', so that a full listing is expected. } } - /* - * Sometimes we get ".../foo* /" as FILE (without the space). - * While the shell and `ls' don't mind, we certainly do, - * because it makes us think there is no wildcard, only a - * directory name. - */ - if (!NILP(Fstring_match(build_string("[[?*]"), file, Qnil, Qnil))) - { - wildcard = Qt; - filename = XSTRING_DATA(file); - len = strlen(filename); - if (len > 0 && (filename[len - 1] == '\\' || - filename[len - 1] == '/')) - { - filename[len - 1] = '\0'; - } - file = build_string(filename); - } if (!NILP(wildcard)) { Lisp_Object newfile; + file = Fdirectory_file_name (file); basename = Ffile_name_nondirectory(file); fns = intern("wildcard-to-regexp"); wildpat = call1(fns, basename);