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 fc58a174f7a35db679a08149586ad659d8cbc4a3
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
AuthorDate: Fri Jun 20 17:58:29 2025 +0100
add debug to cmd io and de dup desktop file reading code
also read some more types/fileds. easier now its just in one place
---
src/backends/default/open.c | 296 ++++++++++++++------------------------------
src/shared/cmd.c | 9 ++
2 files changed, 102 insertions(+), 203 deletions(-)
diff --git a/src/backends/default/open.c b/src/backends/default/open.c
index 69644c2..5953908 100644
--- a/src/backends/default/open.c
+++ b/src/backends/default/open.c
@@ -18,7 +18,6 @@
#include <grp.h>
#include "cmd.h"
-#include "eina_types.h"
#include "sha.h"
#include "meta.h"
#include "thumb_check.h"
@@ -686,10 +685,93 @@ _file_add_mod_meta_append(const char *path, const char *meta, const char *key,
eina_stringshare_del(s);
}
+static void
+_file_add_mod_desktop_fields_append(Eina_Strbuf *strbuf, Efreet_Desktop *d,
+ const char *key_prefix, const char *path,
+ struct stat *st)
+{
+ Eina_Strbuf *keybuf = eina_strbuf_new();
+ char *icf;
+ const char *icon;
+
+ if (!keybuf) return;
+#define KEY(_x) \
+ { \
+ eina_strbuf_reset(keybuf); \
+ if (key_prefix) eina_strbuf_append(keybuf, key_prefix); \
+ eina_strbuf_append(keybuf, (_x)); \
+ }
+#define KEYSTR() eina_strbuf_string_get(keybuf)
+#define STREMPTY(_x) (_x) ? (_x) : ""
+#define STRBOOL(_x) (_x) ? "true" : "false"
+ KEY("label");
+ cmd_strbuf_append(strbuf, KEYSTR(),
+ d->name ? d->name : ecore_file_file_get(path));
+ KEY("desktop-type");
+ if (d->type == EFREET_DESKTOP_TYPE_APPLICATION)
+ cmd_strbuf_append(strbuf, KEYSTR(), "Application");
+ else if (d->type == EFREET_DESKTOP_TYPE_DIRECTORY)
+ cmd_strbuf_append(strbuf, KEYSTR(), "Directory");
+ else if (d->type == EFREET_DESKTOP_TYPE_LINK)
+ cmd_strbuf_append(strbuf, KEYSTR(), "Link");
+ KEY("desktop-generic-name");
+ cmd_strbuf_append(strbuf, KEYSTR(), STREMPTY(d->generic_name));
+ KEY("dsesktop-comment");
+ cmd_strbuf_append(strbuf, KEYSTR(), STREMPTY(d->comment));
+ KEY("desktop-icon");
+ icf = _icon_resolve(path, d->icon, st);
+ if (icf)
+ {
+ cmd_strbuf_append(strbuf, KEYSTR(), icf);
+ free(icf);
+ }
+ else cmd_strbuf_append(strbuf, KEYSTR(), STREMPTY(d->icon));
+ KEY("desktop-try-exec");
+ cmd_strbuf_append(strbuf, KEYSTR(), STREMPTY(d->try_exec));
+
+ KEY("desktop-exec");
+ cmd_strbuf_append(strbuf, KEYSTR(), STREMPTY(d->exec));
+ KEY("desktop-url");
+ cmd_strbuf_append(strbuf, KEYSTR(), STREMPTY(d->url));
+ KEY("desktop-no-display");
+ cmd_strbuf_append(strbuf, KEYSTR(), STRBOOL(d->no_display));
+ KEY("desktop-hidden");
+ cmd_strbuf_append(strbuf, KEYSTR(), STRBOOL(d->hidden));
+ KEY("desktop-terminal");
+ cmd_strbuf_append(strbuf, KEYSTR(), STRBOOL(d->terminal));
+ KEY("desktop-startup-notify");
+ cmd_strbuf_append(strbuf, KEYSTR(), STRBOOL(d->startup_notify));
+ if ((d->icon) && (d->icon[0] != '/'))
+ {
+ KEY("desktop-icon.lookup");
+ icon = efreet_mime_type_icon_get(d->icon, icon_theme, 128);
+ cmd_strbuf_append(strbuf, KEYSTR(), STREMPTY(icon));
+ }
+ KEY("label-clicked");
+ _cmd_desktop_x_field_append(strbuf, d, KEYSTR(),
+ "X-NameClicked");
+ KEY("label-selected");
+ _cmd_desktop_x_field_append(strbuf, d, KEYSTR(),
+ "X-NameSelected");
+ KEY("desktop-icon-clicked");
+ _cmd_desktop_x_field_icon_resolve_append(
+ strbuf, d, KEYSTR(), "X-IconClicked", path, st);
+ KEY("desktop-icon-selected");
+ _cmd_desktop_x_field_icon_resolve_append(
+ strbuf, d, KEYSTR(), "X-IconSelected", path, st);
+ KEY("desktop-enlightenment-type");
+ _cmd_desktop_x_field_icon_resolve_append(strbuf, d, KEYSTR(),
+ "X-Enlightenment-Type", path, st);
+#undef STREMPTY
+#undef KEYSTR
+#undef KEY
+ eina_strbuf_free(keybuf);
+}
+
static Eina_Bool
_file_add_mod_info(Eina_Strbuf *strbuf, const char *path, Eina_Bool delay)
{ // add file metadata info on file add or modfiy
- char dst[PATH_MAX], buf[256], buf2[PATH_MAX], *icf;
+ char dst[PATH_MAX], buf[256], buf2[PATH_MAX];
struct stat st;
int mode;
struct passwd *pw;
@@ -730,59 +812,8 @@ _file_add_mod_info(Eina_Strbuf *strbuf, const char *path, Eina_Bool delay)
desktop = efreet_desktop_get(buf2);
if (desktop)
{
- cmd_strbuf_append(strbuf, "link-label",
- desktop->name
- ? desktop->name
- : ecore_file_file_get(path));
- cmd_strbuf_append(strbuf, "link-desktop-generic-name",
- desktop->generic_name ? "true"
- : "false");
- cmd_strbuf_append(strbuf, "link-desktop-comment",
- desktop->comment ? desktop->comment
- : "");
- icf = _icon_resolve(path, desktop->icon, &stdst);
- if (icf)
- {
- cmd_strbuf_append(strbuf, "link-desktop-icon", icf);
- free(icf);
- }
- else
- cmd_strbuf_append(strbuf, "link-desktop-icon",
- desktop->icon ? desktop->icon : "");
- cmd_strbuf_append(strbuf, "link-desktop-try-exec",
- desktop->try_exec ? desktop->try_exec
- : "");
- cmd_strbuf_append(strbuf, "link-desktop-exec",
- desktop->exec ? desktop->exec : "");
- cmd_strbuf_append(strbuf, "link-desktop-url",
- desktop->url ? desktop->url : "");
- cmd_strbuf_append(strbuf, "link-desktop-no-display",
- desktop->no_display ? "true" : "false");
- cmd_strbuf_append(strbuf, "link-desktop-hidden",
- desktop->hidden ? "true" : "false");
- cmd_strbuf_append(strbuf, "link-desktop-terminal",
- desktop->terminal ? "true" : "false");
- cmd_strbuf_append(strbuf, "link-desktop-startup-notify",
- desktop->startup_notify ? "true"
- : "false");
- if ((desktop->icon) && (desktop->icon[0] != '/'))
- {
- icon = efreet_mime_type_icon_get(desktop->icon,
- icon_theme, 128);
- cmd_strbuf_append(strbuf, "link-desktop-icon.lookup",
- icon ? icon : "");
- }
- _cmd_desktop_x_field_append(
- strbuf, desktop, "link-label-clicked", "X-NameClicked");
- _cmd_desktop_x_field_append(strbuf, desktop,
- "link-label-selected",
- "X-NameSelected");
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "link-desktop-icon-clicked",
- "X-IconClicked", path, &stdst);
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "link-desktop-icon-selected",
- "X-IconSelected", path, &stdst);
+ _file_add_mod_desktop_fields_append(
+ strbuf, desktop, "link-", path, &stdst);
efreet_desktop_free(desktop);
have_label = EINA_TRUE;
}
@@ -802,60 +833,9 @@ _file_add_mod_info(Eina_Strbuf *strbuf, const char *path, Eina_Bool delay)
{
desktop = efreet_desktop_get(path);
if (desktop)
- {
- cmd_strbuf_append(strbuf, "link-label",
- desktop->name
- ? desktop->name
- : ecore_file_file_get(path));
- cmd_strbuf_append(strbuf, "link-desktop-generic-name",
- desktop->generic_name ? "true"
- : "false");
- cmd_strbuf_append(strbuf, "link-desktop-comment",
- desktop->comment ? desktop->comment
- : "");
- icf = _icon_resolve(path, desktop->icon, &stdst);
- if (icf)
- {
- cmd_strbuf_append(strbuf, "link-desktop-icon", icf);
- free(icf);
- }
- else
- cmd_strbuf_append(strbuf, "link-desktop-icon",
- desktop->icon ? desktop->icon : "");
- cmd_strbuf_append(strbuf, "link-desktop-try-exec",
- desktop->try_exec ? desktop->try_exec
- : "");
- cmd_strbuf_append(strbuf, "link-desktop-exec",
- desktop->exec ? desktop->exec : "");
- cmd_strbuf_append(strbuf, "link-desktop-url",
- desktop->url ? desktop->url : "");
- cmd_strbuf_append(strbuf, "link-desktop-no-display",
- desktop->no_display ? "true" : "false");
- cmd_strbuf_append(strbuf, "link-desktop-hidden",
- desktop->hidden ? "true" : "false");
- cmd_strbuf_append(strbuf, "link-desktop-terminal",
- desktop->terminal ? "true" : "false");
- cmd_strbuf_append(strbuf, "link-desktop-startup-notify",
- desktop->startup_notify ? "true"
- : "false");
- if ((desktop->icon) && (desktop->icon[0] != '/'))
- {
- icon = efreet_mime_type_icon_get(desktop->icon,
- icon_theme, 128);
- cmd_strbuf_append(strbuf, "link-desktop-icon.lookup",
- icon ? icon : "");
- }
- _cmd_desktop_x_field_append(
- strbuf, desktop, "link-label-clicked", "X-NameClicked");
- _cmd_desktop_x_field_append(strbuf, desktop,
- "link-label-selected",
- "X-NameSelected");
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "link-desktop-icon-clicked",
- "X-IconClicked", path, &stdst);
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "link-desktop-icon-selected",
- "X-IconSelected", path, &stdst);
+ { // XXX: share with other desktop parsing
+ _file_add_mod_desktop_fields_append(
+ strbuf, desktop, "link-", path, &stdst);
efreet_desktop_free(desktop);
}
else
@@ -949,53 +929,8 @@ _file_add_mod_info(Eina_Strbuf *strbuf, const char *path, Eina_Bool delay)
desktop = efreet_desktop_get(buf2);
if (desktop)
{
- cmd_strbuf_append(strbuf, "label",
- desktop->name ? desktop->name
- : ecore_file_file_get(path));
- cmd_strbuf_append(strbuf, "desktop-generic-name",
- desktop->generic_name ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-comment",
- desktop->comment ? desktop->comment : "");
- icf = _icon_resolve(path, desktop->icon, &st);
- if (icf)
- {
- cmd_strbuf_append(strbuf, "desktop-icon", icf);
- free(icf);
- }
- else
- cmd_strbuf_append(strbuf, "desktop-icon",
- desktop->icon ? desktop->icon : "");
- cmd_strbuf_append(strbuf, "desktop-try-exec",
- desktop->try_exec ? desktop->try_exec : "");
- cmd_strbuf_append(strbuf, "desktop-exec",
- desktop->exec ? desktop->exec : "");
- cmd_strbuf_append(strbuf, "desktop-url",
- desktop->url ? desktop->url : "");
- cmd_strbuf_append(strbuf, "desktop-no-display",
- desktop->no_display ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-hidden",
- desktop->hidden ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-terminal",
- desktop->terminal ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-startup-notify",
- desktop->startup_notify ? "true" : "false");
- if ((desktop->icon) && (desktop->icon[0] != '/'))
- {
- icon
- = efreet_mime_type_icon_get(desktop->icon, icon_theme, 128);
- cmd_strbuf_append(strbuf, "desktop-icon.lookup",
- icon ? icon : "");
- }
- _cmd_desktop_x_field_append(strbuf, desktop, "label-clicked",
- "X-NameClicked");
- _cmd_desktop_x_field_append(strbuf, desktop, "label-selected",
- "X-NameSelected");
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "desktop-icon-clicked", "X-IconClicked", path,
- &st);
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "desktop-icon-selected", "X-IconSelected",
- path, &st);
+ _file_add_mod_desktop_fields_append(strbuf, desktop, NULL, path,
+ &st);
efreet_desktop_free(desktop);
have_label = EINA_TRUE;
}
@@ -1015,53 +950,8 @@ _file_add_mod_info(Eina_Strbuf *strbuf, const char *path, Eina_Bool delay)
desktop = efreet_desktop_get(path);
if (desktop)
{
- cmd_strbuf_append(strbuf, "label",
- desktop->name ? desktop->name
- : ecore_file_file_get(path));
- cmd_strbuf_append(strbuf, "desktop-generic-name",
- desktop->generic_name ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-comment",
- desktop->comment ? desktop->comment : "");
- icf = _icon_resolve(path, desktop->icon, &st);
- if (icf)
- {
- cmd_strbuf_append(strbuf, "desktop-icon", icf);
- free(icf);
- }
- else
- cmd_strbuf_append(strbuf, "desktop-icon",
- desktop->icon ? desktop->icon : "");
- cmd_strbuf_append(strbuf, "desktop-try-exec",
- desktop->try_exec ? desktop->try_exec : "");
- cmd_strbuf_append(strbuf, "desktop-exec",
- desktop->exec ? desktop->exec : "");
- cmd_strbuf_append(strbuf, "desktop-url",
- desktop->url ? desktop->url : "");
- cmd_strbuf_append(strbuf, "desktop-no-display",
- desktop->no_display ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-hidden",
- desktop->hidden ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-terminal",
- desktop->terminal ? "true" : "false");
- cmd_strbuf_append(strbuf, "desktop-startup-notify",
- desktop->startup_notify ? "true" : "false");
- if ((desktop->icon) && (desktop->icon[0] != '/'))
- {
- icon
- = efreet_mime_type_icon_get(desktop->icon, icon_theme, 128);
- cmd_strbuf_append(strbuf, "desktop-icon.lookup",
- icon ? icon : "");
- }
- _cmd_desktop_x_field_append(strbuf, desktop, "label-clicked",
- "X-NameClicked");
- _cmd_desktop_x_field_append(strbuf, desktop, "label-selected",
- "X-NameSelected");
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "desktop-icon-clicked", "X-IconClicked", path,
- &st);
- _cmd_desktop_x_field_icon_resolve_append(
- strbuf, desktop, "desktop-icon-selected", "X-IconSelected",
- path, &st);
+ _file_add_mod_desktop_fields_append(strbuf, desktop, NULL, path,
+ &st);
efreet_desktop_free(desktop);
}
else if (!have_label)
diff --git a/src/shared/cmd.c b/src/shared/cmd.c
index 62243a9..185f4e9 100644
--- a/src/shared/cmd.c
+++ b/src/shared/cmd.c
@@ -20,6 +20,15 @@ cmd_parse(const char *cmd)
Cmd *cnew, *c = malloc(sizeof(Cmd) + (2 * sizeof(char *)));
if (strncmp(cmd, "CMD ", 4)) return NULL;
+ {
+ static int cmddbg = -1;
+ if (cmddbg == -1)
+ {
+ if (getenv("CMDDBG")) cmddbg = 1;
+ else cmddbg = 0;
+ }
+ if (cmddbg) printf("[%i] %s\n", getpid(), cmd);
+ }
cmd += 4;
if (!c) return NULL;
c->buf_size = strlen(cmd) + 1;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.