5 #include <sys/nacl_imc_api.h>
6 #include <sys/nacl_syscalls.h>
9 void print_string(const char *msg
, int size
)
13 for(i
= 0; i
< size
; i
++) {
15 if (32 <= c
&& c
< 127) {
25 void send_message(int desc
, char *data
)
27 struct NaClImcMsgIoVec iov
;
28 struct NaClImcMsgHdr msg
;
30 iov
.length
= strlen(data
);
36 int result
= imc_sendmsg(desc
, &msg
, 0);
42 void read_file(int desc
)
46 int got
= read(desc
, buf
, sizeof(buf
));
49 printf("NaCl read from FD %i: ", desc
);
50 print_string(buf
, got
);
54 void read_message(int desc
)
58 struct NaClImcMsgIoVec iov
;
59 struct NaClImcMsgHdr msg
;
61 iov
.length
= sizeof(buf
);
67 int result
= imc_recvmsg(desc
, &msg
, 0);
72 printf("NaCl got message: ");
73 print_string(buf
, result
);
74 printf("NaCl received %i FDs\n", msg
.desc_length
);
76 for(i
= 0; i
< msg
.desc_length
; i
++) {
77 read_file(msg
.descv
[i
]);
83 int main(int argc
, char* argv
[]) {
84 printf("NaCl module started\n");
85 send_message(3, "Hello from NaCl to Javascript!");
86 send_message(3, "Hello from NaCl to Javascript (message 2)");