void LLInventoryFilter::setDateRangeLastLogoff(BOOL sl) { if (sl && !isSinceLogoff()) { setDateRange(mLastLogoff, time_max()); setModified(); } if (!sl && isSinceLogoff()) { setDateRange(0, time_max()); setModified(); } mFilterOps.mFilterTypes |= FILTERTYPE_DATE; }
void LLInventoryFilter::setHoursAgo(U32 hours) { if (mFilterOps.mHoursAgo != hours) { bool are_date_limits_valid = mFilterOps.mMinDate == time_min() && mFilterOps.mMaxDate == time_max(); bool is_increasing = hours > mFilterOps.mHoursAgo; bool is_increasing_from_zero = is_increasing && !mFilterOps.mHoursAgo; // *NOTE: need to cache last filter time, in case filter goes stale BOOL less_restrictive = ((are_date_limits_valid && ((is_increasing && mFilterOps.mHoursAgo))) || !hours); BOOL more_restrictive = ((are_date_limits_valid && (!is_increasing && hours)) || is_increasing_from_zero); mFilterOps.mHoursAgo = hours; mFilterOps.mMinDate = time_min(); mFilterOps.mMaxDate = time_max(); if (less_restrictive) { setModified(FILTER_LESS_RESTRICTIVE); } else if (more_restrictive) { setModified(FILTER_MORE_RESTRICTIVE); } else { setModified(FILTER_RESTART); } } mFilterOps.mFilterTypes |= FILTERTYPE_DATE; }
void LLInventoryFilter::setHoursAgo(U32 hours) { if (mFilterOps.mHoursAgo != hours) { // *NOTE: need to cache last filter time, in case filter goes stale BOOL less_restrictive = (mFilterOps.mMinDate == time_min() && mFilterOps.mMaxDate == time_max() && hours > mFilterOps.mHoursAgo); BOOL more_restrictive = (mFilterOps.mMinDate == time_min() && mFilterOps.mMaxDate == time_max() && hours <= mFilterOps.mHoursAgo); mFilterOps.mHoursAgo = hours; mFilterOps.mMinDate = time_min(); mFilterOps.mMaxDate = time_max(); if (less_restrictive) { setModified(FILTER_LESS_RESTRICTIVE); } else if (more_restrictive) { setModified(FILTER_MORE_RESTRICTIVE); } else { setModified(FILTER_RESTART); } } mFilterOps.mFilterTypes |= FILTERTYPE_DATE; }
thread_t* context_select (void) { thread_t *t, *x; #ifdef CLASS_HACKERY_NONDET if (!readyQh) { ch_update_readyQ (); } #endif q_del (readyQh, readyQt, t); if (!t) { context_cleanup (); if (thread_cleanup) (*thread_cleanup)(); #ifdef DEBUG_MODE2 printf("\nNo more processes.\n"); #endif /* DEBUG_MODE2 */ exit (0); } t->in_readyq = 0; inconsistent_timer = time_max (inconsistent_timer, t->time); while (timerQh && inconsistent_timer >= timerQh->time) { q_del (timerQh, timerQl, x); x->in_readyq = 1; q_ins (readyQh, readyQt, x); } return t; }
bool LLInventoryFilter::isSinceLogoff() const { static LLCachedControl<U32> s_last_logoff(gSavedSettings, "LastLogoff", 0); return (mFilterOps.mMinDate == (time_t)s_last_logoff()) && (mFilterOps.mMaxDate == time_max()) && (mFilterOps.mFilterTypes & FILTERTYPE_DATE); }
BOOL LLInventoryFilter::isSinceLogoff() const { bool min_date = (mFilterOps.mMinDate == (time_t)mLastLogoff); bool max_date = (mFilterOps.mMaxDate == time_max()); bool is_filter = (mFilterOps.mFilterTypes & FILTERTYPE_DATE); return min_date && max_date && is_filter; //return (mFilterOps.mMinDate == (time_t)mLastLogoff) && // (mFilterOps.mMaxDate == time_max()) && // (mFilterOps.mFilterTypes & FILTERTYPE_DATE); }
void LLInventoryFilter::setDateRangeLastLogoff(BOOL sl) { if (sl && !isSinceLogoff()) { setDateRange(mLastLogoff, time_max()); setModified(); } if (!sl && isSinceLogoff()) { setDateRange(time_min(), time_max()); setModified(); } if (areDateLimitsSet()) { mFilterOps.mFilterTypes |= FILTERTYPE_DATE; } else { mFilterOps.mFilterTypes &= ~FILTERTYPE_DATE; } }
BOOL LLInventoryFilter::isActive() const { return mFilterOps.mFilterObjectTypes != 0xffffffffffffffffULL || mFilterOps.mFilterCategoryTypes != 0xffffffffffffffffULL || mFilterOps.mFilterWearableTypes != 0xffffffffffffffffULL || mFilterOps.mFilterTypes != FILTERTYPE_OBJECT || mFilterOps.mFilterLinks != FILTERLINK_INCLUDE_LINKS || mFilterSubString.size() || mFilterOps.mPermissions != PERM_NONE || mFilterOps.mMinDate != time_min() || mFilterOps.mMaxDate != time_max() || mFilterOps.mHoursAgo != 0; }
LLInventoryFilter::FilterOps::FilterOps() : mFilterObjectTypes(0xffffffffffffffffULL), mFilterCategoryTypes(0xffffffffffffffffULL), mFilterWearableTypes(0xffffffffffffffffULL), mMinDate(time_min()), mMaxDate(time_max()), mHoursAgo(0), mShowFolderState(SHOW_NON_EMPTY_FOLDERS), mPermissions(PERM_NONE), mFilterTypes(FILTERTYPE_OBJECT), mFilterUUID(LLUUID::null), mFilterLinks(FILTERLINK_INCLUDE_LINKS) { }
void LLInventoryFilter::setHoursAgo(U32 hours) { if (mFilterOps.mHoursAgo != hours) { bool are_date_limits_valid = mFilterOps.mMinDate == time_min() && mFilterOps.mMaxDate == time_max(); bool is_increasing = hours > mFilterOps.mHoursAgo; bool is_decreasing = hours < mFilterOps.mHoursAgo; bool is_increasing_from_zero = is_increasing && !mFilterOps.mHoursAgo && !isSinceLogoff(); // *NOTE: need to cache last filter time, in case filter goes stale BOOL less_restrictive; BOOL more_restrictive; if (FILTERDATEDIRECTION_NEWER == mFilterOps.mDateSearchDirection) { less_restrictive = ((are_date_limits_valid && ((is_increasing && mFilterOps.mHoursAgo))) || !hours); more_restrictive = ((are_date_limits_valid && (!is_increasing && hours)) || is_increasing_from_zero); } else { less_restrictive = ((are_date_limits_valid && ((is_decreasing && mFilterOps.mHoursAgo))) || !hours); more_restrictive = ((are_date_limits_valid && (!is_decreasing && hours)) || is_increasing_from_zero); } mFilterOps.mHoursAgo = hours; mFilterOps.mMinDate = time_min(); mFilterOps.mMaxDate = time_max(); if (less_restrictive) { setModified(FILTER_LESS_RESTRICTIVE); } else if (more_restrictive) { setModified(FILTER_MORE_RESTRICTIVE); } else { setModified(FILTER_RESTART); } } if (areDateLimitsSet()) { mFilterOps.mFilterTypes |= FILTERTYPE_DATE; } else { mFilterOps.mFilterTypes &= ~FILTERTYPE_DATE; } }
void LLInventoryFilter::setDateRangeLastLogoff(BOOL sl) { static LLCachedControl<U32> s_last_logoff(gSavedPerAccountSettings, "LastLogoff", 0); if (sl && !isSinceLogoff()) { setDateRange(s_last_logoff(), time_max()); setModified(); } if (!sl && isSinceLogoff()) { setDateRange(time_min(), time_max()); setModified(); } if (areDateLimitsSet()) { mFilterOps.mFilterTypes |= FILTERTYPE_DATE; } else { mFilterOps.mFilterTypes &= ~FILTERTYPE_DATE; } }
BOOL LLInventoryFilter::isSinceLogoff() const { return (mFilterOps.mMinDate == (time_t)mLastLogoff) && (mFilterOps.mMaxDate == time_max()) && (mFilterOps.mFilterTypes & FILTERTYPE_DATE); }
bool LLInventoryFilter::areDateLimitsSet() { return mFilterOps.mMinDate != time_min() || mFilterOps.mMaxDate != time_max() || mFilterOps.mHoursAgo != 0; }
int main(int argc, char **argv) { FILE *in; int first = 1, c = 0, NUM = 3; uintmax_t msec; unsigned int K, I; size_t r; char line[1024]; clock_t *time[3], t; char *name[] = {"taylor_log", "hyperbolic_log", "builtin_log"}; double *X_d; //Assumes that a single argument is given and that it is a file of // test values. sscanf(argv[2], "%u", &I); in = fopen(argv[1], "r"); if (in == NULL) { printf("File %s not found for reading\n", argv[1]); exit(1); } while(fgets(line, sizeof(line), in)) { if(first) { if(sscanf(line, "%u", &K) != 1) { printf("File %s incorrectly formatted\n", argv[1]); exit(2); } X_d = malloc(K * sizeof(*X_d)); for(int i = 0; i < NUM; ++i) time[i] = malloc(K * sizeof(**time)); first = 0; } else { if(sscanf(line, "%lf", &X_d[c]) != 1) printf("Line %d is incorrectly formatted\n", c+2); else ++c; } K = c; } fclose(in); int j; for(int i = 0; i < K; i++) { t = clock(); for(j=0; j < I; j++) taylor_nat_log(X_d[i], 34); time[0][i] = clock() - t; t = clock(); for(j=0; j < I; j++) hyperbolic_nat_log(X_d[i], 8); time[1][i] = clock() - t; t = clock(); for(j=0; j < I; j++) log(X_d[i]); time[2][i] = clock() - t; } for(int i = 0; i < NUM; i++) { msec = (uintmax_t)time_average(time[i], K) * 1000 / CLOCKS_PER_SEC; printf("Average time for %s: %lu.%03lus\n", name[i], msec/1000, msec % 1000); msec = (uintmax_t)time_total(time[i], K) * 1000 / CLOCKS_PER_SEC; printf("Total time for %s: %lu.%03lus\n", name[i], msec/1000, msec % 1000); msec = (uintmax_t)time_min(time[i], K) * 1000 / CLOCKS_PER_SEC; printf("Minimum time for %s: %lu.%03lus\n", name[i], msec/1000, msec % 1000); msec = (uintmax_t)time_max(time[i], K) * 1000 / CLOCKS_PER_SEC; printf("Maximum time for %s: %lu.%03lus\n", name[i], msec/1000, msec % 1000); printf("\n"); } }
SSL_SESSION * d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) { CBS cbs, session, cipher_suite, session_id, master_key, peer_cert; CBS hostname, ticket; uint64_t version, tls_version, stime, timeout, verify_result, lifetime; const unsigned char *peer_cert_bytes; uint16_t cipher_value; SSL_SESSION *s = NULL; size_t data_len; int present; if (a != NULL) s = *a; if (s == NULL) { if ((s = SSL_SESSION_new()) == NULL) { SSLerrorx(ERR_R_MALLOC_FAILURE); return (NULL); } } CBS_init(&cbs, *pp, length); if (!CBS_get_asn1(&cbs, &session, CBS_ASN1_SEQUENCE)) goto err; /* Session ASN1 version. */ if (!CBS_get_asn1_uint64(&session, &version)) goto err; if (version != SSL_SESSION_ASN1_VERSION) goto err; /* TLS/SSL Protocol Version. */ if (!CBS_get_asn1_uint64(&session, &tls_version)) goto err; if (tls_version > INT_MAX) goto err; s->ssl_version = (int)tls_version; /* Cipher suite. */ if (!CBS_get_asn1(&session, &cipher_suite, CBS_ASN1_OCTETSTRING)) goto err; if (!CBS_get_u16(&cipher_suite, &cipher_value)) goto err; if (CBS_len(&cipher_suite) != 0) goto err; /* XXX - populate cipher instead? */ s->cipher = NULL; s->cipher_id = SSL3_CK_ID | cipher_value; /* Session ID. */ if (!CBS_get_asn1(&session, &session_id, CBS_ASN1_OCTETSTRING)) goto err; if (!CBS_write_bytes(&session_id, s->session_id, sizeof(s->session_id), &data_len)) goto err; if (data_len > UINT_MAX) goto err; s->session_id_length = (unsigned int)data_len; /* Master key. */ if (!CBS_get_asn1(&session, &master_key, CBS_ASN1_OCTETSTRING)) goto err; if (!CBS_write_bytes(&master_key, s->master_key, sizeof(s->master_key), &data_len)) goto err; if (data_len > INT_MAX) goto err; s->master_key_length = (int)data_len; /* Time [1]. */ s->time = time(NULL); if (!CBS_get_optional_asn1_uint64(&session, &stime, SSLASN1_TIME_TAG, 0)) goto err; if (stime > time_max()) goto err; if (stime != 0) s->time = (time_t)stime; /* Timeout [2]. */ s->timeout = 3; if (!CBS_get_optional_asn1_uint64(&session, &timeout, SSLASN1_TIMEOUT_TAG, 0)) goto err; if (timeout > LONG_MAX) goto err; if (timeout != 0) s->timeout = (long)timeout; /* Peer certificate [3]. */ X509_free(s->peer); s->peer = NULL; if (!CBS_get_optional_asn1(&session, &peer_cert, &present, SSLASN1_PEER_CERT_TAG)) goto err; if (present) { data_len = CBS_len(&peer_cert); if (data_len > LONG_MAX) goto err; peer_cert_bytes = CBS_data(&peer_cert); if (d2i_X509(&s->peer, &peer_cert_bytes, (long)data_len) == NULL) goto err; } /* Session ID context [4]. */ s->sid_ctx_length = 0; if (!CBS_get_optional_asn1_octet_string(&session, &session_id, &present, SSLASN1_SESSION_ID_CTX_TAG)) goto err; if (present) { if (!CBS_write_bytes(&session_id, (uint8_t *)&s->sid_ctx, sizeof(s->sid_ctx), &data_len)) goto err; if (data_len > UINT_MAX) goto err; s->sid_ctx_length = (unsigned int)data_len; } /* Verify result [5]. */ s->verify_result = X509_V_OK; if (!CBS_get_optional_asn1_uint64(&session, &verify_result, SSLASN1_VERIFY_RESULT_TAG, X509_V_OK)) goto err; if (verify_result > LONG_MAX) goto err; s->verify_result = (long)verify_result; /* Hostname [6]. */ free(s->tlsext_hostname); s->tlsext_hostname = NULL; if (!CBS_get_optional_asn1_octet_string(&session, &hostname, &present, SSLASN1_HOSTNAME_TAG)) goto err; if (present) { if (CBS_contains_zero_byte(&hostname)) goto err; if (!CBS_strdup(&hostname, &s->tlsext_hostname)) goto err; } /* PSK identity hint [7]. */ /* PSK identity [8]. */ /* Ticket lifetime [9]. */ s->tlsext_tick_lifetime_hint = 0; /* XXX - tlsext_ticklen is not yet set... */ if (s->tlsext_ticklen > 0 && s->session_id_length > 0) s->tlsext_tick_lifetime_hint = -1; if (!CBS_get_optional_asn1_uint64(&session, &lifetime, SSLASN1_LIFETIME_TAG, 0)) goto err; if (lifetime > LONG_MAX) goto err; if (lifetime > 0) s->tlsext_tick_lifetime_hint = (long)lifetime; /* Ticket [10]. */ free(s->tlsext_tick); s->tlsext_tick = NULL; if (!CBS_get_optional_asn1_octet_string(&session, &ticket, &present, SSLASN1_TICKET_TAG)) goto err; if (present) { if (!CBS_stow(&ticket, &s->tlsext_tick, &s->tlsext_ticklen)) goto err; } /* Compression method [11]. */ /* SRP username [12]. */ *pp = CBS_data(&cbs); if (a != NULL) *a = s; return (s); err: ERR_asprintf_error_data("offset=%d", (int)(CBS_data(&cbs) - *pp)); if (s != NULL && (a == NULL || *a != s)) SSL_SESSION_free(s); return (NULL); }