summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2011-10-20 21:28:01 +0200
committerBram Moolenaar <Bram@vim.org>2011-10-20 21:28:01 +0200
commitcd6fe97e6b25f6c277de5021c51894071051385e (patch)
treea1cf16a523ec1c91e6168fe00d911fc1cce37781
parentc842748302d33bcf41c6b796a43d9dbbf44cdc29 (diff)
downloadvim-git-7.3.344.tar.gz
updated for version 7.3.344v7.3.344
Problem: Problem with GUI startup related to XInitThreads. Solution: Use read() and write() instead of fputs() and fread(). (James Vega)
-rw-r--r--src/gui.c34
-rw-r--r--src/version.c2
2 files changed, 17 insertions, 19 deletions
diff --git a/src/gui.c b/src/gui.c
index 71dcd46f0..0219d1cfb 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -212,7 +212,6 @@ gui_do_fork()
int status;
int exit_status;
pid_t pid = -1;
- FILE *parent_file;
/* Setup a pipe between the child and the parent, so that the parent
* knows when the child has done the setsid() call and is allowed to
@@ -290,19 +289,17 @@ gui_do_fork()
gui_mch_forked();
# endif
- if (!pipe_error)
- parent_file = fdopen(pipefd[1], "w");
- else
- parent_file = NULL;
-
/* Try to start the GUI */
gui_attempt_start();
/* Notify the parent */
- if (parent_file != NULL)
+ if (!pipe_error)
{
- fputs(gui.in_use ? "ok" : "fail", parent_file);
- fclose(parent_file);
+ if (gui.in_use)
+ write_eintr(pipefd[1], "ok", 3);
+ else
+ write_eintr(pipefd[1], "fail", 5);
+ close(pipefd[1]);
}
/* If we failed to start the GUI, exit now. */
@@ -323,17 +320,16 @@ gui_do_fork()
static int
gui_read_child_pipe(int fd)
{
- size_t bytes_read;
- FILE *file;
- char buffer[10];
-
- file = fdopen(fd, "r");
- if (!file)
+ long bytes_read;
+#define READ_BUFFER_SIZE 10
+ char buffer[READ_BUFFER_SIZE];
+
+ bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1);
+#undef READ_BUFFER_SIZE
+ close(fd);
+ if (bytes_read < 0)
return GUI_CHILD_IO_ERROR;
-
- bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
- buffer[bytes_read] = '\0';
- fclose(file);
+ buffer[bytes_read] = NUL;
if (strcmp(buffer, "ok") == 0)
return GUI_CHILD_OK;
return GUI_CHILD_FAILED;
diff --git a/src/version.c b/src/version.c
index 9fe48f3c7..74a4bfeb1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 344,
+/**/
343,
/**/
342,