PRInt64 rowDate;
matchAgeInDaysCallback(nsIMdbRow *row, void *aClosure){  matchSearchTerm_t *matchSearchTerm = (matchSearchTerm_t*)aClosure;  const searchTerm *term = matchSearchTerm->term;  nsIMdbEnv *env = matchSearchTerm->env;  nsIMdbStore *store = matchSearchTerm->store;    // fill in the rest of the closure if it's not filled in yet  // this saves us from recalculating this stuff on every row  if (!matchSearchTerm->haveClosure) {    PRInt32 err;    // Need to create an nsAutoString to use ToInteger    matchSearchTerm->intValue =  nsAutoString(term->text).ToInteger(&err);    if (err != 0) return PR_FALSE;    matchSearchTerm->haveClosure = PR_TRUE;  }    // XXX convert the property to a column, get the column value  PRInt64 rowDate;  mdb_column column;  mdb_err err = store->StringToToken(env, "LastVisitDate", &column);  if (err != 0) return PR_FALSE;  mdbYarn yarn;  err = row->AliasCellYarn(env, column, &yarn);  if (err != 0) return PR_FALSE;    CharsToPRInt64((const char*)yarn.mYarn_Buf, yarn.mYarn_Fill, &rowDate);  PRInt32 days = matchSearchTerm->globalHist->GetAgeInDays(rowDate);    if (term->method.Equals("is"))    return (days == matchSearchTerm->intValue);  else if (term->method.Equals("isgreater"))    return (days >  matchSearchTerm->intValue);  else if (term->method.Equals("isless"))    return (days <  matchSearchTerm->intValue);    return PR_FALSE;}