IO_METHOD(IoDirectory, exists) { /*doc Directory exists(optionalPath) Returns true if the Directory path exists, and false otherwise. If optionalPath string is provided, it tests the existence of that path instead. */ IoSymbol *path = DATA(self)->path; DIR *dirp; if (IoMessage_argCount(m) > 0) { path = IoMessage_locals_symbolArgAt_(m, locals, 0); } #if !defined(_WIN32) || defined(__CYGWIN__) dirp = opendir(CSTRING(path)); if (!dirp) { return IOFALSE(self); } (void)closedir(dirp); return IOTRUE(self); #else { DWORD d = GetFileAttributes(CSTRING(path)); return (d != INVALID_FILE_ATTRIBUTES) && (d & FILE_ATTRIBUTE_DIRECTORY) ? IOTRUE(self) : IOFALSE(self); } #endif }
IO_METHOD(IoDirectory, exists) { /*doc Directory exists(optionalPath) Returns true if the Directory path exists, and false otherwise. If optionalPath string is provided, it tests the existance of that path instead. */ IoSymbol *path = DATA(self)->path; DIR *dirp; if (IoMessage_argCount(m) > 0) { path = IoMessage_locals_symbolArgAt_(m, locals, 0); } dirp = opendir(CSTRING(path)); if (!dirp) { return IOFALSE(self); } (void)closedir(dirp); return IOTRUE(self); }
IoObject *IoAppleSensors_smsVector(IoAppleSensors *self, IoObject *locals, IoMessage *m) { /*doc AppleSensors smsVector(aVector) Sets aVector to the current x, y and z accelerometer values. Returns true on success and false on failure. */ IoSeq *vector = IoMessage_locals_seqArgAt_(m, locals, 0); float *f = IoSeq_floatPointerOfLength_(vector, 3); int err; if (smsType == -1) { smsType = detect_sms(); } int v[3] = {0, 0, 0}; err = read_sms(smsType, &v[0], &v[1], &v[3]); f[0] = v[0]; f[1] = v[1]; f[2] = v[2]; return err ? IOTRUE(self) : IOFALSE(self); }
IoObject *IoAsyncRequest_isDone(IoAsyncRequest *self, IoObject *locals, IoMessage *m) { /*doc AsyncRequest isDone Returns true if the request is done, false otherwise. */ int r = aio_error(IOCB(self)); return (r == 0 || r != EINPROGRESS) ? IOTRUE(self) : IOFALSE(self); }
IoSecureClient *IoSecureClient_proto(void *state) { initSSL(); IoObject *self = IoObject_new(state); IoObject_tag_(self, IoSecureClient_newTag(state)); SSL_CTX *ctx = SSL_CTX_new(TLSv1_client_method()); if(ctx == NULL) { ERR_print_errors_fp(stderr); } IoObject_setDataPointer_(self, ctx); SSL_CTX_set_default_passwd_cb(ctx, IoSecureSockets_Password_Callback); SSL_CTX_set_default_passwd_cb_userdata(ctx, self); SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, IoSecureSockets_Verify_Callback); #ifdef DTLS_IMPLEMENTED IoObject_setSlot_to_(self, IOSYMBOL("supportsDTLS"), IOTRUE(self)); #else IoObject_setSlot_to_(self, IOSYMBOL("supportsDTLS"), IOFALSE(self)); #endif IoState_registerProtoWithFunc_((IoState *)state, self, IoSecureClient_proto); { IoMethodTable methodTable[] = { {"setKeyFile", IoSecureClient_setKeyFile}, //doc SecureClient setKeyFile(aPath) Sets the key file. Returns self. {"setCertFile", IoSecureClient_setCertFile}, //doc SecureClient setCertFile(aPath) Sets the Certificate file. Returns self. {"setCAFile", IoSecureClient_setCAFile}, //doc SecureClient setCAFile(aPath) Sets the CA file. Returns self. {"setCRLFile", IoSecureClient_setCRLFile}, //doc SecureClient setCRLFile(aPath) Sets the CRL file. Returns self. {"useTLS", IoSecureClient_useTLS}, //doc SecureClient useTLS Returns useTLS value. {"useDTLS", IoSecureClient_useDTLS}, //doc SecureClient useDTLS Returns useDTLS value. {"connectionToServer", IoSecureClient_connectionToServer}, //doc SecureClient connectionToServer Returns connectionToServer. {NULL, NULL} }; IoObject_addMethodTable_(self, methodTable); } return self; }
IoSecureServer *IoSecureServer_setRequiresClientCertificate(IoSecureServer *self, IoObject *locals, IoMessage *msg) { SSL_CTX *ctx = OCTX(self); if(IoMessage_locals_valueArgAt_(msg, locals, 0) == IOTRUE(self)) { SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, IoSecureSockets_Verify_Callback); } else { SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, IoSecureSockets_Verify_Callback); } return self; }
void IoMessage_ifPossibleCacheToken_(IoMessage *self, IoToken *p) { IoSymbol *method = DATA(self)->name; IoObject *r = NULL; switch ((int)IoToken_type(p)) { case TRIQUOTE_TOKEN: r = IoSeq_rawAsUntriquotedSymbol(method); break; case MONOQUOTE_TOKEN: r = IoSeq_rawAsUnescapedSymbol(IoSeq_rawAsUnquotedSymbol(method)); break; case NUMBER_TOKEN: r = IONUMBER(IoSeq_asDouble(method)); break; case HEXNUMBER_TOKEN: r = IONUMBER(IoSeq_rawAsDoubleFromHex(method)); break; default: if (IoSeq_rawEqualsCString_(method, "nil")) { r = IONIL(self); } else if (IoSeq_rawEqualsCString_(method, "true")) { r = IOTRUE(self); } else if (IoSeq_rawEqualsCString_(method, "false")) { r = IOFALSE(self); } } IoMessage_cachedResult_(self, r); }
IoSecureServer *IoSecureServer_proto(void *state) { initSSL(); IoObject *self = IoObject_new(state); IoObject_tag_(self, IoSecureServer_newTag(state)); IoObject_setDataPointer_(self, (SecureServerData *)calloc(1, sizeof(SecureServerData))); SSL_CTX *ctx = SSL_CTX_new(TLSv1_server_method()); DATA(self)->ssl_ctx = ctx; SSL_CTX_set_default_passwd_cb(ctx, IoSecureSockets_Password_Callback); SSL_CTX_set_default_passwd_cb_userdata(ctx, self); SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, IoSecureSockets_Verify_Callback); #ifdef DTLS_IMPLEMENTED IoObject_setSlot_to_(self, IOSYMBOL("supportsDTLS"), IOTRUE(self)); #else IoObject_setSlot_to_(self, IOSYMBOL("supportsDTLS"), IOFALSE(self)); #endif //doc SecureServer supportsDTLS Returns true if server supports DTLS, false otherwise. IoState_registerProtoWithFunc_((IoState *)state, self, IoSecureServer_proto); { IoMethodTable methodTable[] = { {"setKeyFile", IoSecureServer_setKeyFile}, //doc SecureServer setKeyFile(path) Sets the key file. Returns self. {"setCertFile", IoSecureServer_setCertFile}, //doc SecureServer setCertFile(path) Sets the certificate file. Returns self. {"setCAFile", IoSecureServer_setCAFile}, //doc SecureServer setCAFile(path) Sets the CA file. Returns self. {"setCRLFile", IoSecureServer_setCRLFile}, //doc SecureServer setCRLFile(path) Sets the CRL file. Returns self. {"useTLS", IoSecureServer_useTLS}, //doc SecureServer useTLS Returns useTLS value. {"useDTLS", IoSecureServer_useDTLS}, //doc SecureServer useDTLS Returns useDTLS value. {"setRequiresClientCertificate", IoSecureServer_setRequiresClientCertificate}, //doc SecureServer setRequiresClientCertificate(aBool) Sets the requires client certificate attribute. Returns self. {"tlsWrap", IoSecureServer_tlsWrap}, //doc SecureServer tlsWrap Returns tlsWrap value. #ifdef DTLS_IMPLEMENTED {"dtlsWrap", IoSecureServer_dtlsWrap}, //doc SecureServer dtlsWrap Returns dtlsWrap value. {"udpRecvIP", IoSecureServer_udpRecvIP}, //doc SecureServer udpRecvIP Returns udpRecvIP value. {"dispatchUdp", IoSecureServer_dispatchUDP}, //doc SecureServer dispatchUdp Returns dispatchUdp value. #endif {NULL, NULL} }; IoObject_addMethodTable_(self, methodTable); } return self; }
IoObject *IoEditLine_hasEditLib(IoEditLine *self, IoObject *locals, IoMessage *m) { return IOTRUE(self); }