98 lines
2.1 KiB
C
98 lines
2.1 KiB
C
|
--- src/find.c.orig Tue Dec 24 17:28:26 2002
|
||
|
+++ src/find.c Tue Jun 15 03:15:09 2004
|
||
|
@@ -312,7 +312,7 @@
|
||
|
dir_stack *new;
|
||
|
|
||
|
new = g_new (dir_stack, 1);
|
||
|
- new->name = g_strdup (dir);
|
||
|
+ new->name = concat_dir_and_file (dir, "");
|
||
|
new->prev = dir_stack_base;
|
||
|
dir_stack_base = new;
|
||
|
}
|
||
|
@@ -338,17 +338,9 @@
|
||
|
{
|
||
|
char *tmp_name;
|
||
|
static char *dirname;
|
||
|
- int i;
|
||
|
|
||
|
- if (dir [0] == PATH_SEP && dir [1] == PATH_SEP)
|
||
|
+ while (dir [0] == PATH_SEP && dir [1] == PATH_SEP)
|
||
|
dir++;
|
||
|
- i = strlen (dir);
|
||
|
- if (i){
|
||
|
- if (dir [i - 1] != PATH_SEP){
|
||
|
- dir [i] = PATH_SEP;
|
||
|
- dir [i + 1] = 0;
|
||
|
- }
|
||
|
- }
|
||
|
|
||
|
if (old_dir){
|
||
|
if (strcmp (old_dir, dir)){
|
||
|
@@ -401,7 +393,7 @@
|
||
|
char ch = 0;
|
||
|
int i = 0;
|
||
|
|
||
|
- do {
|
||
|
+ for (;;) {
|
||
|
if (*pos >= *n_read){
|
||
|
*pos = 0;
|
||
|
if ((*n_read = mc_read (file_fd, buf, buf_size)) <= 0)
|
||
|
@@ -420,10 +412,12 @@
|
||
|
if (i >= buffer_size - 1){
|
||
|
buffer = g_realloc (buffer, buffer_size += 80);
|
||
|
}
|
||
|
+ /* Strip newline to fix $ matching */
|
||
|
+ if (ch == '\n')
|
||
|
+ break;
|
||
|
|
||
|
buffer [i++] = ch;
|
||
|
-
|
||
|
- } while (ch != '\n');
|
||
|
+ }
|
||
|
|
||
|
*has_newline = ch ? 1 : 0;
|
||
|
|
||
|
@@ -502,7 +496,7 @@
|
||
|
{
|
||
|
static struct dirent *dp = 0;
|
||
|
static DIR *dirp = 0;
|
||
|
- static char directory [MC_MAXPATHLEN+2];
|
||
|
+ static char *directory;
|
||
|
struct stat tmp_stat;
|
||
|
static int pos;
|
||
|
static int subdirs_left = 0;
|
||
|
@@ -513,6 +507,10 @@
|
||
|
mc_closedir (dirp);
|
||
|
dirp = 0;
|
||
|
}
|
||
|
+ if (directory) {
|
||
|
+ g_free (directory);
|
||
|
+ directory = NULL;
|
||
|
+ }
|
||
|
dp = 0;
|
||
|
return 1;
|
||
|
}
|
||
|
@@ -550,8 +548,9 @@
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
- strcpy (directory, tmp);
|
||
|
- g_free (tmp);
|
||
|
+ if (directory)
|
||
|
+ g_free (directory);
|
||
|
+ directory = tmp;
|
||
|
|
||
|
if (verbose){
|
||
|
char buffer [BUF_SMALL];
|
||
|
@@ -582,8 +581,8 @@
|
||
|
tmp_name = concat_dir_and_file (directory, dp->d_name);
|
||
|
|
||
|
if (subdirs_left){
|
||
|
- mc_lstat (tmp_name, &tmp_stat);
|
||
|
- if (S_ISDIR (tmp_stat.st_mode)){
|
||
|
+ if (!mc_lstat (tmp_name, &tmp_stat)
|
||
|
+ && S_ISDIR (tmp_stat.st_mode)){
|
||
|
push_directory (tmp_name);
|
||
|
subdirs_left--;
|
||
|
}
|