/* === S Y N F I G ========================================================= */
-/*! \file main.cpp
+/*! \file synfig/main.cpp
** \brief \writeme
**
-** $Id: main.cpp,v 1.3 2005/01/10 07:40:26 darco Exp $
+** $Id$
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
#include "mutex.h"
-#ifdef DEATH_TIME
-#include <time.h>
-#endif
-
#ifdef HAVE_SIGNAL_H
#include <signal.h>
#endif
{
bool ret=true;
- CHECK_EXPIRE_TIME();
-
if(version!=SYNFIG_LIBRARY_VERSION)
{
synfig::error(_("API Version mismatch (LIB:%d, PROG:%d)"),SYNFIG_LIBRARY_VERSION,version);
synfig::error(_("Size of Layer mismatch (app:%d, lib:%d)"),layer_size,sizeof(Layer));
ret=false;
}
-
+
return ret;
}
-static void broken_pipe_signal (int sig) {
+static void broken_pipe_signal (int /*sig*/) {
synfig::warning("Broken Pipe...");
}
String modulename;
getline(file,modulename);
if(!modulename.empty() && find(modules_to_load.begin(),modules_to_load.end(),modulename)==modules_to_load.end())
- modules_to_load.push_back(modulename);
+ modules_to_load.push_back(modulename);
}
}
-
-
+
+
return true;
}
synfig_ref_count_.reset();
ref_count_=synfig_ref_count_;
-
- // Add initialization after this point
+ // Add initialization after this point
- CHECK_EXPIRE_TIME();
+#ifdef ENABLE_NLS
+ bindtextdomain("synfig", LOCALEDIR);
+#endif
String prefix=basepath+"/..";
- int i;
+ unsigned int i;
#ifdef _DEBUG
std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
#endif
-
+
#if defined(HAVE_SIGNAL_H) && defined(SIGPIPE)
signal(SIGPIPE, broken_pipe_signal);
#endif
-
+
//_config_search_path=new vector"string.h"();
-
+
// Init the subsystems
if(cb)cb->amount_complete(0, 100);
if(cb)cb->task(_("Starting Subsystem \"Modules\""));
Module::subsys_stop();
throw std::runtime_error(_("Unable to initialize subsystem \"Targets\""));
}
-
+
if(cb)cb->task(_("Starting Subsystem \"Importers\""));
if(!Importer::subsys_init())
{
Module::subsys_stop();
throw std::runtime_error(_("Unable to initialize subsystem \"ValueNodes\""));
}
-
+
// Load up the list importer
Importer::book()[String("lst")]=ListImporter::create;
-
-
- // Load up the modules
+
+
+ // Load up the modules
std::list<String> modules_to_load;
std::vector<String> locations;
-
+
if(!getenv("SYNFIG_MODULE_LIST"))
{
locations.push_back("standard");
{
locations.push_back(getenv("SYNFIG_MODULE_LIST"));
}
-/*
+/*
const char *locations[]=
{
"standard", //0
#endif
};
*/
-
+
for(i=0;i<locations.size();i++)
if(retrieve_modules_to_load(locations[i],modules_to_load))
if(cb)cb->task(strprintf(_("Loading modules from %s"),locations[i].c_str()));
-
+
std::list<String>::iterator iter;
-
+
for(i=0,iter=modules_to_load.begin();iter!=modules_to_load.end();++iter,i++)
{
Module::Register(*iter,cb);
if(cb)cb->amount_complete((i+1)*100,modules_to_load.size()*100);
}
-
+
// load_modules(cb);
-
- CHECK_EXPIRE_TIME();
-
+
if(cb)cb->amount_complete(100, 100);
if(cb)cb->task(_("DONE"));
}
synfig::warning("%s: count()=%d",iter->first.c_str(), iter->second.count());
}
}
-
+
+ synfig::info("ValueNode::subsys_stop()");
ValueNode::subsys_stop();
+ synfig::info("Importer::subsys_stop()");
Importer::subsys_stop();
+ synfig::info("Target::subsys_stop()");
Target::subsys_stop();
+ synfig::info("Layer::subsys_stop()");
Layer::subsys_stop();
-
- /*! \fixme For some reason, uncommenting the next
- ** line will cause things to crash. This needs to be
- ** looked into at some point. */
- //Module::subsys_stop();
-
+ /*! \todo For some reason, uncommenting the next line will cause things to crash.
+ This needs to be looked into at some point. */
+ // synfig::info("Module::subsys_stop()");
+ // Module::subsys_stop();
+ synfig::info("Exiting");
+
#if defined(HAVE_SIGNAL_H) && defined(SIGPIPE)
signal(SIGPIPE, SIG_DFL);
#endif
}
-
-
-
-
-
-
-
+static const String
+current_time()
+{
+ const int buflen = 50;
+ time_t t;
+ struct tm *lt;
+ char b[buflen];
+ time(&t);
+ lt = localtime(&t);
+ strftime(b, buflen, " [%X] ", lt);
+ return String(b);
+}
void
synfig::error(const char *format,...)
synfig::error(const String &str)
{
static Mutex mutex; Mutex::Lock lock(mutex);
- cerr<<"synfig("<<getpid()<<"): "<<_("error")<<": "+str<<endl;
+ cerr<<"synfig("<<getpid()<<")"<<current_time()<<_("error")<<": "+str<<endl;
}
void
synfig::warning(const String &str)
{
static Mutex mutex; Mutex::Lock lock(mutex);
- cerr<<"synfig("<<getpid()<<"): "<<_("warning")<<": "+str<<endl;
+ cerr<<"synfig("<<getpid()<<")"<<current_time()<<_("warning")<<": "+str<<endl;
}
void
synfig::info(const String &str)
{
static Mutex mutex; Mutex::Lock lock(mutex);
- cerr<<"synfig("<<getpid()<<"): "<<_("info")<<": "+str<<endl;
+ cerr<<"synfig("<<getpid()<<")"<<current_time()<<_("info")<<": "+str<<endl;
}