From 85e4dd94e656dd5e624f22c862b65e648018c8f2 Mon Sep 17 00:00:00 2001 From: Michael Pfeiffer Date: Tue, 18 Aug 2009 07:24:34 +0000 Subject: [PATCH] Using libprintutils.a init|exit_tranport symbols were not part of the add-on. For now copied PrintTransportAddOn.cpp from kits/print into each tranport add-on folder and use that instead. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32489 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../print/transports/parallel_port/Jamfile | 4 +-- .../parallel_port/PrintTransportAddOn.cpp | 32 +++++++++++++++++++ .../print/transports/serial_port/Jamfile | 4 +-- .../serial_port/PrintTransportAddOn.cpp | 32 +++++++++++++++++++ src/add-ons/print/transports/usb_port/Jamfile | 4 +-- .../usb_port/PrintTransportAddOn.cpp | 32 +++++++++++++++++++ 6 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 src/add-ons/print/transports/parallel_port/PrintTransportAddOn.cpp create mode 100644 src/add-ons/print/transports/serial_port/PrintTransportAddOn.cpp create mode 100644 src/add-ons/print/transports/usb_port/PrintTransportAddOn.cpp 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; + } +} +