From 3ae86e799ae1b7426abc18a8585336c303732ac0 Mon Sep 17 00:00:00 2001 From: Philippe Houdoin Date: Thu, 4 Dec 2003 13:57:46 +0000 Subject: [PATCH] Fix printer spool path attribut name in the message we handle to transport add-on(s). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5562 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/print/shared/Jamfile | 3 +- .../print/shared/PrintTransportAddOn.cpp | 34 ++++++++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/add-ons/print/shared/Jamfile b/src/add-ons/print/shared/Jamfile index 5ee8a5ff6e..0aa52b2999 100644 --- a/src/add-ons/print/shared/Jamfile +++ b/src/add-ons/print/shared/Jamfile @@ -21,4 +21,5 @@ StaticLibrary # printerdriveraddon # : # PrinterDriverAddOn.cpp -# ; \ No newline at end of file +# ; + diff --git a/src/add-ons/print/shared/PrintTransportAddOn.cpp b/src/add-ons/print/shared/PrintTransportAddOn.cpp index 3bb4a3c9cf..f1156b553a 100644 --- a/src/add-ons/print/shared/PrintTransportAddOn.cpp +++ b/src/add-ons/print/shared/PrintTransportAddOn.cpp @@ -1,24 +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) { - const char* printer_name = msg->FindString("printer_name"); - if (printer_name && *printer_name != '\0') { - BDirectory printer(printer_name); - if (printer.InitCheck() == B_OK) { - gTransport = instanciate_transport(&printer, msg); - return gTransport; - } - } - } +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 = instanciate_transport(&printer, msg); + return gTransport; + }; + }; + return NULL; } -extern "C" _EXPORT void exit_transport() { +extern "C" _EXPORT void exit_transport() +{ if (gTransport) { - delete gTransport; gTransport = NULL; + delete gTransport; + gTransport = NULL; } }