--- trunk/plug-ins/compiz-icon/data/compiz.tmpuse 2008-05-20 00:09:35.000000000 +0900
+++ trunk/plug-ins/compiz-icon/data/compiz 2008-06-13 13:05:00.000000000 +0900
@@ -1,5 +1,6 @@
#!/bin/sh
+if [ ! -w $2 ] ; then exit 1 ; fi
pgrep compiz > /dev/null && COMPIZ=1 || COMPIZ=0
pgrep $1 > /dev/null && DECORATOR=1 || DECORATOR=0
-echo "$COMPIZ$DECORATOR" > /tmp/compiz
+echo "$COMPIZ$DECORATOR" > $2
--- trunk/plug-ins/compiz-icon/src/applet-compiz.c.tmpuse 2008-06-13 00:30:46.000000000 +0900
+++ trunk/plug-ins/compiz-icon/src/applet-compiz.c 2008-06-13 13:05:00.000000000 +0900
@@ -7,6 +7,8 @@
Fabrice Rey <fabounet@users.berlios.de>
******************************************************************************/
+#define _BSD_SOURCE
+#include <stdlib.h>
#include <string.h>
#include <cairo-dock.h>
@@ -16,12 +18,12 @@
CD_APPLET_INCLUDE_MY_VARS
-#define CD_COMPIZ_TMP_FILE "/tmp/compiz"
#define CD_COMPIZ_CHECK_TIME 5000
static int s_iThreadIsRunning = 0;
static int s_iSidTimerRedraw = 0;
static GStaticMutex mutexData = G_STATIC_MUTEX_INIT;
+char *cd_compiz_tmp_file = NULL;
void cd_compiz_start_system_wm (void) {
@@ -126,16 +128,26 @@
void cd_compiz_acquisition (void) {
- gchar *cCommand = g_strdup_printf("bash %s/compiz %s", MY_APPLET_SHARE_DATA_DIR, myConfig.cWindowDecorator);
+ int fds = -1;
+ gchar *cCommand = NULL;
+ cd_compiz_tmp_file = g_strdup("/tmp/compiz.XXXXXX");
+ if ((fds = mkstemp(cd_compiz_tmp_file)) == -1 ) {
+ g_free(cd_compiz_tmp_file);
+ cd_compiz_tmp_file = NULL;
+ return;
+ }
+ cCommand = g_strdup_printf("bash %s/compiz %s %s", MY_APPLET_SHARE_DATA_DIR, myConfig.cWindowDecorator, cd_compiz_tmp_file);
system (cCommand);
g_free (cCommand);
+ close(fds);
}
void cd_compiz_read_data(void) {
gchar *cContent = NULL;
gsize length=0;
GError *erreur = NULL;
- g_file_get_contents(CD_COMPIZ_TMP_FILE, &cContent, &length, &erreur);
+ if (! cd_compiz_tmp_file) return;
+ g_file_get_contents(cd_compiz_tmp_file, &cContent, &length, &erreur);
if (erreur != NULL) {
cd_warning("Attention : %s", erreur->message);
g_error_free(erreur);
@@ -148,6 +160,9 @@
g_free (cContent);
myData.bAcquisitionOK = TRUE;
}
+ g_remove(cd_compiz_tmp_file);
+ g_free (cd_compiz_tmp_file);
+ cd_compiz_tmp_file = NULL;
}
gboolean cd_compiz_update_from_data (void) {
--- trunk/plug-ins/compiz-icon/src/applet-notifications.c.tmpuse 2008-06-13 00:30:46.000000000 +0900
+++ trunk/plug-ins/compiz-icon/src/applet-notifications.c 2008-06-13 13:05:00.000000000 +0900
@@ -8,6 +8,8 @@
******************************************************************************/
+#define _BSD_SOURCE
+#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <glib/gi18n.h>
@@ -23,13 +25,26 @@
CD_APPLET_ABOUT (D_("This is the compiz-icon applet\n made by ChAnGFu for Cairo-Dock"))
static void _compiz_get_version (void) {
+ char *tmpfile = g_strdup("/tmp/cd-compiz-version.XXXXXX");
+ char *cmd_header = "compiz.real --version | awk '{print $2}' > ";
+ char *cmd = g_malloc(strlen(cmd_header) + strlen(tmpfile) + 2);
+ int fds = mkstemp(tmpfile);
+ if (fds == -1) {
+ free (tmpfile);
+ free (cmd);
+ return;
+ }
+ close(fds);
+
if (myData.iCompizMajor != 0 || myData.iCompizMinor != 0 || myData.iCompizMicro != 0)
return ;
- system ("compiz.real --version | awk '{print $2}' > /tmp/cd-compiz-version");
+ sprintf(cmd, "%s%s", cmd_header, tmpfile);
+ system (cmd);
+ g_free (cmd);
GError *erreur = NULL;
gsize length = 0;
gchar *cContent = NULL;
- g_file_get_contents ("/tmp/cd-compiz-version", &cContent, &length, &erreur);
+ g_file_get_contents (tmpfile, &cContent, &length, &erreur);
if (erreur != NULL) {
cd_warning ("Attention : couldn't guess Compiz's version [%s]", erreur->message);
g_error_free (erreur);
@@ -40,7 +55,9 @@
g_free (cContent);
}
cd_message ("Compiz : %d.%d.%d", myData.iCompizMajor, myData.iCompizMinor, myData.iCompizMicro);
- g_remove ("/tmp/cd-compiz-version");
+ g_remove (tmpfile);
+ g_free (tmpfile);
+ tmpfile = NULL;
}
static void _compiz_dbus_action (const gchar *cCommand) {
--- trunk/plug-ins/nVidia/data/nvidia-config.tmpuse 2008-06-10 00:04:36.000000000 +0900
+++ trunk/plug-ins/nVidia/data/nvidia-config 2008-06-13 13:05:00.000000000 +0900
@@ -1,9 +1,10 @@
#!/bin/bash
-rm -rf /tmp/nvidia-config
-nvidia-settings -v | grep version | head -n 1 > /tmp/nvidia-config
-nvidia-settings -q Gpus | cut -d '(' -f 2 -s >> /tmp/nvidia-config
-nvidia-settings -q VideoRam -t >> /tmp/nvidia-config
-nvidia-settings -q NvidiaDriverVersion -t >> /tmp/nvidia-config
-echo "nVidia" >> /tmp/nvidia
+#rm -rf /tmp/nvidia-config
+if [ ! -w $1 ] ; then exit 1 ; fi
+nvidia-settings -v | grep version | head -n 1 > $1
+nvidia-settings -q Gpus | cut -d '(' -f 2 -s >> $1
+nvidia-settings -q VideoRam -t >> $1
+nvidia-settings -q NvidiaDriverVersion -t >> $1
+echo "nVidia" >> $1
--- trunk/plug-ins/nVidia/data/nvidia.tmpuse 2008-06-13 11:57:38.000000000 +0900
+++ trunk/plug-ins/nVidia/data/nvidia 2008-06-13 13:05:00.000000000 +0900
@@ -1,4 +1,5 @@
#!/bin/bash
-rm -rf /tmp/nvidia
-nvidia-settings -q GPUCoreTemp -t > /tmp/nvidia
+#rm -rf /tmp/nvidia
+if [ ! -w $1 ] ; then exit 1 ; fi
+nvidia-settings -q GPUCoreTemp -t > $1
--- trunk/plug-ins/nVidia/src/applet-nvidia.c.tmpuse 2008-06-13 11:57:38.000000000 +0900
+++ trunk/plug-ins/nVidia/src/applet-nvidia.c 2008-06-13 13:23:51.000000000 +0900
@@ -1,7 +1,10 @@
+#define _BSD_SOURCE
#include <stdlib.h>
#include <stdio.h>
+#include <unistd.h>
#include <string.h>
#include <glib/gi18n.h>
+#include <glib/gstdio.h>
#include "applet-struct.h"
#include "applet-notifications.h"
@@ -10,15 +13,27 @@
CD_APPLET_INCLUDE_MY_VARS
+#if 0
#define CD_NVIDIA_CONFIG_TMP_FILE "/tmp/nvidia-config"
#define CD_NVIDIA_TEMP_TMP_FILE "/tmp/nvidia"
-
+#endif
+gchar *cd_nvidia_config_tmp_file = NULL;
+gchar *cd_nvidia_temp_tmp_file = NULL;
//Récupération de la température
void cd_nvidia_acquisition (void) {
- gchar *cCommand = g_strdup_printf("bash %s/nvidia", MY_APPLET_SHARE_DATA_DIR);
+ int fds;
+ cd_nvidia_temp_tmp_file = g_strdup("/tmp/nvidia.XXXXXX");
+ gchar *cCommand;
+ if ((fds = mkstemp(cd_nvidia_temp_tmp_file)) == -1){
+ g_free (cd_nvidia_temp_tmp_file);
+ cd_nvidia_temp_tmp_file = NULL;
+ return;
+ }
+ cCommand = g_strdup_printf("bash %s/nvidia %s", MY_APPLET_SHARE_DATA_DIR, cd_nvidia_temp_tmp_file);
system (cCommand);
g_free (cCommand);
+ close(fds);
}
void cd_nvidia_read_data (void) {
@@ -26,7 +41,8 @@
gsize length=0;
GError *erreur = NULL;
gint iGpuTemp;
- g_file_get_contents(CD_NVIDIA_TEMP_TMP_FILE, &cContent, &length, &erreur);
+ if (!cd_nvidia_temp_tmp_file) return;
+ g_file_get_contents(cd_nvidia_temp_tmp_file, &cContent, &length, &erreur);
if (erreur != NULL) {
cd_warning("Attention : %s", erreur->message);
g_error_free(erreur);
@@ -44,6 +60,9 @@
myData.pGPUData.iGPUTemp = iGpuTemp;
}
}
+ g_remove(cd_nvidia_temp_tmp_file);
+ g_free(cd_nvidia_temp_tmp_file);
+ cd_nvidia_temp_tmp_file = NULL;
}
gboolean cd_nvidia_update_from_data (void) {
@@ -63,9 +82,18 @@
//Récupération de la config
void cd_nvidia_config_acquisition (void) {
- gchar *cCommand = g_strdup_printf("bash %s/nvidia-config", MY_APPLET_SHARE_DATA_DIR);
+ gchar *cCommand;
+ int fds;
+ cd_nvidia_config_tmp_file = g_strdup("/tmp/nvidia-config.XXXXXX");
+ if ((fds = mkstemp(cd_nvidia_config_tmp_file)) == -1){
+ g_free(cd_nvidia_config_tmp_file);
+ cd_nvidia_config_tmp_file = NULL;
+ return;
+ }
+ cCommand = g_strdup_printf("bash %s/nvidia-config %s", MY_APPLET_SHARE_DATA_DIR, cd_nvidia_config_tmp_file);
system (cCommand);
g_free (cCommand);
+ close(fds);
}
static gboolean _nvidia_get_values_from_file (gchar *cContent) {
@@ -132,7 +160,8 @@
gchar *cContent = NULL;
gsize length=0;
GError *erreur = NULL;
- g_file_get_contents(CD_NVIDIA_CONFIG_TMP_FILE, &cContent, &length, &erreur);
+ if (!cd_nvidia_config_tmp_file) return;
+ g_file_get_contents(cd_nvidia_config_tmp_file, &cContent, &length, &erreur);
if (erreur != NULL) {
cd_warning("Attention : %s", erreur->message);
g_error_free(erreur);
@@ -143,6 +172,9 @@
gboolean bAcquisitionOK = _nvidia_get_values_from_file (cContent);
g_free (cContent);
}
+ g_remove(cd_nvidia_config_tmp_file);
+ g_free(cd_nvidia_config_tmp_file);
+ cd_nvidia_config_tmp_file = NULL;
}
gboolean cd_nvidia_config_update_from_data (void) {
--- trunk/plug-ins/wifi/data/wifi.tmpuse 2008-05-20 00:09:37.000000000 +0900
+++ trunk/plug-ins/wifi/data/wifi 2008-06-13 13:05:00.000000000 +0900
@@ -1,4 +1,5 @@
#!/bin/bash
-rm -f /tmp/wifi
-iwconfig > /tmp/wifi 2>/dev/null
-echo "Wifi" >> /tmp/wifi
+# rm -f /tmp/wifi !! should not remove this here
+if [ ! -w $1 ] ; then exit 1 ; fi
+iwconfig > $1 2>/dev/null
+echo "Wifi" >> $1
--- trunk/plug-ins/wifi/src/applet-wifi.c.tmpuse 2008-06-03 15:35:34.000000000 +0900
+++ trunk/plug-ins/wifi/src/applet-wifi.c 2008-06-13 13:05:00.000000000 +0900
@@ -1,3 +1,4 @@
+#define _BSD_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -9,12 +10,20 @@
#include "applet-wifi.h"
CD_APPLET_INCLUDE_MY_VARS
-
-#define WIFI_TMP_FILE "/tmp/wifi"
-
+gchar *wifi_tmp_file = NULL;
+/* access-point does not seem to be used */
void cd_wifi_acquisition (void) {
- gchar *cCommand = g_strdup_printf("bash %s/wifi", MY_APPLET_SHARE_DATA_DIR);
+ gchar *cCommand = NULL;
+ int fds = -1;
+ wifi_tmp_file = g_strdup("/tmp/wifi.XXXXXX");
+ if ((fds = mkstemp(wifi_tmp_file)) == -1) {
+ g_free(wifi_tmp_file);
+ wifi_tmp_file = NULL;
+ return;
+ }
+ close(fds);
+ cCommand = g_strdup_printf("bash %s/wifi %s", MY_APPLET_SHARE_DATA_DIR, wifi_tmp_file);
system (cCommand);
/**if (myData.cConnName != NULL) {
cCommand = g_strdup_printf("bash %s/access-point %s", MY_APPLET_SHARE_DATA_DIR, myData.cConnName);
@@ -129,7 +138,8 @@
gchar *cContent = NULL;
gsize length=0;
GError *erreur = NULL;
- g_file_get_contents(WIFI_TMP_FILE, &cContent, &length, &erreur);
+ if (!wifi_tmp_file) return;
+ g_file_get_contents(wifi_tmp_file, &cContent, &length, &erreur);
if (erreur != NULL) {
cd_warning("Attention : %s", erreur->message);
g_error_free(erreur);
@@ -149,6 +159,10 @@
myData.bAcquisitionOK = TRUE;
}
}
+ g_remove(wifi_tmp_file);
+ g_free(wifi_tmp_file);
+ wifi_tmp_file = NULL;
+
}
--- trunk/plug-ins/xmms/data/infoaudacious.sh.tmpuse 2008-05-20 00:09:47.000000000 +0900
+++ trunk/plug-ins/xmms/data/infoaudacious.sh 2008-06-13 13:05:00.000000000 +0900
@@ -2,7 +2,8 @@
# Audacious Emulated pipe
# Pipe created by ChAnGFu
-FILE="/tmp/audacious-info_$USER.0"
+if [ ! -w $1 ] ; then exit 1 ; fi
+FILE=$1
STATUS=$(audtool playback-status)
TITLE=$(audtool current-song)
--- trunk/plug-ins/xmms/data/infobanshee.sh.tmpuse 2008-05-20 00:09:47.000000000 +0900
+++ trunk/plug-ins/xmms/data/infobanshee.sh 2008-06-13 13:05:00.000000000 +0900
@@ -2,7 +2,8 @@
# Banshee Emulated pipe
# Pipe created by ChAnGFu
-FILE="/tmp/banshee-info_$USER.0"
+if [ ! -w $1 ] ; then exit 1 ; fi
+FILE=$1
STATUS=$(banshee --query-status)
STATUS=${STATUS#*:}
--- trunk/plug-ins/xmms/data/infoexaile.sh.tmpuse 2008-05-20 00:09:47.000000000 +0900
+++ trunk/plug-ins/xmms/data/infoexaile.sh 2008-06-13 13:05:00.000000000 +0900
@@ -2,7 +2,8 @@
# Exaile Emulated pipe
# Pipe created by ChAnGFu
-FILE="/tmp/exaile-info_$USER.0"
+if [ ! -w $1 ] ; then exit 1 ; fi
+FILE=$1
EXAILE=`ps aux | grep exaile | grep -v grep | grep -v info`
if [ "x$EXAILE" = "x" ]; then
--- trunk/plug-ins/xmms/src/applet-infopipe.c.tmpuse 2008-05-20 00:09:46.000000000 +0900
+++ trunk/plug-ins/xmms/src/applet-infopipe.c 2008-06-13 13:05:00.000000000 +0900
@@ -7,6 +7,10 @@
Fabrice Rey (fabounet@users.berlios.de)
******************************************************************************/
+#define _BSD_SOURCE
+
+#include <stdio.h>
+#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <glib/gi18n.h>
@@ -19,6 +23,11 @@
CD_APPLET_INCLUDE_MY_VARS
+gchar *cInfopipeFilePath = NULL;
+gchar *cInfopipeFilePath_XMMS = NULL;
+gchar *cInfopipeFilePath_AUDACIOUS = NULL;
+gchar *cInfopipeFilePath_BANSHEE = NULL;
+gchar *cInfopipeFilePath_EXAILE = NULL;
enum {
INFO_STATUS = 0,
@@ -40,39 +49,62 @@
void cd_xmms_acquisition (void) {
gchar *cCommand = NULL;
+ int fds = -1;
switch (myConfig.iPlayer) {
case MY_XMMS :
break ;
case MY_AUDACIOUS : //Il faut émuler le pipe d'audacious par AUDTOOL
- cCommand = g_strdup_printf ("bash %s/infoaudacious.sh", MY_APPLET_SHARE_DATA_DIR);
+ cInfopipeFilePath = g_strdup_printf("/tmp/audacious-info_%s.0.XXXXXX",g_getenv ("USER"));
+ if ((fds = mkstemp(cInfopipeFilePath)) == -1) {
+ g_free (cInfopipeFilePath);
+ cInfopipeFilePath = NULL;
+ return;
+ }
+ cInfopipeFilePath_AUDACIOUS = cInfopipeFilePath;
+ cCommand = g_strdup_printf ("bash %s/infoaudacious.sh %s", MY_APPLET_SHARE_DATA_DIR, cInfopipeFilePath);
system (cCommand);
break ;
case MY_BANSHEE : //Le pipe est trop lent et cause des freezes... // Il faut émuler le pipe de banshee par le script
- cCommand = g_strdup_printf ("bash %s/infobanshee.sh", MY_APPLET_SHARE_DATA_DIR);
+ cInfopipeFilePath = g_strdup_printf("/tmp/banshee-info_%s.0.XXXXXX",g_getenv ("USER"));
+ if ((fds = mkstemp(cInfopipeFilePath)) == -1) {
+ g_free (cInfopipeFilePath);
+ cInfopipeFilePath = NULL;
+ return;
+ }
+ cInfopipeFilePath_BANSHEE = cInfopipeFilePath;
+ cCommand = g_strdup_printf ("bash %s/infobanshee.sh %s", MY_APPLET_SHARE_DATA_DIR, cInfopipeFilePath);
system (cCommand);
break ;
case MY_EXAILE : //Le pipe est trop lent, récupération des infos une fois sur deux avec un pique du cpu lors de l'éxécution du script // Il faut émuler le pipe d'audacious par Exaile -q
- cCommand = g_strdup_printf ("bash %s/infoexaile.sh", MY_APPLET_SHARE_DATA_DIR);
+ if ((fds = mkstemp(cInfopipeFilePath)) == -1) {
+ g_free (cInfopipeFilePath);
+ cInfopipeFilePath = NULL;
+ return;
+ }
+ cInfopipeFilePath = g_strdup_printf("/tmp/exaile-info_%s.0.XXXXXX",g_getenv ("USER"));
+ cInfopipeFilePath_EXAILE = cInfopipeFilePath;
+ cCommand = g_strdup_printf ("bash %s/infoexaile.sh %s", MY_APPLET_SHARE_DATA_DIR, cInfopipeFilePath);
system (cCommand);
break ;
default :
break ;
}
+ close(fds);
g_free (cCommand);
}
//Fonction de lecture du tuyau.
void cd_xmms_read_data (void) {
- gchar *cInfopipeFilePath = NULL;
+ cInfopipeFilePath = NULL;
switch (myConfig.iPlayer) {
case MY_XMMS :
- cInfopipeFilePath = g_strdup_printf("/tmp/xmms-info_%s.0",g_getenv ("USER"));
+ cInfopipeFilePath = cInfopipeFilePath_XMMS;
break ;
case MY_AUDACIOUS :
- cInfopipeFilePath = g_strdup_printf("/tmp/audacious-info_%s.0",g_getenv ("USER"));
+ cInfopipeFilePath = cInfopipeFilePath_AUDACIOUS;
break ;
case MY_BANSHEE :
- cInfopipeFilePath = g_strdup_printf("/tmp/banshee-info_%s.0",g_getenv ("USER"));
+ cInfopipeFilePath = cInfopipeFilePath_BANSHEE;
break ;
case MY_EXAILE :
break ;
@@ -214,22 +246,23 @@
if (myConfig.iPlayer != MY_XMMS) {
g_remove (cInfopipeFilePath);
g_free (cInfopipeFilePath);
+ cInfopipeFilePath = NULL;
}
}
//Fonction qui supprime les tuyaux émulés pour eviter des pics CPU
void cd_xmms_remove_pipes(void) {
- gchar *cInfopipeFilePath = NULL;
+ cInfopipeFilePath = NULL;
switch (myConfig.iPlayer) {
case MY_AUDACIOUS :
- cInfopipeFilePath = g_strdup_printf("/tmp/audacious-info_%s.0",g_getenv ("USER"));
+ cInfopipeFilePath = cInfopipeFilePath_AUDACIOUS;
break;
case MY_BANSHEE :
- cInfopipeFilePath = g_strdup_printf("/tmp/banshee-info_%s.0",g_getenv ("USER"));
+ cInfopipeFilePath = cInfopipeFilePath_BANSHEE;
break;
case MY_EXAILE :
- cInfopipeFilePath = g_strdup_printf("/tmp/exaile-info_%s.0",g_getenv ("USER"));
+ cInfopipeFilePath = cInfopipeFilePath_EXAILE;
break;
default : // xmms n'en a pas.
return ;