]>
git.ipfire.org Git - thirdparty/cups.git/blob - driver/testdriver.c
2 * "$Id: testdriver.c 6649 2007-07-11 21:46:42Z mike $"
4 * Sample/test driver interface program for the Common UNIX Printing
7 * This program handles listing and installing both static PPD files
8 * in CUPS_DATADIR/model and dynamically generated PPD files using
9 * the driver helper programs in CUPS_SERVERBIN/driver.
11 * Copyright 2007 by Apple Inc.
12 * Copyright 1997-2006 by Easy Software Products.
14 * These coded instructions, statements, and computer programs are the
15 * property of Apple Inc. and are protected by Federal copyright
16 * law. Distribution and use rights are outlined in the file "LICENSE.txt"
17 * which should have been included with this file. If this file is
18 * file is missing or damaged, see the license at "http://www.cups.org/".
22 * main() - Enumerate or display PPD files.
23 * cat_ppd() - Display a PPD file.
24 * list_ppds() - List PPDs.
28 * Include necessary headers...
32 #include <cups/string.h>
33 #include <cups/cups.h>
40 static int cat_ppd(const char *uri
);
41 static int list_ppds(const char *name
);
48 static const char *models
[][2] =
50 { "foojet.ppd", "Foo Printer" },
51 { "barjet.ppd", "Bar Printer" },
52 { "foobar.ppd", "Foo/Bar Multifunction Printer" }
57 * 'main()' - Enumerate or display PPD files.
60 int /* O - Exit status */
61 main(int argc
, /* I - Number of command-line args */
62 char *argv
[]) /* I - Command-line arguments */
64 if (argc
== 2 && !strcmp(argv
[1], "list"))
65 return (list_ppds(argv
[0]));
66 else if (argc
== 3 && !strcmp(argv
[1], "cat"))
67 return (cat_ppd(argv
[2]));
69 fprintf(stderr
, "ERROR: Usage: %s cat URI\n", argv
[0]);
70 fprintf(stderr
, "ERROR: Usage: %s list\n", argv
[0]);
76 * 'cat_ppd()' - Display a PPD file.
79 static int /* O - Exit status */
80 cat_ppd(const char *uri
) /* I - PPD URI */
82 int i
; /* Looping var */
83 char scheme
[255], /* URI scheme */
84 userpass
[255], /* Username/password (unused) */
85 hostname
[255], /* Hostname (unused) */
86 resource
[1024]; /* Resource name */
87 int port
; /* Port (unused) */
88 const char *name
; /* Pointer to name in URI */
91 if (httpSeparateURI(HTTP_URI_CODING_ALL
, uri
, scheme
, sizeof(scheme
),
92 userpass
, sizeof(userpass
), hostname
, sizeof(hostname
),
93 &port
, resource
, sizeof(resource
)) < HTTP_URI_OK
)
95 fprintf(stderr
, "ERROR: Bad URI \"%s\"!\n", uri
);
101 for (i
= 0 ; i
< (int)(sizeof(models
) / sizeof(models
[0])); i
++)
102 if (!strcmp(name
, models
[i
][0]))
105 * Actually display the PPD file...
107 puts("*PPD-Adobe: \"4.3\"");
109 puts("*LanguageEncoding: ISOLatin1");
110 puts("*LanguageVersion: English");
111 puts("*Manufacturer: \"Test\"");
112 puts("*FileVersion: \"1.0\"");
113 puts("*FormatVersion: \"4.3\"");
114 puts("*PSVersion: \"(3010) 1\"");
115 printf("*PCFileName: \"%s\"\n", models
[i
][0]);
117 printf("*Product: \"(%s)\"\n", models
[i
][1]);
118 printf("*ModelName: \"Test %s\"\n", models
[i
][1]);
119 printf("*NickName: \"Test %s\"\n", models
[i
][1]);
120 printf("*ShortNickName: \"Test %s\"\n", models
[i
][1]);
122 puts("*OpenUI PageSize: PickOne");
123 puts("*OrderDependency: 10 AnySetup *PageSetup");
124 puts("*DefaultPageSize: Letter");
125 puts("*PageSize Letter: \"<</PageSize[612 792]>>setpagedevice\"");
126 puts("*PageSize A4: \"<</PageSize[585 842]>>setpagedevice\"");
127 puts("*CloseUI: *PageSize");
129 puts("*OpenUI PageRegion: PickOne");
130 puts("*OrderDependency: 10 AnySetup *PageRegion");
131 puts("*DefaultPageRegion: Letter");
132 puts("*PageRegion Letter: \"<</PageRegion[612 792]>>setpagedevice\"");
133 puts("*PageRegion A4: \"<</PageRegion[585 842]>>setpagedevice\"");
134 puts("*CloseUI: *PageRegion");
136 puts("*DefaultImageableArea: Letter");
137 puts("*ImageableArea Letter: \"0 0 612 792\"");
138 puts("*ImageableArea A4: \"0 0 595 842\"");
140 puts("*DefaultPaperDimension: Letter");
141 puts("*PaperDimension Letter: \"612 792\"");
142 puts("*PaperDimension A4: \"595 842\"");
147 fprintf(stderr
, "ERROR: Unknown URI \"%s\"!\n", uri
);
153 * 'list_ppds()' - List PPDs.
156 static int /* O - Exit status */
157 list_ppds(const char *name
) /* I - Program name */
159 int i
; /* Looping var */
160 const char *base
; /* Base name of program */
163 if ((base
= strrchr(name
, '/')) != NULL
)
168 for (i
= 0; i
< (int)(sizeof(models
) / sizeof(models
[0])); i
++)
169 printf("\"%s:///%s\" en \"Test\" \"Test %s\" \"1284 device id\"\n",
170 base
, models
[i
][0], models
[i
][1]);
177 * End of "$Id: testdriver.c 6649 2007-07-11 21:46:42Z mike $".