⛏️ index : haiku.git

#include "PrintTransportAddOn.h"

// We don't support multiple instances of the same transport add-on
static BDataIO* gTransport = NULL;

extern "C" _EXPORT BDataIO *init_transport(BMessage *msg)
{
	if (msg == NULL || gTransport != NULL)
		return NULL;
		
	const char *spool_path = msg->FindString("printer_file");

	if (spool_path && *spool_path != '\0') {
		BDirectory printer(spool_path);

		if (printer.InitCheck() == B_OK) {
			gTransport = instantiate_transport(&printer, msg);
			return gTransport;
		};
	};
	
	return NULL;
}

extern "C" _EXPORT void exit_transport()
{
	if (gTransport) {
		delete gTransport;
		gTransport = NULL;	
	}
}