From 4d8b36adf2024e6c28ecd266fb3585fdbc2c66f2 Mon Sep 17 00:00:00 2001 From: Roland Mainz Date: Mon, 11 Apr 2005 01:06:15 +0000 Subject: xc/programs/Xserver/Xprint/attributes.c xc/programs/glxgears/glxgears.c xc/programs/xdbedizzy/xdbedizzy.c xc/programs/xedit/Imakefile xc/programs/xedit/Xedit-xprint.ad xc/programs/xedit/util.c xc/programs/xedit/xedit.h xc/programs/xlogo/print.c xc/programs/xlogo/xlogo.c xc/programs/xlogo/xlogo.h xc/programs/xman/Imakefile xc/programs/xman/print.h xc/programs/xmore/Imakefile xc/programs/xmore/print.c xc/programs/xmore/print.h xc/programs/xmore/printdialog.c xc/programs/xphelloworld/xpawhelloworld/xpawhelloworld.c xc/programs/xphelloworld/xphelloworld/xphelloworld.c xc/programs/xphelloworld/xpsimplehelloworld/xpsimplehelloworld.c xc/programs/xphelloworld/xpxmhelloworld/xpxmhelloworld.c //bugs.freedesktop.org/show_bug.cgi?id=790) attachment #2379 (https://bugs.freedesktop.org/attachment.cgi?id=2379) Implement support client+Xserver support for passing output (stdout+stderr) of the spooler command started by the Xprint server back to the application using the "xp-spooler-command-results" XPJobAttr attribute (applications can fetch the attribute value after the XPEndJobNotify event was received; more details can be found in http://xprint.mozdev.org/docs/dtprint_fspec.ps). --- print.c | 23 +++++++++++++++++++++++ xlogo.c | 3 +++ xlogo.h | 2 ++ 3 files changed, 28 insertions(+) diff --git a/print.c b/print.c index 20cdeea..2826ac2 100644 --- a/print.c +++ b/print.c @@ -111,6 +111,8 @@ PageSetupCB(Widget widget, XtPointer client_data, XtPointer call_data) void FinishPrinting(AppPrintData *p) { + char *scr; + if (p->printtofile_handle) { if (XpuWaitForPrintFileChild(p->printtofile_handle) != XPGetDocFinished) { fprintf(stderr, "%s: Error while printing to file.\n", ProgramName); @@ -118,6 +120,27 @@ void FinishPrinting(AppPrintData *p) p->printtofile_handle = NULL; } + /* Job completed, check if there are any messages from the spooler command */ + scr = XpGetOneAttribute(p->pdpy, p->pcontext, XPJobAttr, "xp-spooler-command-results"); + if( scr ) + { + if( strlen(scr) > 0 ) + { + const char *msg = XpuCompoundTextToXmb(p->pdpy, scr); + if( msg ) + { + Msg(("Spooler command returned '%s'.\n", msg)); + XpuFreeXmbString(msg); + } + else + { + Msg(("Spooler command returned '%s' (unconverted).\n", scr)); + } + } + + XFree((void *)scr); + } + if (p->printshell) { XtDestroyWidget(p->printshell); p->printshell = NULL; diff --git a/xlogo.c b/xlogo.c index ab053a0..b5b91b9 100644 --- a/xlogo.c +++ b/xlogo.c @@ -57,6 +57,7 @@ static XrmOptionDescRec options[] = { {"-sharp", "*sharp", XrmoptionNoArg, "TRUE"}, #endif {"-v", "Verbose", XrmoptionNoArg, "TRUE"}, +{"-q", "Quiet", XrmoptionNoArg, "TRUE"}, #ifdef INCLUDE_XPRINT_SUPPORT {"-print", "Print", XrmoptionNoArg, "TRUE"}, {"-printer", "printer", XrmoptionSepArg, NULL}, @@ -80,6 +81,7 @@ XLogoResourceData userOptions; XtResource resources[] = { {"verbose", "Verbose", XtRBoolean, sizeof(Boolean), Offset(verbose), XtRImmediate, (XtPointer)False}, + {"quiet", "Quiet", XtRBoolean, sizeof(Boolean), Offset(quiet), XtRImmediate, (XtPointer)False}, #ifdef INCLUDE_XPRINT_SUPPORT {"print", "Print", XtRBoolean, sizeof(Boolean), Offset(printAndExit), XtRImmediate, (XtPointer)False}, {"printer", "Printer", XtRString, sizeof(String), Offset(printername), XtRImmediate, (XtPointer)NULL}, @@ -128,6 +130,7 @@ Syntax(Widget toplevel) reasons[n++] = "Usage: "; reasons[n++] = (String)ProgramName; reasons[n++] = " [-fg ] [-bg ] [-rv] [-bw ] [-bd ]\n"; + reasons[n++] = " [-v] [-q]\n"; reasons[n++] = " [-d []:[]]\n"; reasons[n++] = " [-g [][x][<+->[<+->]]]\n"; #ifdef INCLUDE_XPRINT_SUPPORT diff --git a/xlogo.h b/xlogo.h index 50d96c3..f3fa722 100644 --- a/xlogo.h +++ b/xlogo.h @@ -35,9 +35,11 @@ in this Software without prior written authorization from The Open Group. #define Error(x) { printf x ; exit(EXIT_FAILURE); } #define Log(x) { if(userOptions.verbose) printf x; } +#define Msg(x) { if((!userOptions.quiet) || userOptions.verbose) printf x; } typedef struct { Boolean verbose; + Boolean quiet; Boolean printAndExit; String printername; String printfile; -- cgit v1.2.3