+int LyX::execWithoutGui(int & argc, char * argv[])
+{
+ int exit_status = init(argc, argv);
+ if (exit_status) {
+ prepareExit();
+ return exit_status;
+ }
+
+ // this is correct, since return values are inverted.
+ exit_status = !loadFiles();
+
+ if (pimpl_->batch_commands.empty() || pimpl_->buffer_list_.empty()) {
+ prepareExit();
+ return exit_status;
+ }
+
+ BufferList::iterator begin = pimpl_->buffer_list_.begin();
+
+ bool final_success = false;
+ for (BufferList::iterator I = begin; I != pimpl_->buffer_list_.end(); ++I) {
+ Buffer * buf = *I;
+ if (buf != buf->masterBuffer())
+ continue;
+ vector<string>::const_iterator bcit = pimpl_->batch_commands.begin();
+ vector<string>::const_iterator bcend = pimpl_->batch_commands.end();
+ DispatchResult dr;
+ for (; bcit != bcend; ++bcit) {
+ LYXERR(Debug::ACTION, "Buffer::dispatch: cmd: " << *bcit);
+ buf->dispatch(*bcit, dr);
+ final_success |= !dr.error();
+ }
+ }
+ prepareExit();
+ return !final_success;
+}
+
+