[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/dired.c
From: |
Ken Raeburn |
Subject: |
[Emacs-diffs] Changes to emacs/src/dired.c |
Date: |
Sun, 14 Jul 2002 20:00:47 -0400 |
Index: emacs/src/dired.c
diff -c emacs/src/dired.c:1.95 emacs/src/dired.c:1.96
*** emacs/src/dired.c:1.95 Thu Jul 11 10:10:00 2002
--- emacs/src/dired.c Sun Jul 14 20:00:36 2002
***************
*** 188,194 ****
unwind_protect to do so would be a pain. */
retry:
! d = opendir (XSTRING (dirfilename)->data);
if (d == NULL)
report_file_error ("Opening directory", Fcons (directory, Qnil));
--- 188,194 ----
unwind_protect to do so would be a pain. */
retry:
! d = opendir (SDATA (dirfilename));
if (d == NULL)
report_file_error ("Opening directory", Fcons (directory, Qnil));
***************
*** 199,211 ****
Fcons (make_number (((unsigned long) d) >> 16),
make_number (((unsigned long) d) & 0xffff)));
! directory_nbytes = STRING_BYTES (XSTRING (directory));
re_match_object = Qt;
/* Decide whether we need to add a directory separator. */
#ifndef VMS
if (directory_nbytes == 0
! || !IS_ANY_SEP (XSTRING (directory)->data[directory_nbytes - 1]))
needsep = 1;
#endif /* not VMS */
--- 199,211 ----
Fcons (make_number (((unsigned long) d) >> 16),
make_number (((unsigned long) d) & 0xffff)));
! directory_nbytes = SBYTES (directory);
re_match_object = Qt;
/* Decide whether we need to add a directory separator. */
#ifndef VMS
if (directory_nbytes == 0
! || !IS_ANY_SEP (SREF (directory, directory_nbytes - 1)))
needsep = 1;
#endif /* not VMS */
***************
*** 237,243 ****
/* Note: ENCODE_FILE can GC; it should protect its argument,
though. */
name = DECODE_FILE (name);
! len = STRING_BYTES (XSTRING (name));
/* Now that we have unwind_protect in place, we might as well
allow matching to be interrupted. */
--- 237,243 ----
/* Note: ENCODE_FILE can GC; it should protect its argument,
though. */
name = DECODE_FILE (name);
! len = SBYTES (name);
/* Now that we have unwind_protect in place, we might as well
allow matching to be interrupted. */
***************
*** 245,251 ****
QUIT;
if (NILP (match)
! || (0 <= re_search (bufp, XSTRING (name)->data, len, 0, len, 0)))
wanted = 1;
immediate_quit = 0;
--- 245,251 ----
QUIT;
if (NILP (match)
! || (0 <= re_search (bufp, SDATA (name), len, 0, len, 0)))
wanted = 1;
immediate_quit = 0;
***************
*** 259,283 ****
int nchars;
fullname = make_uninit_multibyte_string (nbytes, nbytes);
! bcopy (XSTRING (directory)->data, XSTRING (fullname)->data,
directory_nbytes);
if (needsep)
! XSTRING (fullname)->data[directory_nbytes] = DIRECTORY_SEP;
! bcopy (XSTRING (name)->data,
! XSTRING (fullname)->data + directory_nbytes + needsep,
len);
! nchars = chars_in_text (XSTRING (fullname)->data, nbytes);
/* Some bug somewhere. */
if (nchars > nbytes)
abort ();
! XSTRING (fullname)->size = nchars;
if (nchars == nbytes)
! SET_STRING_BYTES (XSTRING (fullname), -1);
finalname = fullname;
}
--- 259,283 ----
int nchars;
fullname = make_uninit_multibyte_string (nbytes, nbytes);
! bcopy (SDATA (directory), SDATA (fullname),
directory_nbytes);
if (needsep)
! SREF (fullname, directory_nbytes) = DIRECTORY_SEP;
! bcopy (SDATA (name),
! SDATA (fullname) + directory_nbytes + needsep,
len);
! nchars = chars_in_text (SDATA (fullname), nbytes);
/* Some bug somewhere. */
if (nchars > nbytes)
abort ();
! SCHARS (fullname) = nchars;
if (nchars == nbytes)
! STRING_SET_UNIBYTE (fullname);
finalname = fullname;
}
***************
*** 519,525 ****
for (passcount = !!all_flag; NILP (bestmatch) && passcount < 2; passcount++)
{
! d = opendir (XSTRING (Fdirectory_file_name (encoded_dir))->data);
if (!d)
report_file_error ("Opening directory", Fcons (dirname, Qnil));
--- 519,525 ----
for (passcount = !!all_flag; NILP (bestmatch) && passcount < 2; passcount++)
{
! d = opendir (SDATA (Fdirectory_file_name (encoded_dir)));
if (!d)
report_file_error ("Opening directory", Fcons (dirname, Qnil));
***************
*** 542,550 ****
if (!NILP (Vquit_flag) && NILP (Vinhibit_quit))
goto quit;
if (! DIRENTRY_NONEMPTY (dp)
! || len < XSTRING (encoded_file)->size
! || 0 <= scmp (dp->d_name, XSTRING (encoded_file)->data,
! XSTRING (encoded_file)->size))
continue;
if (file_name_completion_stat (encoded_dir, dp, &st) < 0)
--- 542,550 ----
if (!NILP (Vquit_flag) && NILP (Vinhibit_quit))
goto quit;
if (! DIRENTRY_NONEMPTY (dp)
! || len < SCHARS (encoded_file)
! || 0 <= scmp (dp->d_name, SDATA (encoded_file),
! SCHARS (encoded_file)))
continue;
if (file_name_completion_stat (encoded_dir, dp, &st) < 0)
***************
*** 561,567 ****
actually in the way in a directory contains only one file. */
if (!passcount && TRIVIAL_DIRECTORY_ENTRY (dp->d_name))
continue;
! if (!passcount && len > XSTRING (encoded_file)->size)
/* Ignore directories if they match an element of
completion-ignored-extensions which ends in a slash. */
for (tem = Vcompletion_ignored_extensions;
--- 561,567 ----
actually in the way in a directory contains only one file. */
if (!passcount && TRIVIAL_DIRECTORY_ENTRY (dp->d_name))
continue;
! if (!passcount && len > SCHARS (encoded_file))
/* Ignore directories if they match an element of
completion-ignored-extensions which ends in a slash. */
for (tem = Vcompletion_ignored_extensions;
***************
*** 575,584 ****
/* Need to encode ELT, since scmp compares unibyte
strings only. */
elt = ENCODE_FILE (elt);
! elt_len = XSTRING (elt)->size - 1; /* -1 for trailing / */
if (elt_len <= 0)
continue;
! p1 = XSTRING (elt)->data;
if (p1[elt_len] != '/')
continue;
skip = len - elt_len;
--- 575,584 ----
/* Need to encode ELT, since scmp compares unibyte
strings only. */
elt = ENCODE_FILE (elt);
! elt_len = SCHARS (elt) - 1; /* -1 for trailing / */
if (elt_len <= 0)
continue;
! p1 = SDATA (elt);
if (p1[elt_len] != '/')
continue;
skip = len - elt_len;
***************
*** 594,600 ****
{
/* Compare extensions-to-be-ignored against end of this file name
*/
/* if name is not an exact match against specified string */
! if (!passcount && len > XSTRING (encoded_file)->size)
/* and exit this for loop if a match is found */
for (tem = Vcompletion_ignored_extensions;
CONSP (tem); tem = XCDR (tem))
--- 594,600 ----
{
/* Compare extensions-to-be-ignored against end of this file name
*/
/* if name is not an exact match against specified string */
! if (!passcount && len > SCHARS (encoded_file))
/* and exit this for loop if a match is found */
for (tem = Vcompletion_ignored_extensions;
CONSP (tem); tem = XCDR (tem))
***************
*** 604,615 ****
/* Need to encode ELT, since scmp compares unibyte
strings only. */
elt = ENCODE_FILE (elt);
! skip = len - XSTRING (elt)->size;
if (skip < 0) continue;
if (0 <= scmp (dp->d_name + skip,
! XSTRING (elt)->data,
! XSTRING (elt)->size))
continue;
break;
}
--- 604,615 ----
/* Need to encode ELT, since scmp compares unibyte
strings only. */
elt = ENCODE_FILE (elt);
! skip = len - SCHARS (elt);
if (skip < 0) continue;
if (0 <= scmp (dp->d_name + skip,
! SDATA (elt),
! SCHARS (elt)))
continue;
break;
}
***************
*** 661,673 ****
else
{
bestmatch = name;
! bestmatchsize = XSTRING (name)->size;
}
}
else
{
compare = min (bestmatchsize, len);
! p1 = XSTRING (bestmatch)->data;
p2 = (unsigned char *) dp->d_name;
matchsize = scmp(p1, p2, compare);
if (matchsize < 0)
--- 661,673 ----
else
{
bestmatch = name;
! bestmatchsize = SCHARS (name);
}
}
else
{
compare = min (bestmatchsize, len);
! p1 = SDATA (bestmatch);
p2 = (unsigned char *) dp->d_name;
matchsize = scmp(p1, p2, compare);
if (matchsize < 0)
***************
*** 682,688 ****
but BESTMATCH is not (it is too long). */
if ((matchsize == len
&& matchsize + !!directoryp
! < XSTRING (bestmatch)->size)
||
/* If there is no exact match ignoring case,
prefer a match that does not change the case
--- 682,688 ----
but BESTMATCH is not (it is too long). */
if ((matchsize == len
&& matchsize + !!directoryp
! < SCHARS (bestmatch))
||
/* If there is no exact match ignoring case,
prefer a match that does not change the case
***************
*** 695,703 ****
(((matchsize == len)
==
(matchsize + !!directoryp
! == XSTRING (bestmatch)->size))
! && !bcmp (p2, XSTRING (encoded_file)->data, XSTRING
(encoded_file)->size)
! && bcmp (p1, XSTRING (encoded_file)->data, XSTRING
(encoded_file)->size)))
{
bestmatch = make_string (dp->d_name, len);
if (directoryp)
--- 695,703 ----
(((matchsize == len)
==
(matchsize + !!directoryp
! == SCHARS (bestmatch)))
! && !bcmp (p2, SDATA (encoded_file), SCHARS
(encoded_file))
! && bcmp (p1, SDATA (encoded_file), SCHARS
(encoded_file))))
{
bestmatch = make_string (dp->d_name, len);
if (directoryp)
***************
*** 727,733 ****
bestmatch = DECODE_FILE (bestmatch);
return bestmatch;
}
! if (matchcount == 1 && bestmatchsize == XSTRING (file)->size)
return Qt;
bestmatch = Fsubstring (bestmatch, make_number (0),
make_number (bestmatchsize));
--- 727,733 ----
bestmatch = DECODE_FILE (bestmatch);
return bestmatch;
}
! if (matchcount == 1 && bestmatchsize == SCHARS (file))
return Qt;
bestmatch = Fsubstring (bestmatch, make_number (0),
make_number (bestmatchsize));
***************
*** 777,783 ****
struct stat *st_addr;
{
int len = NAMLEN (dp);
! int pos = XSTRING (dirname)->size;
int value;
char *fullname = (char *) alloca (len + pos + 2);
--- 777,783 ----
struct stat *st_addr;
{
int len = NAMLEN (dp);
! int pos = SCHARS (dirname);
int value;
char *fullname = (char *) alloca (len + pos + 2);
***************
*** 794,800 ****
#endif /* __DJGPP__ > 1 */
#endif /* MSDOS */
! bcopy (XSTRING (dirname)->data, fullname, pos);
#ifndef VMS
if (!IS_DIRECTORY_SEP (fullname[pos - 1]))
fullname[pos++] = DIRECTORY_SEP;
--- 794,800 ----
#endif /* __DJGPP__ > 1 */
#endif /* MSDOS */
! bcopy (SDATA (dirname), fullname, pos);
#ifndef VMS
if (!IS_DIRECTORY_SEP (fullname[pos - 1]))
fullname[pos++] = DIRECTORY_SEP;
***************
*** 847,853 ****
filename = Fexpand_file_name (filename, Qnil);
fab = cc$rms_fab;
xabfhc = cc$rms_xabfhc;
! fab.fab$l_fna = XSTRING (filename)->data;
fab.fab$b_fns = strlen (fab.fab$l_fna);
fab.fab$l_xab = (char *) &xabfhc;
status = sys$open (&fab, 0, 0);
--- 847,853 ----
filename = Fexpand_file_name (filename, Qnil);
fab = cc$rms_fab;
xabfhc = cc$rms_xabfhc;
! fab.fab$l_fna = SDATA (filename);
fab.fab$b_fns = strlen (fab.fab$l_fna);
fab.fab$l_xab = (char *) &xabfhc;
status = sys$open (&fab, 0, 0);
***************
*** 916,922 ****
encoded = ENCODE_FILE (filename);
! if (lstat (XSTRING (encoded)->data, &s) < 0)
return Qnil;
switch (s.st_mode & S_IFMT)
--- 916,922 ----
encoded = ENCODE_FILE (filename);
! if (lstat (SDATA (encoded), &s) < 0)
return Qnil;
switch (s.st_mode & S_IFMT)
***************
*** 946,952 ****
dirname = Ffile_name_directory (filename);
if (! NILP (dirname))
encoded = ENCODE_FILE (dirname);
! if (! NILP (dirname) && stat (XSTRING (encoded)->data, &sdir) == 0)
values[9] = (sdir.st_gid != s.st_gid) ? Qt : Qnil;
else /* if we can't tell, assume
worst */
values[9] = Qt;
--- 946,952 ----
dirname = Ffile_name_directory (filename);
if (! NILP (dirname))
encoded = ENCODE_FILE (dirname);
! if (! NILP (dirname) && stat (SDATA (encoded), &sdir) == 0)
values[9] = (sdir.st_gid != s.st_gid) ? Qt : Qnil;
else /* if we can't tell, assume
worst */
values[9] = Qt;