SF.net SVN: geany: [2244] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Feb 10 12:36:32 UTC 2008


Revision: 2244
          http://geany.svn.sourceforge.net/geany/?rev=2244&view=rev
Author:   eht16
Date:     2008-02-10 04:36:32 -0800 (Sun, 10 Feb 2008)

Log Message:
-----------
Use a random integer as part of socket file name instead of current time stamp.
Before creating a new socket, delete a maybe existing socket and its symlink.	    

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/socket.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-02-10 12:35:38 UTC (rev 2243)
+++ trunk/ChangeLog	2008-02-10 12:36:32 UTC (rev 2244)
@@ -1,3 +1,19 @@
+2008-02-10  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/navqueue.c, src/navqueue.h, src/symbols.c, src/treeviews.c:
+   Apply patch from Yura Siamashka to fix wrong navigation queue items
+   (thanks).
+ * src/editor.c:
+   Add workaround for a Scintilla bug in HTML/PHP lexer which styles the
+   last line of document wrong when in PHP mode.
+ * README.Packagers: Add some notes for package maintainers.
+ * src/socket.c:
+   Use a random integer as part of socket file name instead of current
+   time stamp.
+   Before creating a new socket, delete a maybe existing socket and its
+   symlink.
+
+
 2008-02-08  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/project.c:
@@ -6,7 +22,7 @@
    Remove prefix from win32_get_file_filters() and win32_get_filters().
    Fix some encoding problems with filenames retrieved from the native
    Windows file dialogs.
- * src/sci_wrappers.c:
+ * src/sciwrappers.c:
    Fix wrong placement of long line marker (closes #1889392).
 
 

Modified: trunk/src/socket.c
===================================================================
--- trunk/src/socket.c	2008-02-10 12:35:38 UTC (rev 2243)
+++ trunk/src/socket.c	2008-02-10 12:36:32 UTC (rev 2244)
@@ -40,6 +40,14 @@
  * to mark the end of data send a single '.'. Each message should be ended with \n.
  *
  * At the moment the commands open, line and column are available.
+ *
+ * About the socket files on Unix-like systems:
+ * Geany creates a socket in /tmp(or any other directory returned by g_get_tmp_dir()) and it creates
+ * a symlink in the current configuration to the created socket file. The symlink is named
+ * geany_socket.dispnum (dispnum is the number of the active X display).
+ * If the socket file in the temporara directory could not be created, Geany creates the socket file
+ * directly in the configuration directory as a fallback.
+ *
  */
 
 
@@ -151,6 +159,25 @@
 }
 
 
+static void remove_socket_link_full()
+{
+	gchar real_path[512];
+	gsize len;
+
+	real_path[0] = '\0';
+
+	// read the contents of the symbolic link socket_info.file_name and delete it
+	// readlink should return something like "/tmp/geany_socket.1202396669"
+	len = readlink(socket_info.file_name, real_path, sizeof(real_path) - 1);
+	if ((gint) len > 0)
+	{
+		real_path[len] = '\0';
+		g_unlink(real_path);
+	}
+	g_unlink(socket_info.file_name);
+}
+
+
 /* (Unix domain) socket support to replace the old FIFO code
  * (taken from Sylpheed, thanks) */
 gint socket_init(gint argc, gchar **argv)
@@ -199,7 +226,7 @@
 	sock = socket_fd_connect_unix(socket_info.file_name);
 	if (sock < 0)
 	{
-		g_unlink(socket_info.file_name);
+		remove_socket_link_full(); // deletes the socket file and the symlink
 		return socket_fd_open_unix(socket_info.file_name);
 	}
 #endif
@@ -233,20 +260,7 @@
 #else
 	if (socket_info.file_name != NULL)
 	{
-		gchar real_path[512];
-		gsize len;
-
-		real_path[0] = '\0';
-
-		// read the contents of the symbolic link socket_info.file_name and delete it
-		// readlink should return something like "/tmp/geany_socket.1202396669"
-		len = readlink(socket_info.file_name, real_path, sizeof(real_path) - 1);
-		if ((gint) len > 0)
-		{
-			real_path[len] = '\0';
-			g_unlink(real_path);
-		}
-		g_unlink(socket_info.file_name);
+		remove_socket_link_full(); // deletes the socket file and the symlink
 		g_free(socket_info.file_name);
 	}
 #endif
@@ -309,8 +323,8 @@
 	// in case the configuration directory is located on a network file system or any other
 	// file system which doesn't support sockets, we just link the socket there and create the
 	// real socket in the system's tmp directory assuming it supports sockets
-	real_path = g_strdup_printf("%s%cgeany_socket.%d",
-		g_get_tmp_dir(), G_DIR_SEPARATOR, (gint) time(NULL));
+	real_path = g_strdup_printf("%s%cgeany_socket.%08x",
+		g_get_tmp_dir(), G_DIR_SEPARATOR, g_random_int());
 
 	if (utils_is_file_writeable(real_path) != 0)
 	{	// if real_path is not writable for us, fall back to /home/user/.geany/geany_socket


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list