From ea6d0fb19c9290e45c0917c13095de9e684f983f Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 28 Sep 2005 13:09:09 +0000 Subject: [PATCH] allow tagging of exe's SVN revision: 17032 --- legacy/ecore/src/lib/ecore/Ecore.h | 22 ++++++----- legacy/ecore/src/lib/ecore/ecore_exe.c | 44 ++++++++++++++++++++++ legacy/ecore/src/lib/ecore/ecore_private.h | 1 + 3 files changed, 57 insertions(+), 10 deletions(-) diff --git a/legacy/ecore/src/lib/ecore/Ecore.h b/legacy/ecore/src/lib/ecore/Ecore.h index 29978b5d39..ff396ee50f 100644 --- a/legacy/ecore/src/lib/ecore/Ecore.h +++ b/legacy/ecore/src/lib/ecore/Ecore.h @@ -175,16 +175,18 @@ extern "C" { #ifndef WIN32 - EAPI Ecore_Exe *ecore_exe_run(const char *exe_cmd, const void *data); - EAPI void *ecore_exe_free(Ecore_Exe *exe); - EAPI pid_t ecore_exe_pid_get(Ecore_Exe *exe); - EAPI void *ecore_exe_data_get(Ecore_Exe *exe); - EAPI void ecore_exe_pause(Ecore_Exe *exe); - EAPI void ecore_exe_continue(Ecore_Exe *exe); - EAPI void ecore_exe_terminate(Ecore_Exe *exe); - EAPI void ecore_exe_kill(Ecore_Exe *exe); - EAPI void ecore_exe_signal(Ecore_Exe *exe, int num); - EAPI void ecore_exe_hup(Ecore_Exe *exe); + EAPI Ecore_Exe *ecore_exe_run(const char *exe_cmd, const void *data); + EAPI void *ecore_exe_free(Ecore_Exe *exe); + EAPI pid_t ecore_exe_pid_get(Ecore_Exe *exe); + EAPI void ecore_exe_tag_set(Ecore_Exe *exe, const char *tag); + EAPI char *ecore_exe_tag_get(Ecore_Exe *exe); + EAPI void *ecore_exe_data_get(Ecore_Exe *exe); + EAPI void ecore_exe_pause(Ecore_Exe *exe); + EAPI void ecore_exe_continue(Ecore_Exe *exe); + EAPI void ecore_exe_terminate(Ecore_Exe *exe); + EAPI void ecore_exe_kill(Ecore_Exe *exe); + EAPI void ecore_exe_signal(Ecore_Exe *exe, int num); + EAPI void ecore_exe_hup(Ecore_Exe *exe); #endif EAPI Ecore_Idler *ecore_idler_add(int (*func) (void *data), const void *data); diff --git a/legacy/ecore/src/lib/ecore/ecore_exe.c b/legacy/ecore/src/lib/ecore/ecore_exe.c index 679bcdc028..8a891f1c27 100644 --- a/legacy/ecore/src/lib/ecore/ecore_exe.c +++ b/legacy/ecore/src/lib/ecore/ecore_exe.c @@ -52,6 +52,49 @@ ecore_exe_run(const char *exe_cmd, const void *data) return NULL; } +/** + * Sets the string tag for the given process handle + * + * @param exe The given process handle. + * @param tag The string tag to set on the process handle. + * @ingroup Ecore_Exe_Basic_Group + */ +void +ecore_exe_tag_set(Ecore_Exe *exe, const char *tag) +{ + if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE)) + { + ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, + "ecore_exe_tag_set"); + return NULL; + } + if (exe->tag) free(exe->tag); + exe->tag = NULL; + if (tag) exe->tag = strdup(tag); +} + +/** + * Retrieves the tag attached to the given process handle. There is no need to + * free it as it just returns the internal pointer value. This value is only + * valid as long as the @p exe is valid or until the tag is set to something + * else on this @p exe. + * + * @param exe The given process handle. + * @return The string attached to @p exe. + * @ingroup Ecore_Exe_Basic_Group + */ +char * +ecore_exe_tag_get(Ecore_Exe *exe) +{ + if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE)) + { + ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, + "ecore_exe_tag_get"); + return NULL; + } + return exe->tag; +} + /** * Frees the given process handle. * @@ -253,6 +296,7 @@ _ecore_exe_free(Ecore_Exe *exe) data = exe->data; exes = _ecore_list2_remove(exes, exe); ECORE_MAGIC_SET(exe, ECORE_MAGIC_NONE); + if (exe->tag) free(exe->tag); free(exe); return data; } diff --git a/legacy/ecore/src/lib/ecore/ecore_private.h b/legacy/ecore/src/lib/ecore/ecore_private.h index 082958c305..287ba6bc20 100644 --- a/legacy/ecore/src/lib/ecore/ecore_private.h +++ b/legacy/ecore/src/lib/ecore/ecore_private.h @@ -137,6 +137,7 @@ struct _Ecore_Exe ECORE_MAGIC; pid_t pid; void *data; + char *tag; }; #endif