forked from enlightenment/enlightenment
From: Maxime Villard <rustyBSD@gmx.fr>
$ mkdir /home/test/EMPTY $ mkdir /home/test/FULL $ cd /home/test $ ln -s EMPTY link Now move (with EFM) the 'FULL' folder to the 'link' (without opening it), and 'FULL' diseappear. As the symlink points directly to 'EMPTY', we have not the full path. So the 'FULL' directory is moved to ~/, instead of the desired dest. Here is a quickly-made a patch. SVN revision: 76591
This commit is contained in:
parent
3ed9034661
commit
0d45c19468
|
@ -49,6 +49,26 @@ void *alloca(size_t);
|
|||
|
||||
#define E_FREE(p) do { free(p); p = NULL; } while (0)
|
||||
|
||||
#define _E_FM_OP_ERROR_SEND_SCAN(_task, _e_fm_op_error_type, _fmt, ...) \
|
||||
do \
|
||||
{ \
|
||||
int _errno = errno; \
|
||||
_e_fm_op_scan_error = 1; \
|
||||
_e_fm_op_send_error(_task, _e_fm_op_error_type, _fmt, __VA_ARGS__, strerror(_errno)); \
|
||||
return 1; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define _E_FM_OP_ERROR_SEND_WORK(_task, _e_fm_op_error_type, _fmt, ...) \
|
||||
do \
|
||||
{ \
|
||||
int _errno = errno; \
|
||||
_e_fm_op_work_error = 1; \
|
||||
_e_fm_op_send_error(_task, _e_fm_op_error_type, _fmt, __VA_ARGS__, strerror(_errno)); \
|
||||
return 1; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
typedef struct _E_Fm_Op_Task E_Fm_Op_Task;
|
||||
typedef struct _E_Fm_Op_Copy_Data E_Fm_Op_Copy_Data;
|
||||
|
||||
|
@ -234,10 +254,16 @@ main(int argc, char **argv)
|
|||
}
|
||||
else
|
||||
{
|
||||
if ((type == E_FM_OP_MOVE) &&
|
||||
(!strcmp(argv[i],buf)))
|
||||
if (type == E_FM_OP_MOVE)
|
||||
{
|
||||
if (!strcmp(argv[i],buf))
|
||||
goto skip_arg;
|
||||
|
||||
if (buf[0]!='/')
|
||||
_E_FM_OP_ERROR_SEND_SCAN(0, E_FM_OP_ERROR,
|
||||
"Unknown destination '%s': %s.", buf);
|
||||
}
|
||||
|
||||
E_Fm_Op_Task *task;
|
||||
|
||||
task = _e_fm_op_task_new();
|
||||
|
@ -508,26 +534,6 @@ _e_fm_op_set_up_idlers()
|
|||
_e_fm_op_work_idler_p = ecore_idler_add(_e_fm_op_work_idler, NULL);
|
||||
}
|
||||
|
||||
#define _E_FM_OP_ERROR_SEND_SCAN(_task, _e_fm_op_error_type, _fmt, ...) \
|
||||
do \
|
||||
{ \
|
||||
int _errno = errno; \
|
||||
_e_fm_op_scan_error = 1; \
|
||||
_e_fm_op_send_error(_task, _e_fm_op_error_type, _fmt, __VA_ARGS__, strerror(_errno)); \
|
||||
return 1; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#define _E_FM_OP_ERROR_SEND_WORK(_task, _e_fm_op_error_type, _fmt, ...) \
|
||||
do \
|
||||
{ \
|
||||
int _errno = errno; \
|
||||
_e_fm_op_work_error = 1; \
|
||||
_e_fm_op_send_error(_task, _e_fm_op_error_type, _fmt, __VA_ARGS__, strerror(_errno)); \
|
||||
return 1; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
static void
|
||||
_e_fm_op_delete_idler(int *mark)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue