commit 7a3b043383533db5515daf21a9eae2ee24613030
parent 1687a6aff0c356fb2638f293236097c170bde7e7
Author: LRN <lrn1986@gmail.com>
Date: Thu, 2 Aug 2012 16:58:22 +0000
Now test_ipc should work (kind of)
Diffstat:
5 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/src/main/extractor.c b/src/main/extractor.c
@@ -147,18 +147,18 @@ abort_all_channels (struct EXTRACTOR_PluginList *plugins)
* @param plugin plugin of the channel sending the message
* @param meta_type type of the meta data
* @param meta_format format of the meta data
- * @param value_len number of bytes in 'value'
- * @param value 'data' send from the plugin
* @param mime mime string send from the plugin
+ * @param value 'data' send from the plugin
+ * @param value_len number of bytes in 'value'
*/
static void
process_plugin_reply (void *cls,
struct EXTRACTOR_PluginList *plugin,
enum EXTRACTOR_MetaType meta_type,
enum EXTRACTOR_MetaFormat meta_format,
- size_t value_len,
+ const char *mime,
const void *value,
- const char *mime)
+ size_t value_len)
{
static unsigned char cont_msg = MESSAGE_CONTINUE_EXTRACTING;
struct PluginReplyProcessor *prp = cls;
diff --git a/src/main/extractor_datasource.c b/src/main/extractor_datasource.c
@@ -281,7 +281,8 @@ bfds_new (const void *data,
memset (result, 0, sizeof (struct BufferedFileDataSource));
result->data = (NULL != data) ? data : &result[1];
result->buffer = (NULL != data) ? NULL : &result[1];
- result->buffer_size = (NULL != data) ? fsize : xtra;
+ result->buffer_size = (NULL != data) ? fsize : xtra;
+ result->buffer_bytes = (NULL != data) ? fsize : 0;
result->fsize = fsize;
result->fd = fd;
bfds_pick_next_buffer_at (result, 0);
diff --git a/src/main/extractor_ipc.c b/src/main/extractor_ipc.c
@@ -111,8 +111,7 @@ EXTRACTOR_IPC_process_reply_ (struct EXTRACTOR_PluginList *plugin,
plugin,
(enum EXTRACTOR_MetaType) meta.meta_type,
(enum EXTRACTOR_MetaFormat) meta.meta_format,
- meta.value_size,
- mime_type, value);
+ mime_type, value, meta.value_size);
return sizeof (struct MetaMessage) + meta.mime_length + meta.value_size;
default:
LOG ("Invalid message type %d\n", (int) code);
diff --git a/src/main/extractor_ipc_w32.c b/src/main/extractor_ipc_w32.c
@@ -435,7 +435,7 @@ EXTRACTOR_IPC_channel_create_ (struct EXTRACTOR_PluginList *plugin,
struct InitMessage *init;
size_t slen;
- STARTUPINFO startup;
+ STARTUPINFOA startup;
PROCESS_INFORMATION proc;
char cmd[MAX_PATH + 1];
char arg1[10], arg2[10];
@@ -491,16 +491,18 @@ EXTRACTOR_IPC_channel_create_ (struct EXTRACTOR_PluginList *plugin,
return NULL;
}
- memset (&startup, 0, sizeof (STARTUPINFO));
+ memset (&proc, 0, sizeof (PROCESS_INFORMATION));
+ memset (&startup, 0, sizeof (STARTUPINFOA));
/* TODO: write our own plugin-hosting executable? rundll32, for once, has smaller than usual stack size.
* Also, users might freak out seeing over 9000 rundll32 processes (seeing over 9000 processes named
* "libextractor_plugin_helper" is probably less confusing).
*/
- snprintf(cmd, MAX_PATH + 1,
+ snprintf(cmd, MAX_PATH,
"rundll32.exe libextractor-3.dll,RundllEntryPoint@16 %lu %lu",
p10_os_inh, p21_os_inh);
cmd[MAX_PATH] = '\0';
+ startup.cb = sizeof (STARTUPINFOA);
if (CreateProcessA (NULL, cmd, NULL, NULL, TRUE, CREATE_SUSPENDED, NULL, NULL,
&startup, &proc))
{
diff --git a/src/main/test_ipc.c b/src/main/test_ipc.c
@@ -30,6 +30,8 @@
*/
static int ret = 2;
+#define HLO "Hello world!"
+#define GOB "Goodbye!"
/**
* Function that libextractor calls for each
@@ -89,22 +91,22 @@ process_replies (void *cls,
return 1;
}
if ( (2 == ret) &&
- (data_len == strlen ("Hello world!") + 1) &&
+ (data_len == strlen (HLO) + 1) &&
(0 == strncmp (data,
- "Hello world!",
- strlen ("Hello world!"))) )
+ HLO,
+ strlen (HLO))) )
{
- fprintf (stderr, "Received 'hello world'\n");
+ fprintf (stderr, "Received '%s'\n", HLO);
ret = 1;
return 0;
}
if ( (1 == ret) &&
- (data_len == strlen ("Goodbye!") + 1) &&
+ (data_len == strlen (GOB) + 1) &&
(0 == strncmp (data,
- "Goodbyte!",
- strlen ("Goodbye!"))) )
+ GOB,
+ strlen (GOB))) )
{
- fprintf (stderr, "Received 'good bye'\n");
+ fprintf (stderr, "Received '%s'\n", GOB);
ret = 0;
return 1;
}