This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository efm2.
View the commit online.
commit 05be5f4f365ee59bb365f100d2e2d92c6a5bf74b
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
AuthorDate: Thu Oct 31 08:26:52 2024 +0000
add cp binary tool and implement cp in backend
---
src/backends/default/{mv.c => cp.c} | 17 ++++-------------
src/backends/default/meson.build | 16 +++++++++++++++-
src/backends/default/mv.c | 9 +--------
src/backends/default/open.c | 8 +++-----
4 files changed, 23 insertions(+), 27 deletions(-)
diff --git a/src/backends/default/mv.c b/src/backends/default/cp.c
similarity index 93%
copy from src/backends/default/mv.c
copy to src/backends/default/cp.c
index 56bf28b..e7a750e 100644
--- a/src/backends/default/mv.c
+++ b/src/backends/default/cp.c
@@ -106,7 +106,7 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
// set up status files for the op
status_begin();
- status_op("mv");
+ status_op("cp");
// build up a list of all files to mv and scan them to find how much
EINA_LIST_FOREACH(files, l, fs)
@@ -192,16 +192,9 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
umask(prev_umask);
// mv the file to a tmp file: mv /srcdir/filename /dstdir/.efm/filename.tmp
- if (fs_mv(src, dsttmpfile, EINA_TRUE))
+ if (fs_cp_rm(src, dsttmpfile, EINA_TRUE, EINA_TRUE, EINA_FALSE))
{ // it worked so deal with meta/thumbs
char *src_meta, *dst_meta;
-
- // XXX: use meta api to:
- // 1. meta_load src (new api that takes path + ret handle)
- // 2. meta_dup src to dst (new api with new path dst path, ret dst hnd)
- // 3. meta_save the duplicated meta (bew api)
- // 4. meta_del the src meta (new api)
- // 5. meta_free src + dst handles (new api)
Meta_File *mfsrc, *mfdst;
mfsrc = meta_file_load(src);
@@ -211,10 +204,9 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
if (mfdst)
{
meta_file_save(mfdst);
- meta_file_del(mfsrc);
- meta_file_free(mfsrc);
meta_file_free(mfdst);
}
+ meta_file_free(mfsrc);
}
// thumbnail file for the base target file
@@ -226,7 +218,7 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
if ((src_meta) && (dst_meta) && (meta_path_prepare(dst)))
{
status_count(1, src_meta);
- fs_mv(src_meta, dst_meta, EINA_FALSE);
+ fs_cp_rm(src_meta, dst_meta, EINA_FALSE, EINA_TRUE, EINA_FALSE);
// fix up the oprig stat info to match so thub is valid
// get stat info of new mv'd file
if (stat(dsttmpfile, &st) == 0)
@@ -263,7 +255,6 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
}
else break;
// it all worked - let's clean up possibly empty tmp/efm dirs
- rmdir(srctmpdir);
rmdir(dsttmpdir);
}
err2:
diff --git a/src/backends/default/meson.build b/src/backends/default/meson.build
index 5034a0f..10bfec4 100644
--- a/src/backends/default/meson.build
+++ b/src/backends/default/meson.build
@@ -49,4 +49,18 @@ executable('mv', [
include_directories: inc,
dependencies: deps,
install: true,
- install_dir: dir)
\ No newline at end of file
+ install_dir: dir)
+executable('cp', [
+ '../../shared/sha.c',
+ '../../shared/esc.c',
+ '../../shared/util.c',
+ 'fs.c',
+ 'cp.c',
+ 'meta.c',
+ 'status.c'
+ ],
+ include_directories: inc,
+ dependencies: deps,
+ install: true,
+ install_dir: dir)
+
\ No newline at end of file
diff --git a/src/backends/default/mv.c b/src/backends/default/mv.c
index 56bf28b..79a9226 100644
--- a/src/backends/default/mv.c
+++ b/src/backends/default/mv.c
@@ -195,13 +195,6 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
if (fs_mv(src, dsttmpfile, EINA_TRUE))
{ // it worked so deal with meta/thumbs
char *src_meta, *dst_meta;
-
- // XXX: use meta api to:
- // 1. meta_load src (new api that takes path + ret handle)
- // 2. meta_dup src to dst (new api with new path dst path, ret dst hnd)
- // 3. meta_save the duplicated meta (bew api)
- // 4. meta_del the src meta (new api)
- // 5. meta_free src + dst handles (new api)
Meta_File *mfsrc, *mfdst;
mfsrc = meta_file_load(src);
@@ -212,9 +205,9 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
{
meta_file_save(mfdst);
meta_file_del(mfsrc);
- meta_file_free(mfsrc);
meta_file_free(mfdst);
}
+ meta_file_free(mfsrc);
}
// thumbnail file for the base target file
diff --git a/src/backends/default/open.c b/src/backends/default/open.c
index f281e9b..aae342c 100644
--- a/src/backends/default/open.c
+++ b/src/backends/default/open.c
@@ -1338,19 +1338,17 @@ _handle_drop_paste(const char *over, const char *action, Eina_List *files)
else
{
if ((!action) || (!strcmp(action, "copy")))
- { // XXX: implement
+ {
+ _op_run("cp", files, mondir);
}
else if (!strcmp(action, "move"))
{
_op_run("mv", files, mondir);
}
- else if (!strcmp(action, "ask"))
- { // XXX: we should never get this - handled by front end right now
- }
else if (!strcmp(action, "link"))
{ // XXX: implement
}
- else // "list", "description", or anything else
+ else // "ask", "list", "description", or anything else
{ // actully we should never get this
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.