Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

530 lines
12 KiB

/***************************************************************************
*
* File Name: misc.cpp
*
* Copyright (C) 1993-1996 Hewlett-Packard Company.
* All rights reserved.
*
* 11311 Chinden Blvd.
* Boise, Idaho 83714
*
* This is a part of the HP JetAdmin Printer Utility
*
* This source code is only intended as a supplement for support and
* localization of HP JetAdmin by 3rd party Operating System vendors.
* Modification of source code cannot be made without the express written
* consent of Hewlett-Packard.
*
*
* Description:
*
* Author: Name
*
*
* Modification history:
*
* date initials change description
*
* mm-dd-yy MJB
* 01-18-96 JLH Modified for unicode
*
*
*
*
*
***************************************************************************/
#include <pch_c.h>
#include <string.h>
#include <stdlib.h>
#include <nwbindry.h>
#include <trace.h>
#include <colashim.h>
#include <nolocal.h>
#include "misc.h"
DWORD SetControlPanel(HPERIPHERAL hPeripheral, HCHANNEL hChannel, LPTSTR newWAString)
{
DWORD returnCode = RC_SUCCESS;
return(returnCode);
}
DWORD SetControlPanelSettings(HPERIPHERAL hPeripheral, HCHANNEL hChannel, PJLobjects *pjlObjects)
{
DWORD returnCode = RC_SUCCESS;
DWORD dWord,
qId; // to send the print job to the queue
NWCONN_ID connID;
NWFILE_HANDLE printJobHandle = 0;
NWQueueJobStruct printJob;
QMSClientArea *pQMSClient = (QMSClientArea *)&(printJob.clientRecordArea);
char * prefix = PJL_PREFIX;
char * postfix = PJL_POSTFIX;
char * jobStart = PJL_JOB_START;
char * jobEnd = PJL_JOB_END;
char * pwJobStart = PJL_PW_START;
char * pwJobEnd = PJL_PW_END;
char * defJobStart = PJL_DEF_START;
char * defJobEnd = PJL_DEF_END;
char strValue[20],
langCmd[128],
langName[64],
buf[1024],
job[2048],
JOBARG[] = JOB_ARG,
JOBARG2[] = JOB_ARG2;
// NOTE: This code assumes that pjlObjects is WELL-FORMED.
// It does NO ERROR CHECKING. Send no bad PJL object buffers.
buf[0] = '\0'; // force buf to be empty
if (pjlObjects->bAutoCont) {
strcat(buf, prefix);
strcat(buf, AUTOCONT);
if (pjlObjects->AutoCont == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bBinding) {
strcat(buf, prefix);
strcat(buf, BINDING);
if (pjlObjects->Binding == PJL_LONGEDGE)
strcat(buf, LONGEDGE);
else strcat(buf, SHORTEDGE);
strcat(buf, postfix);
}
if (pjlObjects->bClearableWarnings) {
strcat(buf, prefix);
strcat(buf, CLEARABLEWARNINGS);
if (pjlObjects->ClearableWarnings == PJL_JOB)
strcat(buf, JOB);
else strcat(buf, ON);
strcat(buf, postfix);
}
if (pjlObjects->bCopies) {
strcat(buf, prefix);
strcat(buf, COPIES);
strValue[0] = '\0';
_itoa((int)pjlObjects->Copies, strValue, 10);
strcat(buf, strValue);
strcat(buf, postfix);
}
if (pjlObjects->bCpLock) {
strcat(buf, prefix);
strcat(buf, CPLOCK);
if (pjlObjects->CpLock == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bDensity) {
strcat(buf, prefix);
strcat(buf, DENSITY);
strValue[0] = '\0';
_itoa((int)pjlObjects->Density, strValue, 10);
strcat(buf, strValue);
strcat(buf, postfix);
}
if (pjlObjects->bDuplex) {
strcat(buf, prefix);
strcat(buf, DUPLEX);
if (pjlObjects->Duplex == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bEconoMode) {
strcat(buf,prefix);
strcat(buf,ECONOMODE);
if (pjlObjects->EconoMode == PJL_ON)
strcat(buf, ON);
else strcat(buf,OFF);
strcat(buf, postfix);
}
if (pjlObjects->bFormLines) {
strcat(buf, prefix);
strcat(buf, FORMLINES);
strValue[0] = '\0';
_itoa((int)pjlObjects->FormLines, strValue, 10);
strcat(buf, strValue);
strcat(buf, postfix);
}
if (pjlObjects->bImageAdapt) {
strcat(buf, prefix);
strcat(buf, IMAGEADAPT);
if (pjlObjects->ImageAdapt == PJL_AUTO)
strcat(buf, AUTO);
else if (pjlObjects->ImageAdapt == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bJobOffset) {
strcat(buf, prefix);
strcat(buf, JOBOFFSET);
if (pjlObjects->JobOffset == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bLang) {
strcat(buf, prefix);
switch (pjlObjects->Lang) {
case PJL_DANISH:
strcpy(langName, DANISH);
break;
case PJL_GERMAN:
strcpy(langName, GERMAN);
break;
case PJL_ENGLISH:
strcpy(langName, ENGLISH);
break;
case PJL_ENGLISH_UK:
strcpy(langName, ENGLISH);
break;
case PJL_SPANISH:
strcpy(langName, SPANISH);
break;
case PJL_MEXICO:
strcpy(langName, SPANISH);
break;
case PJL_FRENCH:
strcpy(langName, FRENCH);
break;
case PJL_CANADA:
strcpy(langName, FRENCH);
break;
case PJL_ITALIAN:
strcpy(langName, ITALIAN);
break;
case PJL_DUTCH:
strcpy(langName, DUTCH);
break;
case PJL_NORWEGIAN:
strcpy(langName, NORWEGIAN);
break;
case PJL_POLISH:
strcpy(langName, POLISH);
break;
case PJL_PORTUGUESE:
strcpy(langName, PORTUGUESE);
break;
case PJL_FINNISH:
strcpy(langName, FINNISH);
break;
case PJL_SWEDISH:
strcpy(langName, SWEDISH);
break;
case PJL_TURKISH:
strcpy(langName, TURKISH);
break;
case PJL_JAPANESE:
strcpy(langName, JAPANESE);
break;
}
if ( pjlObjects->bLangServiceMode )
wsprintfA(langCmd, LANG_SERVICE_MODE,
langName);
else
wsprintfA(langCmd, LANG, langName);
strcat(buf, langCmd);
strcat(buf, postfix);
}
if (pjlObjects->bManualFeed) {
strcat(buf, prefix);
strcat(buf, MANUALFEED);
if (pjlObjects->ManualFeed == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bOrientation) {
strcat(buf, prefix);
strcat(buf, ORIENTATION);
if (pjlObjects->Orientation == PJL_PORTRAIT)
strcat(buf, PORTRAIT);
else strcat(buf, LANDSCAPE);
strcat(buf, postfix);
}
if (pjlObjects->bOutbin) {
strcat(buf, prefix);
strcat(buf, OUTBIN);
if (pjlObjects->Outbin == PJL_UPPER)
strcat(buf, UPPER);
else strcat(buf, LOWER);
strcat(buf, postfix);
}
if (pjlObjects->bPageProtect) {
strcat(buf, prefix);
strcat(buf, PAGEPROTECT);
switch (pjlObjects->PageProtect) {
case PJL_AUTO:
strcat(buf, AUTO);
break;
case PJL_OFF:
strcat(buf, OFF);
break;
case PJL_LETTER:
strcat(buf, LETTER);
break;
case PJL_LEGAL:
strcat(buf, LEGAL);
break;
case PJL_A4:
strcat(buf, A4_NAME);
break;
case PJL_ON:
strcat(buf, ON);
break;
}
strcat(buf, postfix);
}
if (pjlObjects->bPaper) {
strcat(buf, prefix);
strcat(buf, PAPER);
switch (pjlObjects->Paper) {
case PJL_LETTER:
strcat(buf, LETTER);
break;
case PJL_LEGAL:
strcat(buf, LEGAL);
break;
case PJL_A4:
strcat(buf, A4_NAME);
break;
case PJL_EXECUTIVE:
strcat(buf, EXECUTIVE);
break;
case PJL_COM10:
strcat(buf, COM10);
break;
case PJL_MONARCH:
strcat(buf, MONARCH);
break;
case PJL_C5:
strcat(buf, C5_NAME);
break;
case PJL_DL:
strcat(buf, DL_NAME);
break;
case PJL_B5:
strcat(buf, B5_NAME);
break;
case PJL_CUSTOM:
strcat(buf, CUSTOM);
break;
}
strcat(buf, postfix);
}
if (pjlObjects->bPassWord) {
strcat(buf, prefix);
strcat(buf, PASSWORD);
if (pjlObjects->PassWord == PJL_ENABLE)
strcat(buf, STEVES_BIRTHDAY);
else strcat(buf, "0");
strcat(buf, postfix);
}
if (pjlObjects->bPersonality) {
strcat(buf, prefix);
strcat(buf, PERSONALITY);
if (pjlObjects->Personality == PJL_AUTO)
strcat(buf, AUTO);
else if (pjlObjects->Personality == PJL_PCL)
strcat(buf, PCL_NAME);
else strcat(buf, POSTSCRIPT);
strcat(buf, postfix);
}
if (pjlObjects->bPowerSave) {
strcat(buf, prefix);
strcat(buf, POWERSAVE);
if (pjlObjects->PowerSave == PJL_OFF) {
strcat(buf, OFF);
}
else {
strcat(buf, ON);
strcat(buf, postfix);
strcat(buf, prefix);
strcat(buf, POWERSAVETIME);
switch (pjlObjects->PowerSave) {
case PJL_15:
strcat(buf, PS_TIME_15);
break;
case PJL_30:
strcat(buf, PS_TIME_30);
break;
case PJL_60:
strcat(buf, PS_TIME_60);
break;
case PJL_120:
strcat(buf, PS_TIME_120);
break;
case PJL_180:
strcat(buf, PS_TIME_180);
break;
} // switch
} // else
strcat(buf, postfix);
}
if (pjlObjects->bResolution) {
strcat(buf, prefix);
strcat(buf, RESOLUTION);
if (pjlObjects->Resolution == 600)
strcat(buf, RES_600);
else strcat(buf, RES_300);
strcat(buf, postfix);
}
if (pjlObjects->bResourceSave) {
strcat(buf, prefix);
strcat(buf, RESOURCESAVE);
if (pjlObjects->ResourceSave == PJL_AUTO)
strcat(buf, AUTO);
else if (pjlObjects->ResourceSave == PJL_ON) {
strcat(buf, ON);
strcat(buf, postfix);
strcat(buf, prefix);
strcat(buf, RESOURCESAVESIZE);
strValue[0] = '\0';
_itoa((int)pjlObjects->ResSaveSize, strValue, 10);
strcat(buf, strValue);
}
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bRET) {
strcat(buf, prefix);
strcat(buf, RET_EQUALS);
switch (pjlObjects->RET) {
case PJL_MEDIUM:
strcat(buf, MEDIUM);
break;
case PJL_ON:
strcat(buf, ON);
break;
case PJL_LIGHT:
strcat(buf, LIGHT);
break;
case PJL_DARK:
strcat(buf, DARK);
break;
case PJL_OFF:
strcat(buf, OFF);
break;
}
strcat(buf, postfix);
}
if (pjlObjects->bTimeout) {
strcat(buf, prefix);
strcat(buf, TIMEOUT);
strValue[0] = '\0';
_itoa((int)pjlObjects->Timeout, strValue, 10);
strcat(buf, strValue);
strcat(buf, postfix);
}
if (pjlObjects->bJamRecovery) {
strcat(buf, prefix);
strcat(buf, JAMRECOVERY);
if (pjlObjects->JamRecovery == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (pjlObjects->bPrintPSerrors) {
strcat(buf, prefix);
strcat(buf, PRTPSERRS);
if (pjlObjects->PrintPSerrors == PJL_ON)
strcat(buf, ON);
else strcat(buf, OFF);
strcat(buf, postfix);
}
// I/O Buffering must be last because everything after it will
// fail.
if (pjlObjects->bIObuffer) {
strcat(buf, prefix);
strcat(buf, IOBUFFER);
if (pjlObjects->IObuffer == PJL_AUTO)
strcat(buf, AUTO);
else if (pjlObjects->IObuffer == PJL_ON) {
strcat(buf, ON);
strcat(buf, postfix);
strcat(buf, prefix);
strcat(buf, IOSIZE);
strValue[0] = '\0';
_itoa((int)pjlObjects->IObufSize, strValue, 10);
strcat(buf, strValue);
}
else strcat(buf, OFF);
strcat(buf, postfix);
}
if (strlen(buf) IS 0) {
// pjlObjects was empty. Return success.
// MessageBox(NULL,"The pjlObjects was empty.", "OOPS", MB_OK);
return(RC_SUCCESS);
}
if ( IPX_SUPPORTED(hPeripheral) AND ( COLAHPNWShimNetWarePresent() ) )
{
// send job directly to printer queue
if (COLADllNWGetConnectionID(pjlObjects->FSname, 0, &connID, NULL) != 0)
{
TRACE0(TEXT("HPPJLEXT: Could not get connection ID\r"));
return(RC_FAILURE);
}
if(COLADllNWGetObjectID(connID, pjlObjects->Qname, OT_PRINT_QUEUE, &qId)!=0)
{
#ifdef WIN32
TRACE0(TEXT("HPPJLEXT: Could not get object ID\r"));
#endif
return(RC_FAILURE);
}
COLADllSendJob(connID, qId, buf, SENDJOB_PJL);
}
else
{
wsprintfA(job, JOBARG, buf);
wsprintfA(job+strlen(job), JOBARG2, buf);
dWord = strlen(job);
TALWriteChannel(hChannel, job, &dWord, NULL);
}
return(returnCode);
}