my_bool ma_pvio_tls_check_fp(MARIADB_TLS *ctls, const char *fp, const char *fp_list) { unsigned int cert_fp_len= 64; char *cert_fp= NULL; my_bool rc=1; MYSQL *mysql= ctls->pvio->mysql; cert_fp= (char *)malloc(cert_fp_len); if ((cert_fp_len= ma_tls_get_finger_print(ctls, cert_fp, cert_fp_len)) < 1) goto end; if (fp) rc= ma_pvio_tls_compare_fp(cert_fp, cert_fp_len, fp, (unsigned int)strlen(fp)); else if (fp_list) { MA_FILE *fp; char buff[255]; if (!(fp = ma_open(fp_list, "r", mysql))) goto end; while (ma_gets(buff, sizeof(buff)-1, fp)) { /* remove trailing new line character */ char *pos= strchr(buff, '\r'); if (!pos) pos= strchr(buff, '\n'); if (pos) *pos= '\0'; if (!ma_pvio_tls_compare_fp(cert_fp, cert_fp_len, buff, (unsigned int)strlen(buff))) { /* finger print is valid: close file and exit */ ma_close(fp); rc= 0; goto end; } } /* No finger print matched - close file and return error */ ma_close(fp); } end: if (cert_fp) free(cert_fp); if (rc) { my_set_error(mysql, CR_SSL_CONNECTION_ERROR, SQLSTATE_UNKNOWN, ER(CR_SSL_CONNECTION_ERROR), "Fingerprint verification of server certificate failed"); } return rc; }
int ChanlunTools::jxzt(CALCINFO* pData, int num) { int ss = 1; float ma5 = ma_close(pData, num, 5); float ma13 = ma_close(pData, num, 13); float ma21 = ma_close(pData, num, 21); float ma34 = ma_close(pData, num, 34); float ma55 = ma_close(pData, num, 55); float ma89 = ma_close(pData, num, 89); float ma144 = ma_close(pData, num, 144); float ma233 = ma_close(pData, num, 233); float c = pData->m_pData[num].m_fClose; if(c>ma5) ss++; if(c>ma13) ss++; if(c>ma21) ss++; if(c>ma34) ss++; if(c>ma55) ss++; if(c>ma89) ss++; if(c>ma144) ss++; if(c>ma233) ss++; return ss; }
/* {{{ mysql_local_infile_end */ static void mysql_local_infile_end(void *ptr) { MYSQL_INFILE_INFO *info = (MYSQL_INFILE_INFO *)ptr; if (info) { if (info->fp) ma_close(info->fp); free(ptr); } return; }
int ChanlunTools::jxzc(CALCINFO* pData, int num) { float ma5 = ma_close(pData, num, 5); float ma13 = ma_close(pData, num, 13); float ma21 = ma_close(pData, num, 21); float ma34 = ma_close(pData, num, 34); float ma55 = ma_close(pData, num, 55); float ma89 = ma_close(pData, num, 89); float ma144 = ma_close(pData, num, 144); float ma233 = ma_close(pData, num, 233); float c = pData->m_pData[num].m_fClose; float cz1 = c - ma5; float cz2 = c - ma13; float cz3 = c - ma21; float cz4 = c - ma34; float cz5 = c - ma55; float cz6 = c - ma89; float cz7 = c - ma144; float cz8 = c - ma233; float czs[] = {cz1, cz2, cz3, cz4, cz5, cz6, cz7, cz8}; int flag = 1; float zcw = czs[0]; if (zcw<0) { zcw = 99999; flag = 0; } for(int i=1; i<8; i++) { if(czs[i]>0 && czs[i] < zcw) { zcw = czs[i]; flag = i+1; } } return flag; }