#include <stdio.h>
#include <stdlib.h>
#include <Application.h>
#include <AppMisc.h>
#include <LooperList.h>
#include <MessagePrivate.h>
#include <RosterPrivate.h>
#include <TokenSpace.h>
extern void __initialize_locale_kit();
#define DBG(x)
#define OUT printf
static void
initialize_forked_child()
{
DBG(OUT("initialize_forked_child()\n"));
BMessage::Private::StaticReInitForkedChild();
BPrivate::gLooperList.InitAfterFork();
BPrivate::init_team_after_fork();
if (be_app != NULL)
be_app = (BApplication*)-1;
DBG(OUT("initialize_forked_child() done\n"));
}
extern "C" void
initialize_before(image_id)
{
DBG(OUT("initialize_before()\n"));
BMessage::Private::StaticInit();
BRoster::Private::InitBeRoster();
atfork(initialize_forked_child);
DBG(OUT("initialize_before() done\n"));
}
extern "C" void
initialize_after(image_id)
{
DBG(OUT("initialize_after()\n"));
__initialize_locale_kit();
DBG(OUT("initialize_after() done\n"));
}
extern "C" void
terminate_after(image_id)
{
DBG(OUT("terminate_after()\n"));
if (be_app == (BApplication*)-1)
debugger("exit() called after fork from a BApplication");
BRoster::Private::DeleteBeRoster();
BMessage::Private::StaticCleanup();
BMessage::Private::StaticCacheCleanup();
DBG(OUT("terminate_after() done\n"));
}