When copying files, ask for the target directory again if the source directory has changed
This commit is contained in:
parent
05dfc5ce79
commit
66d99f2ae5
1 changed files with 12 additions and 5 deletions
17
src/dirn.c
17
src/dirn.c
|
@ -61,6 +61,7 @@ static long int dir_aff_ncurses(disk_t *disk, const partition_t *partition, dir_
|
||||||
* other: new inode
|
* other: new inode
|
||||||
* */
|
* */
|
||||||
int quit=0;
|
int quit=0;
|
||||||
|
int ask_destination=1;
|
||||||
WINDOW *window=(WINDOW*)dir_data->display;
|
WINDOW *window=(WINDOW*)dir_data->display;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -347,14 +348,17 @@ static long int dir_aff_ncurses(disk_t *disk, const partition_t *partition, dir_
|
||||||
strcat(dir_data->current_directory,"/");
|
strcat(dir_data->current_directory,"/");
|
||||||
if(strcmp(pos->name,".")!=0)
|
if(strcmp(pos->name,".")!=0)
|
||||||
strcat(dir_data->current_directory,pos->name);
|
strcat(dir_data->current_directory,pos->name);
|
||||||
if(dir_data->local_dir==NULL)
|
if(dir_data->local_dir==NULL || ask_destination>0)
|
||||||
{
|
{
|
||||||
|
char *local_dir=dir_data->local_dir;
|
||||||
if(LINUX_S_ISDIR(pos->st_mode)!=0)
|
if(LINUX_S_ISDIR(pos->st_mode)!=0)
|
||||||
dir_data->local_dir=ask_location("Please select a destination where %s and any files below will be copied.",
|
dir_data->local_dir=ask_location("Please select a destination where %s and any files below will be copied.",
|
||||||
dir_data->current_directory, NULL);
|
dir_data->current_directory, local_dir);
|
||||||
else
|
else
|
||||||
dir_data->local_dir=ask_location("Please select a destination where %s will be copied.",
|
dir_data->local_dir=ask_location("Please select a destination where %s will be copied.",
|
||||||
dir_data->current_directory, NULL);
|
dir_data->current_directory, local_dir);
|
||||||
|
free(local_dir);
|
||||||
|
ask_destination=0;
|
||||||
}
|
}
|
||||||
if(dir_data->local_dir!=NULL)
|
if(dir_data->local_dir!=NULL)
|
||||||
{
|
{
|
||||||
|
@ -402,9 +406,12 @@ static long int dir_aff_ncurses(disk_t *disk, const partition_t *partition, dir_
|
||||||
case 'C':
|
case 'C':
|
||||||
if(dir_data->copy_file!=NULL)
|
if(dir_data->copy_file!=NULL)
|
||||||
{
|
{
|
||||||
if(dir_data->local_dir==NULL)
|
if(dir_data->local_dir==NULL || ask_destination>0)
|
||||||
{
|
{
|
||||||
dir_data->local_dir=ask_location("Please select a destination where the marked files will be copied.", NULL, NULL);
|
char *local_dir=dir_data->local_dir;
|
||||||
|
dir_data->local_dir=ask_location("Please select a destination where the marked files will be copied.", NULL, local_dir);
|
||||||
|
free(local_dir);
|
||||||
|
ask_destination=0;
|
||||||
}
|
}
|
||||||
if(dir_data->local_dir!=NULL)
|
if(dir_data->local_dir!=NULL)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue