⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getprintstatus.c

📁 早期freebsd实现
💻 C
字号:
/* $Header: getprintstatus.c,v 2.1 87/01/14 13:12:50 ed Exp $ *//* * $Log:	getprintstatus.c,v $ * Revision 2.1  86/10/11  15:42:11  jqj * Some convenience changes from B Jackson @ PARC *  * Revision 2.0  85/11/21  07:23:10  jqj * 4.3BSD standard release *  * Revision 1.1  85/11/20  13:56:47  jqj * Initial revision *  */#include <stdio.h>#include <sys/types.h>#include <netns/ns.h>#include "Printing3_defs.h"#include <xnscourier/Clearinghouse2.h>#include <xnscourier/except.h>main(argc, argv)	int argc;	char *argv[];{	GetPrinterStatusResults result;	struct ns_addr *destaddr;	CourierConnection *conn;	char *xnshost;	extern struct ns_addr *getXNSaddr();	extern struct ns_addr *CH_LookupAddr();	Clearinghouse2_Name hostname;	Clearinghouse2_Name defaultname;	extern Clearinghouse2_Name CH_StringToName();	extern char *getenv();	CH_NameDefault(&defaultname);	xnshost = getenv("PRINTER");	switch (argc) {	case 2: xnshost = argv[1];	case 1:	hostname = CH_StringToName(xnshost,&defaultname);		if ((destaddr = CH_LookupAddr(hostname)) != NULL)			break;		/* got a valid host name */		else			fprintf(stderr,"Invalid machine name: [%s:%s:%s]\n",				hostname.object,				hostname.domain,				hostname.organization);	default:		fprintf(stderr,"Usage: %s [machine]\n",argv[0]);		exit(1);	}	if ((conn = CourierOpen(destaddr)) == NULL) {		fprintf(stderr,"Can't open connection to %s\n",xnshost);		exit(1);	}	DURING		result = GetPrinterStatus(conn,NULL);	HANDLER {		switch (Exception.Code) {		case ServiceUnavailable:			fprintf(stderr,"Service unavailable\n");			break;		case SystemError:			fprintf(stderr,"System Error\n");			break;		case Undefined:			fprintf(stderr,"Undefined error, number %d\n",				CourierErrArgs(UndefinedArgs,problem));		case REJECT_ERROR:			fprintf(stderr,"REJECT:  type = %d\n",				CourierErrArgs(rejectionDetails, designator));			break;		default:			fprintf(stderr,"Some random error, code %d\n",				Exception.Code);			break;		}	exit(1);	} END_HANDLER;	CourierClose(conn);	printf("[%s:%s:%s]\n",		hostname.object,		hostname.domain,		hostname.organization);	printresults(result.status);}printresults(status)	PrinterStatus status;{	int i, typ;	static char *spoollist[] = {"available","busy","disabled","full"};	static char *formatlist[] = {"available","busy","disabled"};	static char *printlist[] = {"available","busy","disabled",			"needs attention","needs key operator"};	for (i = 0; i < status.length; i++) {		switch (status.sequence[i].designator) {		case spooler:			typ = (int) status.sequence[i].spooler_case;			printf("Spooling status:  %s\n", spoollist[typ]);			break;		case formatter:			typ = (int) status.sequence[i].formatter_case;			printf("Formatting status:  %s\n", formatlist[typ]);			break;		case printer:			typ = (int) status.sequence[i].printer_case;			printf("Printer status:  %s\n", printlist[typ]);			break;		case media:			printmedia(status.sequence[i].media_case);			break;		}	}}printmedia(media)	Media media;{	int j;	for (j = 0; j <media.length; j++) {		switch (media.sequence[j].designator) {		case paper:			printf("Paper #%d:  ", j+1);			printpaper(media.sequence[j].paper_case);			break;		default:			printf("Unknown medium type\n");			break;		}	}}printpaper(paper)	Paper paper;{	switch (paper.designator) {	case unknown:		printf("unknown\n");		break;	case knownSize:		switch (paper.knownSize_case) {		case usLetter:			printf("US letter\n");			break;		case usLegal:			printf("US legal\n");			break;		default:			printf("known size %d\n", paper.knownSize_case);			break;		}		break;	case otherSize:		printf("\tother size: width = %dmm, length = %d mm\n",			paper.otherSize_case.width,			paper.otherSize_case.length);		break;	default:		printf("Unknown paper type");		break;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -