diff --git a/src/add-ons/print/transports/parallel_port/Jamfile b/src/add-ons/print/transports/parallel_port/Jamfile index d994a75e11..9fa208a197 100644 --- a/src/add-ons/print/transports/parallel_port/Jamfile +++ b/src/add-ons/print/transports/parallel_port/Jamfile @@ -3,11 +3,11 @@ SubDir HAIKU_TOP src add-ons print transports parallel_port ; SetSubDirSupportedPlatformsBeOSCompatible ; UsePrivateHeaders print ; -SubDirHdrs [ FDirName $(HAIKU_TOP) src add-ons print transports shared ] ; Addon Parallel\ Port : ParallelTransport.cpp - : be libprintutils.a $(TARGET_LIBSUPC++) + PrintTransportAddOn.cpp + : be $(TARGET_LIBSUPC++) ; Package haiku-printingkit-cvs : diff --git a/src/add-ons/print/transports/parallel_port/PrintTransportAddOn.cpp b/src/add-ons/print/transports/parallel_port/PrintTransportAddOn.cpp new file mode 100644 index 0000000000..9ab4efbaf1 --- /dev/null +++ b/src/add-ons/print/transports/parallel_port/PrintTransportAddOn.cpp @@ -0,0 +1,32 @@ +#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; + } +} + diff --git a/src/add-ons/print/transports/serial_port/Jamfile b/src/add-ons/print/transports/serial_port/Jamfile index 4d6bba87d1..168e9caef6 100644 --- a/src/add-ons/print/transports/serial_port/Jamfile +++ b/src/add-ons/print/transports/serial_port/Jamfile @@ -3,11 +3,11 @@ SubDir HAIKU_TOP src add-ons print transports serial_port ; SetSubDirSupportedPlatformsBeOSCompatible ; UsePrivateHeaders print ; -SubDirHdrs [ FDirName $(HAIKU_TOP) src add-ons print transports shared ] ; Addon Serial\ Port : SerialTransport.cpp - : be libprintutils.a $(TARGET_LIBSUPC++) + PrintTransportAddOn.cpp + : be $(TARGET_LIBSUPC++) ; Package haiku-printingkit-cvs : diff --git a/src/add-ons/print/transports/serial_port/PrintTransportAddOn.cpp b/src/add-ons/print/transports/serial_port/PrintTransportAddOn.cpp new file mode 100644 index 0000000000..9ab4efbaf1 --- /dev/null +++ b/src/add-ons/print/transports/serial_port/PrintTransportAddOn.cpp @@ -0,0 +1,32 @@ +#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; + } +} + diff --git a/src/add-ons/print/transports/usb_port/Jamfile b/src/add-ons/print/transports/usb_port/Jamfile index be32de1143..c548cabe26 100644 --- a/src/add-ons/print/transports/usb_port/Jamfile +++ b/src/add-ons/print/transports/usb_port/Jamfile @@ -3,11 +3,11 @@ SubDir HAIKU_TOP src add-ons print transports usb_port ; SetSubDirSupportedPlatformsBeOSCompatible ; UsePrivateHeaders print ; -SubDirHdrs [ FDirName $(HAIKU_TOP) src add-ons print transports shared ] ; Addon USB\ Port : USBTransport.cpp - : be libprintutils.a $(TARGET_LIBSUPC++) + PrintTransportAddOn.cpp + : be $(TARGET_LIBSUPC++) ; Package haiku-printingkit-cvs : diff --git a/src/add-ons/print/transports/usb_port/PrintTransportAddOn.cpp b/src/add-ons/print/transports/usb_port/PrintTransportAddOn.cpp new file mode 100644 index 0000000000..9ab4efbaf1 --- /dev/null +++ b/src/add-ons/print/transports/usb_port/PrintTransportAddOn.cpp @@ -0,0 +1,32 @@ +#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; + } +} +