ScmObj Scm_TLSRead(ScmTLS* t) { #if defined(GAUCHE_USE_AXTLS) context_check(t, "read"); close_check(t, "read"); int r; uint8_t* buf; while ((r = ssl_read(t->conn, &buf)) == SSL_OK); if (r < 0) Scm_SysError("ssl_read() failed"); return Scm_MakeString((char*) buf, r, r, SCM_STRING_INCOMPLETE); #else /*!GAUCHE_USE_AXTLS*/ return SCM_FALSE; #endif /*!GAUCHE_USE_AXTLS*/ }
ScmObj Scm_TLSWrite(ScmTLS* t, ScmObj msg) { #if defined(GAUCHE_USE_AXTLS) context_check(t, "write"); close_check(t, "write"); int r; u_int size; const uint8_t* cmsg = get_message_body(msg, &size); if ((r = ssl_write(t->conn, cmsg, size)) < 0) { Scm_SysError("ssl_write() failed"); } return SCM_MAKE_INT(r); #else /*!GAUCHE_USE_AXTLS*/ return SCM_FALSE; #endif /*!GAUCHE_USE_AXTLS*/ }
int main (int argc, char **argv) { int ret = 0; int fd; char *filename; char rbuf[PS]; if (argc != 2) { printf("Usage: %s filename\n", argv[0]); exit(EXIT_FAILURE); } filename = argv[1]; signal(SIGUSR1, sighandler); fd = open_check(filename, O_RDWR, 0); pause(); if (pread(fd, rbuf, PS, 0) < 0) { perror("read"); ret = 1; } close_check(fd); return ret; }