From: Tim W. <tw...@re...> - 2002-01-22 15:37:18
|
..and here is the patch. BinaryData.hpp | 2 ++ DeviceConnection.hpp | 2 ++ DeviceGamma.hpp | 2 ++ Foomatic/omni2foo.cpp | 2 +- Foomatic/omni2foo.hpp | 2 ++ GhostscriptInterface.cpp | 39 ++++++++++++++++++++------------------- Makefile | 9 +++++---- OmniProxy.cpp | 1 + PrintDevice.cpp | 25 +++++++++++++++++++++++-- PrintDevice.hpp | 1 + PrinterCommand.cpp | 3 +++ XMLParser/DeviceInfo.hpp | 2 ++ hppcl3/CMYKbitmap.cpp | 2 ++ hppcl3/bitmap.cpp | 5 ++++- 14 files changed, 70 insertions(+), 27 deletions(-) The two larger changes are: - GhostscriptInterface.cpp: Due to the ISO resolution of defect report 50, you can no longer do things like 'cerr = fcerr;'. This work-around is probably a bit of a sledge-hammer and there is sure to be an easier way around it. - PrintDevice.cpp: a) there is no filebuf(int fd) constructor any more, but you can now construct a filebuf from a FILE* and ios modes (this is still non-standard). So, do that. NOTE: unfortunately, this won't work on older versions of libstdc++. Long-term fix would be not to start from a file descriptor.. b) char* vs unsigned char*: I just put a cast in for now. Still unresolved: Lots of the DeviceTester files have similar sorts of problems as GhostscriptInterface.cpp did: assignments to cerr and the like. --- Omni/XMLParser/DeviceInfo.hpp.gcc31 Fri Nov 16 21:23:46 2001 +++ Omni/XMLParser/DeviceInfo.hpp Tue Jan 22 14:16:30 2002 @@ -23,6 +23,8 @@ #include <map> #include <list> +using namespace std; + typedef list <string> OrientationList; typedef list <string> ResolutionList; typedef list <string> PrintModeList; --- Omni/hppcl3/bitmap.cpp.gcc31 Thu Mar 1 22:55:00 2001 +++ Omni/hppcl3/bitmap.cpp Tue Jan 22 14:16:30 2002 @@ -22,6 +22,9 @@ #include <unistd.h> #include <memory.h> #include <iostream.h> +#include <algorithm> + +using std::min; const static bool fDebugOutput = false; @@ -395,7 +398,7 @@ while (iPos < iSize) { - rc = write (fileno, abData, min ((iSize - iPos), (int)sizeof (abData))); + rc = write (fileno, abData, min ((iSize - iPos), (long int)sizeof (abData))); if (-1 == rc) return rc; --- Omni/hppcl3/CMYKbitmap.cpp.gcc31 Thu Mar 1 22:55:00 2001 +++ Omni/hppcl3/CMYKbitmap.cpp Tue Jan 22 14:16:30 2002 @@ -23,6 +23,8 @@ #include <memory.h> #include <iostream.h> +using std::dec; + const static bool fDebugOutput = false; extern int chsize (int fileno, long int iSize); --- Omni/Foomatic/omni2foo.hpp.gcc31 Thu Sep 20 18:53:36 2001 +++ Omni/Foomatic/omni2foo.hpp Tue Jan 22 14:16:30 2002 @@ -41,6 +41,8 @@ #include <algorithm> // used for the to lower transform #include <cctype> +using namespace std; + typedef map<string,string> printerMap; class omni2foo { --- Omni/Foomatic/omni2foo.cpp.gcc31 Fri Nov 16 21:23:40 2001 +++ Omni/Foomatic/omni2foo.cpp Tue Jan 22 14:16:30 2002 @@ -66,7 +66,7 @@ // lowercase all characters transform (printerName.begin(), printerName.end(), // source printerName.begin(), // destination - tolower); // operation + ::tolower); // operation return _mPrinterMap[printerName]; } --- Omni/BinaryData.hpp.gcc31 Thu Mar 1 22:54:45 2001 +++ Omni/BinaryData.hpp Tue Jan 22 14:16:30 2002 @@ -23,6 +23,8 @@ #include "defines.hpp" +using namespace std; + class BinaryData { public: --- Omni/DeviceConnection.hpp.gcc31 Thu Mar 1 22:54:45 2001 +++ Omni/DeviceConnection.hpp Tue Jan 22 14:16:30 2002 @@ -23,6 +23,8 @@ #include <strstream> #include <string> +using namespace std; + class DeviceConnection { public: --- Omni/DeviceGamma.hpp.gcc31 Thu Mar 1 22:54:45 2001 +++ Omni/DeviceGamma.hpp Tue Jan 22 14:16:30 2002 @@ -23,6 +23,8 @@ #include <strstream> #include <string> +using namespace std; + class DeviceGamma { public: DeviceGamma (int iCGamma, --- Omni/OmniProxy.cpp.gcc31 Fri Nov 16 21:23:44 2001 +++ Omni/OmniProxy.cpp Tue Jan 22 14:16:30 2002 @@ -23,6 +23,7 @@ #include <unistd.h> #include <sys/mman.h> #include <errno.h> +#include <stdarg.h> #include "hppcl3/bitmap.hpp" --- Omni/PrinterCommand.cpp.gcc31 Thu Sep 20 19:08:58 2001 +++ Omni/PrinterCommand.cpp Tue Jan 22 14:16:30 2002 @@ -20,10 +20,13 @@ #include <string.h> #include <fstream.h> #include <unistd.h> +#include <iostream.h> #include "PrinterCommand.hpp" #include "DebugOutput.hpp" +using namespace std; + PrinterCommand:: PrinterCommand (char *pszProgram) { --- Omni/PrintDevice.cpp.gcc31 Fri Nov 16 21:23:43 2001 +++ Omni/PrintDevice.cpp Tue Jan 22 14:16:30 2002 @@ -21,6 +21,8 @@ #include <stdarg.h> #include <string.h> #include <stdio.h> +#include <unistd.h> +#include <fstream> #include "hppcl3/bitmap.hpp" @@ -59,6 +61,7 @@ outputStream_d = &cout; fShouldDeleteOutputStream_d = false; outputStreamBuf_d = 0; + outputStreamFILE_d = 0; pszDriverName_d = pszDriverName; pszDeviceName_d = pszDeviceName; pszShortName_d = pszShortName; @@ -121,6 +124,12 @@ delete outputStreamBuf_d; } + if (outputStreamFILE_d) + { + fclose (outputStreamFILE_d); + outputStreamFILE_d = 0; + } + if (pszLoadedLibrary_d) { free (pszLoadedLibrary_d); @@ -1073,13 +1082,25 @@ setOutputStream (ostream *osNew) { outputStream_d = osNew; + if (outputStreamFILE_d) + { + fclose (outputStreamFILE_d); + outputStreamFILE_d = NULL; + } } void PrintDevice:: setOutputStream (int iFileNo) { - streambuf *sb = new filebuf (iFileNo); + int fd = ::dup (iFileNo); + FILE *f = fdopen (fd, "w"); + streambuf *sb = new filebuf (f, ios::out); outputStream_d = new ostream (sb); + if (outputStreamFILE_d) + { + fclose (outputStreamFILE_d); + } + outputStreamFILE_d = f; fShouldDeleteOutputStream_d = true; } @@ -1133,7 +1154,7 @@ } else { - outputStream_d->write (pbData, iLength); + outputStream_d->write ((const char*) pbData, iLength); outputStream_d->flush (); } --- Omni/GhostscriptInterface.cpp.gcc31 Fri Nov 16 21:23:45 2001 +++ Omni/GhostscriptInterface.cpp Tue Jan 22 14:47:02 2002 @@ -306,12 +306,13 @@ bIJSDevice = false; // Added for debugging convienence + ostream *pcerr = &cerr; if ( pszCerr && pszCerr[0] ) { ofstream *fcerr = new ofstream (pszCerr); - cerr = *fcerr; + pcerr = fcerr; pOutputObject = (void *)fcerr; } @@ -322,7 +323,7 @@ #ifndef RETAIL if (DebugOutput::shouldOutputOmniInterface ()) - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": Trying to load " << cDeviceName << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": Trying to load " << cDeviceName << endl; #endif static char *apszLibraryPaths[] = { @@ -357,27 +358,27 @@ if (!*pvhDevice) { - cerr << endl << "<<<<<<<<<<<<<<<<<<<<<< ERROR >>>>>>>>>>>>>>>>>>>>>>>" << endl; - cerr << endl << endl; - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": g_module_error returns " << g_module_error () << endl; - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": cDeviceName = " << cDeviceName << endl; - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": pszDeviceName = " << pszDeviceName << endl; - cerr << endl; - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": LD_LIBRARY_PATH = " << getenv ("LD_LIBRARY_PATH") << endl; - cerr << endl; - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": Omni device library not found in the following paths:" << endl; + (*pcerr) << endl << "<<<<<<<<<<<<<<<<<<<<<< ERROR >>>>>>>>>>>>>>>>>>>>>>>" << endl; + (*pcerr) << endl << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": g_module_error returns " << g_module_error () << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": cDeviceName = " << cDeviceName << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": pszDeviceName = " << pszDeviceName << endl; + (*pcerr) << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": LD_LIBRARY_PATH = " << getenv ("LD_LIBRARY_PATH") << endl; + (*pcerr) << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": Omni device library not found in the following paths:" << endl; for (int i = 0; i < (int)dimof (apszLibraryPaths) - 1 && !*pvhDevice; i++) { - cerr << "\t" << apszLibraryPaths[i] << "." << endl; + (*pcerr) << "\t" << apszLibraryPaths[i] << "." << endl; } - cerr << "\t$LD_LIBRARY_PATH" << endl; + (*pcerr) << "\t$LD_LIBRARY_PATH" << endl; return 0; } #ifndef RETAIL if (DebugOutput::shouldOutputOmniInterface ()) - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": *pvhDevice = " << hex << *pvhDevice << dec << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": *pvhDevice = " << hex << *pvhDevice << dec << endl; #endif // nm libHP_Deskjet_1120Cxi.so @@ -388,12 +389,12 @@ #ifndef RETAIL if (DebugOutput::shouldOutputOmniInterface ()) - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": pfnNewDevice = 0x" << hex << (int)pfnNewDevice << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": pfnNewDevice = 0x" << hex << (int)pfnNewDevice << endl; #endif if (!pfnNewDevice) { - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": g_module_error returns " << dec << g_module_error () << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": g_module_error returns " << dec << g_module_error () << endl; return 0; } @@ -404,12 +405,12 @@ #ifndef RETAIL if (DebugOutput::shouldOutputOmniInterface ()) - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": pfnNewDeviceWArgs = 0x" << hex << (int)pfnNewDeviceWArgs << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": pfnNewDeviceWArgs = 0x" << hex << (int)pfnNewDeviceWArgs << endl; #endif if (!pfnNewDeviceWArgs) { - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": g_module_error returns " << dec << g_module_error () << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": g_module_error returns " << dec << g_module_error () << endl; return 0; } @@ -421,7 +422,7 @@ #ifndef RETAIL if (DebugOutput::shouldOutputOmniInterface ()) - cerr << "GhostscriptInterface::" << __FUNCTION__ << ": pDevice = " << *pDevice_d << endl; + (*pcerr) << "GhostscriptInterface::" << __FUNCTION__ << ": pDevice = " << *pDevice_d << endl; #endif return pDevice_d; --- Omni/PrintDevice.hpp.gcc31 Fri Nov 16 21:23:43 2001 +++ Omni/PrintDevice.hpp Tue Jan 22 14:16:30 2002 @@ -140,6 +140,7 @@ ostream *outputStream_d; streambuf *outputStreamBuf_d; + FILE *outputStreamFILE_d; int fShouldDeleteOutputStream_d; char *pszDriverName_d; char *pszDeviceName_d; |