void _P(double *dat, double *prob, double *threshold, int *size) { int N=(int)*size; double T=(double)*threshold; double d[N]; double v=var(dat, N); double m= mean(dat, N); for(int i=0;i<N;i++) dat[i] =(dat[i]-m)/v; for(int i=0;i<N;i++) prob[i] = 1/(pow(prob[i],2)); double *dd = _FR(d, dat, prob, T, N); for(int i=0;i<N;i++) dat[i] = dd[i]; }
int deal_kv_list(zmail_parser_t * parser, zmail_mime_t * cmime, char *buf, int len) { char *p, *key, *value, *nbuf; int l, key_len, value_len, nlen = 0; int ret; char fns[10249]; int fns_len = 0; int fns_type = 0; /* 0: none charset, 1: have charset */ p = buf; l = len; #define _FR(a) {if(cmime->a) zmpool_free(parser->mpool, cmime->a);cmime->a=0;} while (1) { if (l < 2) { break; } ret = find_next_kv(p, l, &key, &key_len, &value, &value_len, &nbuf, &nlen); if (ret) { break; } if (___CASEEQ_LEN(key, "boundary", key_len)) { _FR(boundary); cmime->boundary = (char *)zmpool_malloc(parser->mpool, value_len + 3); cmime->boundary[0] = '-'; cmime->boundary[1] = '-'; memcpy(cmime->boundary + 2, value, value_len); cmime->boundary[value_len + 2] = 0; cmime->boundary_len = value_len + 2; } else if (___CASEEQ_LEN(key, "charset", key_len)) { _FR(charset); zmail_parser_header_value_dup(parser, value, value_len, &(cmime->charset)); } else if (___CASEEQ_LEN(key, "name", key_len)) { _FR(name); int rlen = zmail_parser_header_value_dup(parser, value, value_len, &(cmime->name)); if ((rlen > 0) && (!zmail_parser_only_test_parse)) { _FR(name_rd); zmail_parser_header_value_decode_dup(parser, cmime->name, rlen, &(cmime->name_rd)); } } else if (___CASEEQ_LEN(key, "filename", key_len)) { _FR(filename); int rlen = zmail_parser_header_value_dup(parser, value, value_len, &(cmime->filename)); if ((rlen > 0) && (!zmail_parser_only_test_parse)) { _FR(filename_rd); zmail_parser_header_value_decode_dup(parser, cmime->filename, rlen, &(cmime->filename_rd)); } } else if ((key_len > 8) && (___CASEEQ_LEN(key, "filename*", 9))) { /* rfc 2231 */ char *ps, *p; ps = key + 9; p = ps; if (*p == '0') { p++; if (*p == '*') { fns_type = 1; } else { fns_type = 0; } p--; } if (fns_len + value_len < 10240) { memcpy(fns + fns_len, value, value_len); fns_len += value_len; } } if (nbuf == 0) { break; } p = nbuf; l = nlen; } if (fns_len > 0) { if (fns_type == 0) { _FR(filename); int rlen = zmail_parser_header_value_dup(parser, fns, fns_len, &(cmime->filename)); if ((rlen > 0) && (!zmail_parser_only_test_parse)) { _FR(filename_rd); zmail_parser_header_value_decode_dup(parser, cmime->filename, rlen, &(cmime->filename_rd)); } } else { _FR(filename_star); int rlen = zmail_parser_header_value_dup(parser, fns, fns_len, &(cmime->filename_star)); if ((rlen > 0) && (!zmail_parser_only_test_parse)) { _FR(filename_rd); zmail_parser_2231_decode_dup(parser, cmime->filename_star, rlen, &(cmime->filename_rd)); } } } #undef _FR return 0; }