■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
read.cgi再開発スレ
- 441 : ◆cZfSunOs.U :04/12/07 07:27:44 ID:4/kWaSl/
- static void update_ad_pool(global_vars_t *gv, request_rec *r, ad_pool_t *ad_pool)
{
char *adfile;
apr_file_t *f;
apr_finfo_t finfo;
if (gv->t_now - ad_pool->lastchecked < AD_CHECK_INTERVAL * APR_USEC_PER_SEC)
return;
apr_thread_rwlock_wrlock(ad_pool->rwlock);
ad_pool->lastchecked = gv->t_now;
adfile = apr_pstrcat(r->pool, gv->cwd, "../", gv->zz_bs, "/", AD_FILENAME, NULL);
if (apr_stat(&finfo, adfile, APR_FINFO_MIN, r->pool)) {
ad_pool->mtime = 0;
apr_pool_clear(ad_pool->pool);
}
else if (finfo.mtime > ad_pool->mtime
&& gv->t_now - finfo.mtime >= APR_USEC_PER_SEC) {
apr_pool_clear(ad_pool->pool);
ad_pool->mtime = apr_file_open(&f, adfile, APR_READ, APR_OS_DEFAULT, r->pool)
|| apr_file_info_get(&finfo, APR_FINFO_MIN, f)
|| apr_mmap_create(&ad_pool->m, f, 0, finfo.size, APR_MMAP_READ, ad_pool->pool)
? 0 : finfo.mtime;
}
apr_thread_rwlock_unlock(ad_pool->rwlock);
}
:
int dso_main(request_rec *r, int argc, char **argv)
{
:
char *ad_key;
ad_pool_t *ad_pool;
:
ad_key = apr_pstrcat(r->pool, "read.ad.", gv->zz_bs, NULL);
ad_pool = get_ad_pool(r, ad_key);
if (ad_pool) {
update_ad_pool(gv, r, ad_pool);
apr_thread_rwlock_rdlock(ad_pool->rwlock);
if (ad_pool->mtime)
ap_rwrite(ad_pool->m->mm, ad_pool->m->size, r);
apr_thread_rwlock_unlock(ad_pool->rwlock);
}
:
}
----------------------------------------------------------------------
235KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30