Ejemplo n.º 1
0
Archivo: ADM3.c Proyecto: tf2/ADM3
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];
}
Ejemplo n.º 2
0
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;
}