[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r27005 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r27005 - gnunet/src/util |
Date: |
Tue, 30 Apr 2013 06:38:47 +0200 |
Author: LRN
Date: 2013-04-30 06:38:47 +0200 (Tue, 30 Apr 2013)
New Revision: 27005
Modified:
gnunet/src/util/test_os_start_process.c
Log:
Fix test_os_startprocess
Previous code wrongly assumed that the message will be read from the pipe
completely in one go. It does not happen like that _every_ time.
Modified: gnunet/src/util/test_os_start_process.c
===================================================================
--- gnunet/src/util/test_os_start_process.c 2013-04-30 00:04:25 UTC (rev
27004)
+++ gnunet/src/util/test_os_start_process.c 2013-04-30 04:38:47 UTC (rev
27005)
@@ -52,7 +52,15 @@
static GNUNET_SCHEDULER_TaskIdentifier die_task;
+struct read_context
+{
+ char buf[16];
+ int buf_offset;
+ const struct GNUNET_DISK_FileHandle *stdout_read_handle;
+};
+struct read_context rc;
+
static void
end_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
@@ -71,13 +79,10 @@
static void
read_call (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
- struct GNUNET_DISK_FileHandle *stdout_read_handle = cls;
- char buf[16];
-
- memset (&buf, 0, sizeof (buf));
int bytes;
- bytes = GNUNET_DISK_file_read (stdout_read_handle, &buf, sizeof (buf));
+ bytes = GNUNET_DISK_file_read (rc.stdout_read_handle,
&rc.buf[rc.buf_offset], \
+ sizeof (rc.buf) - rc.buf_offset);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "bytes is %d\n", bytes);
@@ -90,8 +95,10 @@
return;
}
- ok = strncmp (&buf[0], test_phrase, strlen (test_phrase));
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "read %s\n", &buf[0]);
+ ok = strncmp (rc.buf, test_phrase, strlen (test_phrase));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "read %s\n", &rc.buf[rc.buf_offset]);
+ rc.buf_offset += bytes;
+
if (0 == ok)
{
GNUNET_SCHEDULER_cancel (die_task);
@@ -100,8 +107,8 @@
}
GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
- stdout_read_handle, &read_call,
- stdout_read_handle);
+ rc.stdout_read_handle, &read_call,
+ NULL);
}
@@ -163,9 +170,11 @@
(GNUNET_TIME_UNIT_MINUTES, 1), &end_task,
NULL);
+ memset (&rc, 0, sizeof (rc));
+ rc.stdout_read_handle = stdout_read_handle;
GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
stdout_read_handle, &read_call,
- (void *) stdout_read_handle);
+ NULL);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r27005 - gnunet/src/util,
gnunet <=