HRESULT IRAPIStream_Read( /*{{{*/ IRAPIStream* stream, void *pv, ULONG cb, ULONG *pcbRead) { HRESULT hr = E_FAIL; if (pv && synce_socket_read(stream->context->socket, pv, cb)) { if (pcbRead) *pcbRead = cb; hr = S_OK; } return hr; }/*}}}*/
bool synce_password_recv_reply( SynceSocket* socket, size_t size, bool* passwordCorrect) { bool success = false; union { uint8_t byte; uint16_t word; } reply; if (size < 1 || size > 2) { synce_error("invalid size"); goto exit; } if (!synce_socket_read(socket, &reply, size)) { synce_error("failed to read password reply"); goto exit; } if (size == 1) { /*synce_trace("password reply = 0x%02x (%i)", reply.byte, reply.byte);*/ *passwordCorrect = reply.byte; } else /* size == 2 */ { reply.word = letoh16(reply.word); /*synce_trace("password reply = 0x%04x (%i)", reply.word, reply.word);*/ *passwordCorrect = reply.word; } /*synce_trace("Password was %s", *passwordCorrect ? "correct!" : "incorrect :-(");*/ success = true; exit: return success; }