Using g_spawn_async() instead of execlp()
This commit is contained in:
parent
5f9ae60e55
commit
58a2e08f92
22
po/de.po
22
po/de.po
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Browser 0.1.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-02-01 15:17+0100\n"
|
||||
"POT-Creation-Date: 2011-02-05 04:38+0100\n"
|
||||
"PO-Revision-Date: 2010-03-29 23:28+0200\n"
|
||||
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
||||
"Language-Team: English\n"
|
||||
|
@ -189,12 +189,12 @@ msgstr ""
|
|||
#: ../src/copy.c:672 ../src/delete.c:421 ../src/delete.c:426
|
||||
#: ../src/desktop.c:1439 ../src/desktop.c:1444 ../src/move.c:452
|
||||
#: ../src/move.c:456 ../src/properties.c:114 ../src/properties.c:118
|
||||
#: ../src/view.c:364 ../src/view.c:367
|
||||
#: ../src/view.c:366 ../src/view.c:371
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:814 ../src/view.c:144
|
||||
#: ../src/view.c:415
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:804 ../src/view.c:144
|
||||
#: ../src/view.c:419
|
||||
msgid "Open with..."
|
||||
msgstr "Offnen mit..."
|
||||
|
||||
|
@ -268,8 +268,8 @@ msgid "New folder"
|
|||
msgstr "Neu Ordner"
|
||||
|
||||
#: ../src/callbacks.c:195 ../src/callbacks.c:201 ../src/callbacks.c:1051
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:796 ../src/desktopicon.c:801
|
||||
#: ../src/desktopicon.c:848 ../src/desktopicon.c:853
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:784 ../src/desktopicon.c:789
|
||||
#: ../src/desktopicon.c:836 ../src/desktopicon.c:841
|
||||
msgid "Warning"
|
||||
msgstr "Achtung"
|
||||
|
||||
|
@ -311,7 +311,7 @@ msgstr ""
|
|||
msgid "Open _with..."
|
||||
msgstr "Offnen _mit..."
|
||||
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:800
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:788
|
||||
msgid "Are you sure you want to execute this file?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -484,11 +484,11 @@ msgid ""
|
|||
" -m\tMonitor where to display the desktop\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/desktopicon.c:851
|
||||
#: ../src/desktopicon.c:839
|
||||
msgid "Are you sure you want to delete "
|
||||
msgstr ""
|
||||
|
||||
#: ../src/desktopicon.c:852
|
||||
#: ../src/desktopicon.c:840
|
||||
msgid " file(s)?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -614,10 +614,10 @@ msgstr ""
|
|||
msgid "View file..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/view.c:403 ../src/view.c:496
|
||||
#: ../src/view.c:407 ../src/view.c:500
|
||||
msgid "Could not edit file"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/view.c:510
|
||||
#: ../src/view.c:514
|
||||
msgid "Usage: view file...\n"
|
||||
msgstr ""
|
||||
|
|
22
po/es.po
22
po/es.po
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Browser 0.1.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-02-01 15:17+0100\n"
|
||||
"POT-Creation-Date: 2011-02-05 04:38+0100\n"
|
||||
"PO-Revision-Date: 2010-03-30 01:04+0200\n"
|
||||
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
||||
"Language-Team: Spanish\n"
|
||||
|
@ -189,12 +189,12 @@ msgstr ""
|
|||
#: ../src/copy.c:672 ../src/delete.c:421 ../src/delete.c:426
|
||||
#: ../src/desktop.c:1439 ../src/desktop.c:1444 ../src/move.c:452
|
||||
#: ../src/move.c:456 ../src/properties.c:114 ../src/properties.c:118
|
||||
#: ../src/view.c:364 ../src/view.c:367
|
||||
#: ../src/view.c:366 ../src/view.c:371
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:814 ../src/view.c:144
|
||||
#: ../src/view.c:415
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:804 ../src/view.c:144
|
||||
#: ../src/view.c:419
|
||||
msgid "Open with..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -268,8 +268,8 @@ msgid "New folder"
|
|||
msgstr ""
|
||||
|
||||
#: ../src/callbacks.c:195 ../src/callbacks.c:201 ../src/callbacks.c:1051
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:796 ../src/desktopicon.c:801
|
||||
#: ../src/desktopicon.c:848 ../src/desktopicon.c:853
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:784 ../src/desktopicon.c:789
|
||||
#: ../src/desktopicon.c:836 ../src/desktopicon.c:841
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
|
@ -311,7 +311,7 @@ msgstr ""
|
|||
msgid "Open _with..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:800
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:788
|
||||
msgid "Are you sure you want to execute this file?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -484,11 +484,11 @@ msgid ""
|
|||
" -m\tMonitor where to display the desktop\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/desktopicon.c:851
|
||||
#: ../src/desktopicon.c:839
|
||||
msgid "Are you sure you want to delete "
|
||||
msgstr ""
|
||||
|
||||
#: ../src/desktopicon.c:852
|
||||
#: ../src/desktopicon.c:840
|
||||
msgid " file(s)?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -614,10 +614,10 @@ msgstr ""
|
|||
msgid "View file..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/view.c:403 ../src/view.c:496
|
||||
#: ../src/view.c:407 ../src/view.c:500
|
||||
msgid "Could not edit file"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/view.c:510
|
||||
#: ../src/view.c:514
|
||||
msgid "Usage: view file...\n"
|
||||
msgstr ""
|
||||
|
|
22
po/fr.po
22
po/fr.po
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Browser 0.1.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-02-01 15:17+0100\n"
|
||||
"POT-Creation-Date: 2011-02-05 04:38+0100\n"
|
||||
"PO-Revision-Date: 2010-03-29 23:28+0200\n"
|
||||
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
||||
"Language-Team: French\n"
|
||||
|
@ -189,12 +189,12 @@ msgstr " Chemin: "
|
|||
#: ../src/copy.c:672 ../src/delete.c:421 ../src/delete.c:426
|
||||
#: ../src/desktop.c:1439 ../src/desktop.c:1444 ../src/move.c:452
|
||||
#: ../src/move.c:456 ../src/properties.c:114 ../src/properties.c:118
|
||||
#: ../src/view.c:364 ../src/view.c:367
|
||||
#: ../src/view.c:366 ../src/view.c:371
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:814 ../src/view.c:144
|
||||
#: ../src/view.c:415
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:804 ../src/view.c:144
|
||||
#: ../src/view.c:419
|
||||
msgid "Open with..."
|
||||
msgstr "Ouvrir avec..."
|
||||
|
||||
|
@ -268,8 +268,8 @@ msgid "New folder"
|
|||
msgstr "Nouveau dossier"
|
||||
|
||||
#: ../src/callbacks.c:195 ../src/callbacks.c:201 ../src/callbacks.c:1051
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:796 ../src/desktopicon.c:801
|
||||
#: ../src/desktopicon.c:848 ../src/desktopicon.c:853
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:784 ../src/desktopicon.c:789
|
||||
#: ../src/desktopicon.c:836 ../src/desktopicon.c:841
|
||||
msgid "Warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
|
@ -311,7 +311,7 @@ msgstr "Démonter"
|
|||
msgid "Open _with..."
|
||||
msgstr "Ouvrir _avec..."
|
||||
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:800
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:788
|
||||
msgid "Are you sure you want to execute this file?"
|
||||
msgstr "Voulez-vous vraiment exécuter ce fichier ?"
|
||||
|
||||
|
@ -512,11 +512,11 @@ msgstr ""
|
|||
" -h\tAfficher l'écran d'accueil\n"
|
||||
" -m\tMoniteur où afficher le bureau\n"
|
||||
|
||||
#: ../src/desktopicon.c:851
|
||||
#: ../src/desktopicon.c:839
|
||||
msgid "Are you sure you want to delete "
|
||||
msgstr "Voulez-vous vraiment effacer "
|
||||
|
||||
#: ../src/desktopicon.c:852
|
||||
#: ../src/desktopicon.c:840
|
||||
msgid " file(s)?"
|
||||
msgstr " fichier(s) ?"
|
||||
|
||||
|
@ -648,10 +648,10 @@ msgstr "Ne peut pas déterminer le type de fichier"
|
|||
msgid "View file..."
|
||||
msgstr "Ouvrir..."
|
||||
|
||||
#: ../src/view.c:403 ../src/view.c:496
|
||||
#: ../src/view.c:407 ../src/view.c:500
|
||||
msgid "Could not edit file"
|
||||
msgstr "Impossible d'éditer le fichier"
|
||||
|
||||
#: ../src/view.c:510
|
||||
#: ../src/view.c:514
|
||||
msgid "Usage: view file...\n"
|
||||
msgstr "Usage: view fichier...\n"
|
||||
|
|
22
po/it.po
22
po/it.po
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Browser 0.1.4\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-02-01 15:17+0100\n"
|
||||
"POT-Creation-Date: 2011-02-05 04:38+0100\n"
|
||||
"PO-Revision-Date: 2010-04-07 23:18+0200\n"
|
||||
"Last-Translator: Pierre Pronchery <khorben@defora.org>\n"
|
||||
"Language-Team: Italian\n"
|
||||
|
@ -189,12 +189,12 @@ msgstr ""
|
|||
#: ../src/copy.c:672 ../src/delete.c:421 ../src/delete.c:426
|
||||
#: ../src/desktop.c:1439 ../src/desktop.c:1444 ../src/move.c:452
|
||||
#: ../src/move.c:456 ../src/properties.c:114 ../src/properties.c:118
|
||||
#: ../src/view.c:364 ../src/view.c:367
|
||||
#: ../src/view.c:366 ../src/view.c:371
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:814 ../src/view.c:144
|
||||
#: ../src/view.c:415
|
||||
#: ../src/browser.c:753 ../src/desktopicon.c:804 ../src/view.c:144
|
||||
#: ../src/view.c:419
|
||||
msgid "Open with..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -268,8 +268,8 @@ msgid "New folder"
|
|||
msgstr ""
|
||||
|
||||
#: ../src/callbacks.c:195 ../src/callbacks.c:201 ../src/callbacks.c:1051
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:796 ../src/desktopicon.c:801
|
||||
#: ../src/desktopicon.c:848 ../src/desktopicon.c:853
|
||||
#: ../src/callbacks.c:1056 ../src/desktopicon.c:784 ../src/desktopicon.c:789
|
||||
#: ../src/desktopicon.c:836 ../src/desktopicon.c:841
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
|
@ -311,7 +311,7 @@ msgstr ""
|
|||
msgid "Open _with..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:800
|
||||
#: ../src/callbacks.c:1055 ../src/desktopicon.c:788
|
||||
msgid "Are you sure you want to execute this file?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -484,11 +484,11 @@ msgid ""
|
|||
" -m\tMonitor where to display the desktop\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/desktopicon.c:851
|
||||
#: ../src/desktopicon.c:839
|
||||
msgid "Are you sure you want to delete "
|
||||
msgstr ""
|
||||
|
||||
#: ../src/desktopicon.c:852
|
||||
#: ../src/desktopicon.c:840
|
||||
msgid " file(s)?"
|
||||
msgstr ""
|
||||
|
||||
|
@ -614,10 +614,10 @@ msgstr ""
|
|||
msgid "View file..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/view.c:403 ../src/view.c:496
|
||||
#: ../src/view.c:407 ../src/view.c:500
|
||||
msgid "Could not edit file"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/view.c:510
|
||||
#: ../src/view.c:514
|
||||
msgid "Usage: view file...\n"
|
||||
msgstr ""
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
/* FIXME
|
||||
* - track multiple selection on delete/properties... */
|
||||
* - track multiple selection on delete/properties...
|
||||
* - add a "Rename..." menu action */
|
||||
|
||||
|
||||
|
||||
|
@ -160,7 +161,7 @@ static int _desktop_get_workarea(Desktop * desktop);
|
|||
/* desktop_new */
|
||||
/* callbacks */
|
||||
static gboolean _new_idle(gpointer data);
|
||||
static GdkFilterReturn _new_on_root_event(GdkXEvent * xevent, GdkEvent * event,
|
||||
static GdkFilterReturn _on_root_event(GdkXEvent * xevent, GdkEvent * event,
|
||||
gpointer data);
|
||||
|
||||
Desktop * desktop_new(DesktopPrefs * prefs)
|
||||
|
@ -188,16 +189,15 @@ Desktop * desktop_new(DesktopPrefs * prefs)
|
|||
desktop->home = "/";
|
||||
desktop_set_layout(desktop, desktop->prefs.layout);
|
||||
/* manage root window events */
|
||||
gdk_add_client_message_filter(gdk_atom_intern(
|
||||
DESKTOP_CLIENT_MESSAGE, FALSE),
|
||||
_new_on_root_event, desktop);
|
||||
gdk_add_client_message_filter(gdk_atom_intern(DESKTOP_CLIENT_MESSAGE,
|
||||
FALSE), _on_root_event, desktop);
|
||||
gdk_window_get_geometry(desktop->root, &desktop->window.x,
|
||||
&desktop->window.y, &desktop->window.width,
|
||||
&desktop->window.height, &depth);
|
||||
gdk_window_set_events(desktop->root, gdk_window_get_events(
|
||||
desktop->root) | GDK_BUTTON_PRESS_MASK
|
||||
| GDK_PROPERTY_CHANGE_MASK);
|
||||
gdk_window_add_filter(desktop->root, _new_on_root_event, desktop);
|
||||
gdk_window_add_filter(desktop->root, _on_root_event, desktop);
|
||||
/* draw background when idle */
|
||||
g_idle_add(_new_idle, desktop);
|
||||
return desktop;
|
||||
|
@ -288,7 +288,7 @@ static void _on_popup_paste(gpointer data);
|
|||
static void _on_popup_preferences(gpointer data);
|
||||
static void _on_popup_symlink(gpointer data);
|
||||
|
||||
static GdkFilterReturn _new_on_root_event(GdkXEvent * xevent, GdkEvent * event,
|
||||
static GdkFilterReturn _on_root_event(GdkXEvent * xevent, GdkEvent * event,
|
||||
gpointer data)
|
||||
{
|
||||
Desktop * desktop = data;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2010 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Browser */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -718,7 +718,9 @@ static void _on_icon_open(gpointer data)
|
|||
{
|
||||
DesktopIcon * desktopicon = data;
|
||||
Mime * mime;
|
||||
pid_t pid;
|
||||
char * argv[] = { "browser", "browser", "--", NULL, NULL };
|
||||
GSpawnFlags flags = G_SPAWN_SEARCH_PATH | G_SPAWN_FILE_AND_ARGV_ZERO;
|
||||
GError * error = NULL;
|
||||
|
||||
if(desktopicon->path == NULL && desktopicon->callback != NULL)
|
||||
{
|
||||
|
@ -733,16 +735,10 @@ static void _on_icon_open(gpointer data)
|
|||
_on_icon_open_with(desktopicon);
|
||||
return;
|
||||
}
|
||||
if((pid = fork()) == -1)
|
||||
{
|
||||
desktop_error(desktopicon->desktop, "fork", 0);
|
||||
return;
|
||||
}
|
||||
if(pid != 0)
|
||||
return;
|
||||
execlp("browser", "browser", "--", desktopicon->path, NULL);
|
||||
fprintf(stderr, "%s%s\n", "desktop: browser: ", strerror(errno));
|
||||
exit(127);
|
||||
argv[3] = desktopicon->path;
|
||||
if(g_spawn_async(NULL, argv, NULL, flags, NULL, NULL, NULL, &error)
|
||||
!= TRUE)
|
||||
desktop_error(desktopicon->desktop, argv[0], 1); /* XXX */
|
||||
}
|
||||
|
||||
static void _on_icon_edit(gpointer data)
|
||||
|
@ -758,31 +754,23 @@ static gboolean _run_confirm(DesktopIcon * desktopicon);
|
|||
static void _on_icon_run(gpointer data)
|
||||
{
|
||||
DesktopIcon * desktopicon = data;
|
||||
pid_t pid;
|
||||
char * argv[] = { NULL, NULL, NULL };
|
||||
GSpawnFlags flags = G_SPAWN_SEARCH_PATH | G_SPAWN_FILE_AND_ARGV_ZERO;
|
||||
GError * error = NULL;
|
||||
|
||||
if(desktopicon->confirm != FALSE && _run_confirm(desktopicon) != TRUE)
|
||||
return;
|
||||
if((pid = fork()) == -1)
|
||||
desktop_error(desktopicon->desktop, "fork", 0);
|
||||
else if(pid != 0)
|
||||
return;
|
||||
if(desktopicon->tryexec != NULL) /* XXX ugly */
|
||||
{
|
||||
execlp(desktopicon->tryexec, desktopicon->tryexec, NULL);
|
||||
desktop_error(NULL, desktopicon->tryexec, 0);
|
||||
}
|
||||
if(desktopicon->exec != NULL)
|
||||
{
|
||||
argv[0] = desktopicon->tryexec;
|
||||
else if(desktopicon->exec != NULL)
|
||||
/* FIXME it's actually a format string */
|
||||
execlp(desktopicon->exec, desktopicon->exec, NULL);
|
||||
desktop_error(NULL, desktopicon->exec, 0);
|
||||
}
|
||||
argv[0] = desktopicon->exec;
|
||||
else
|
||||
{
|
||||
execl(desktopicon->path, desktopicon->path, NULL);
|
||||
desktop_error(NULL, desktopicon->path, 0);
|
||||
}
|
||||
exit(127);
|
||||
argv[0] = desktopicon->path;
|
||||
argv[1] = argv[0];
|
||||
if(g_spawn_async(NULL, argv, NULL, flags, NULL, NULL, NULL, &error)
|
||||
!= TRUE)
|
||||
desktop_error(desktopicon->desktop, argv[0], 1); /* XXX */
|
||||
}
|
||||
|
||||
static gboolean _run_confirm(DesktopIcon * desktopicon)
|
||||
|
@ -809,7 +797,9 @@ static void _on_icon_open_with(gpointer data)
|
|||
DesktopIcon * desktopicon = data;
|
||||
GtkWidget * dialog;
|
||||
char * filename = NULL;
|
||||
pid_t pid;
|
||||
char * argv[] = { NULL, NULL, NULL, NULL };
|
||||
GSpawnFlags flags = G_SPAWN_SEARCH_PATH | G_SPAWN_FILE_AND_ARGV_ZERO;
|
||||
GError * error = NULL;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new(_("Open with..."),
|
||||
GTK_WINDOW(desktopicon->window),
|
||||
|
@ -822,14 +812,12 @@ static void _on_icon_open_with(gpointer data)
|
|||
gtk_widget_destroy(dialog);
|
||||
if(filename == NULL)
|
||||
return;
|
||||
if((pid = fork()) == -1)
|
||||
desktop_error(desktopicon->desktop, "fork", 0);
|
||||
else if(pid == 0)
|
||||
{
|
||||
execlp(filename, filename, desktopicon->path, NULL);
|
||||
desktop_error(NULL, filename, 0);
|
||||
exit(127);
|
||||
}
|
||||
argv[0] = filename;
|
||||
argv[1] = filename;
|
||||
argv[2] = desktopicon->path;
|
||||
if(g_spawn_async(NULL, argv, NULL, flags, NULL, NULL, NULL, &error)
|
||||
!= TRUE)
|
||||
desktop_error(desktopicon->desktop, argv[0], 1); /* XXX */
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
|
@ -858,7 +846,7 @@ static void _on_icon_delete(gpointer data)
|
|||
/* FIXME check if needs UTF-8 conversion */
|
||||
selection = g_list_append(selection, desktopicon->path);
|
||||
if(_common_exec("delete", "-ir", selection) != 0)
|
||||
desktop_error(desktopicon->desktop, "fork", 0);
|
||||
desktop_error(desktopicon->desktop, "fork", 1);
|
||||
g_list_free(selection);
|
||||
}
|
||||
}
|
||||
|
@ -866,18 +854,14 @@ static void _on_icon_delete(gpointer data)
|
|||
static void _on_icon_properties(gpointer data)
|
||||
{
|
||||
DesktopIcon * desktopicon = data;
|
||||
pid_t pid;
|
||||
char * argv[] = { "properties", "properties", "--", NULL, NULL };
|
||||
GSpawnFlags flags = G_SPAWN_SEARCH_PATH | G_SPAWN_FILE_AND_ARGV_ZERO;
|
||||
GError * error = NULL;
|
||||
|
||||
if((pid = fork()) == -1)
|
||||
{
|
||||
desktop_error(desktopicon->desktop, "fork", 0);
|
||||
return;
|
||||
}
|
||||
else if(pid != 0)
|
||||
return;
|
||||
execlp("properties", "properties", "--", desktopicon->path, NULL);
|
||||
desktop_error(NULL, "properties", 0);
|
||||
exit(127);
|
||||
argv[3] = desktopicon->path;
|
||||
if(g_spawn_async(NULL, argv, NULL, flags, NULL, NULL, NULL, &error)
|
||||
!= TRUE)
|
||||
desktop_error(desktopicon->desktop, argv[0], 1); /* XXX */
|
||||
}
|
||||
|
||||
static gboolean _on_icon_key_press(GtkWidget * widget, GdkEventKey * event,
|
||||
|
@ -920,5 +904,5 @@ static void _on_icon_drag_data_received(GtkWidget * widget,
|
|||
DesktopIcon * desktopicon = data;
|
||||
|
||||
if(_common_drag_data_received(context, seldata, desktopicon->path) != 0)
|
||||
desktop_error(desktopicon->desktop, "fork", 0);
|
||||
desktop_error(desktopicon->desktop, "fork", 1);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user