static int mswindows_ls_sort_case_insensitive;
-static int mswindows_ls_round_file_size;
+static Fixnum mswindows_ls_round_file_size;
Lisp_Object Qmswindows_insert_directory;
int findex, len;
char win32pattern[MAXNAMLEN+3];
HANDLE fh;
+ int errm;
/*
* Much of the following code and comments were taken from dired.c.
*/
findex = 0;
fh = INVALID_HANDLE_VALUE;
+ errm = SetErrorMode (SEM_FAILCRITICALERRORS
+ | SEM_NOOPENFILEERRORBOX);
while (1)
{
fh = FindFirstFile(win32pattern, &files[findex]);
if (fh == INVALID_HANDLE_VALUE)
{
+ SetErrorMode (errm);
report_file_error ("Opening directory",
list1(build_string(dirfile)));
}
break;
}
FindClose(fh);
+ SetErrorMode (errm);
report_file_error ("Reading directory",
list1(build_string(dirfile)));
}
*nfiles = findex;
break;
}
+
+ SetErrorMode (errm);
return (files);
}
(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;
}
}
- /*
- * 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);