forked from enlightenment/enlightenment
E17:
I. Simplification, andif we cannot stat(), the best thing to do is toswitch to a copy-delete operation. II.Just stuff... III. There is a problem with _e_fm_op_random_char(). When wewant to randomize a string we do srand(time()) foreachcharacter, so if the file is small enough to be deleted inless than a second, it's not randomized. And even if it's bigger, it's not goodly randomized.Sorry. Patch by Maxime Villard rustyBSD SVN revision: 78469
This commit is contained in:
parent
8ba9451fab
commit
a0bf30b75c
|
@ -106,7 +106,7 @@ static int _e_fm_op_remove_atom(E_Fm_Op_Task *task);
|
||||||
static int _e_fm_op_rename_atom(E_Fm_Op_Task *task);
|
static int _e_fm_op_rename_atom(E_Fm_Op_Task *task);
|
||||||
static int _e_fm_op_destroy_atom(E_Fm_Op_Task *task);
|
static int _e_fm_op_destroy_atom(E_Fm_Op_Task *task);
|
||||||
static void _e_fm_op_random_buf(char *buf, ssize_t len);
|
static void _e_fm_op_random_buf(char *buf, ssize_t len);
|
||||||
static char _e_fm_op_random_char();
|
static void _e_fm_op_random_char(char *buf, size_t len);
|
||||||
|
|
||||||
Eina_List *_e_fm_op_work_queue = NULL, *_e_fm_op_scan_queue = NULL;
|
Eina_List *_e_fm_op_work_queue = NULL, *_e_fm_op_scan_queue = NULL;
|
||||||
Ecore_Idler *_e_fm_op_work_idler_p = NULL, *_e_fm_op_scan_idler_p = NULL;
|
Ecore_Idler *_e_fm_op_work_idler_p = NULL, *_e_fm_op_scan_idler_p = NULL;
|
||||||
|
@ -311,12 +311,11 @@ main(int argc, char **argv)
|
||||||
if ((stat(argv[i], &st1) == 0) &&
|
if ((stat(argv[i], &st1) == 0) &&
|
||||||
(stat(buf, &st2) == 0))
|
(stat(buf, &st2) == 0))
|
||||||
{
|
{
|
||||||
/* if files are on the same device */
|
/* if files are not on the same device */
|
||||||
if (st1.st_dev == st2.st_dev)
|
if (st1.st_dev != st2.st_dev)
|
||||||
type = E_FM_OP_RENAME;
|
|
||||||
else
|
|
||||||
type = E_FM_OP_MOVE;
|
type = E_FM_OP_MOVE;
|
||||||
}
|
}
|
||||||
|
else type = E_FM_OP_MOVE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1661,7 +1660,6 @@ _e_fm_op_rename_atom(E_Fm_Op_Task *task)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EXPERIMENTAL */
|
|
||||||
static int
|
static int
|
||||||
_e_fm_op_destroy_atom(E_Fm_Op_Task *task)
|
_e_fm_op_destroy_atom(E_Fm_Op_Task *task)
|
||||||
{
|
{
|
||||||
|
@ -1691,7 +1689,7 @@ _e_fm_op_destroy_atom(E_Fm_Op_Task *task)
|
||||||
|
|
||||||
if (st2.st_dev != task->src.st.st_dev ||
|
if (st2.st_dev != task->src.st.st_dev ||
|
||||||
st2.st_ino != task->src.st.st_ino ||
|
st2.st_ino != task->src.st.st_ino ||
|
||||||
!S_ISREG(st2.st_mode))
|
st2.st_mode != task->src.st.st_mode)
|
||||||
goto finish;
|
goto finish;
|
||||||
|
|
||||||
if ((buf = malloc(READBUFSIZE)) == NULL)
|
if ((buf = malloc(READBUFSIZE)) == NULL)
|
||||||
|
@ -1744,32 +1742,28 @@ static void
|
||||||
_e_fm_op_random_buf(char *buf, ssize_t len)
|
_e_fm_op_random_buf(char *buf, ssize_t len)
|
||||||
{
|
{
|
||||||
int f = -1;
|
int f = -1;
|
||||||
ssize_t i;
|
|
||||||
|
|
||||||
if ((f = open("/dev/urandom", O_RDONLY)) == -1)
|
if ((f = open("/dev/urandom", O_RDONLY)) == -1)
|
||||||
{
|
{
|
||||||
for (i = 0; i < len; i++)
|
_e_fm_op_random_char(buf, len);
|
||||||
{
|
return;
|
||||||
buf[i] = _e_fm_op_random_char();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (read(f, buf, len) != len)
|
if (read(f, buf, len) != len)
|
||||||
{
|
_e_fm_op_random_char(buf, len);
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
{
|
|
||||||
buf[i] = _e_fm_op_random_char();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
close(f);
|
close(f);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char
|
static void
|
||||||
_e_fm_op_random_char()
|
_e_fm_op_random_char(char *buf, size_t len)
|
||||||
{
|
{
|
||||||
|
size_t i;
|
||||||
srand((unsigned int)time(NULL));
|
srand((unsigned int)time(NULL));
|
||||||
return (rand() % 256) + 'a';
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
buf[i] = (rand() % 256) + 'a';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue