]>
git.ipfire.org Git - thirdparty/cups.git/blob - driver/testdriver.c
2 * "$Id: testdriver.c 7306 2008-02-15 00:52:38Z mike $"
4 * Sample/test driver interface program for CUPS.
6 * This program handles listing and installing both static PPD files
7 * in CUPS_DATADIR/model and dynamically generated PPD files using
8 * the driver helper programs in CUPS_SERVERBIN/driver.
10 * Copyright 2007-2010 by Apple Inc.
11 * Copyright 1997-2006 by Easy Software Products.
13 * These coded instructions, statements, and computer programs are the
14 * property of Apple Inc. and are protected by Federal copyright
15 * law. Distribution and use rights are outlined in the file "LICENSE.txt"
16 * which should have been included with this file. If this file is
17 * file is missing or damaged, see the license at "http://www.cups.org/".
21 * main() - Enumerate or display PPD files.
22 * cat_ppd() - Display a PPD file.
23 * list_ppds() - List PPDs.
27 * Include necessary headers...
30 #include <cups/string-private.h>
31 #include <cups/cups.h>
38 static int cat_ppd(const char *uri
);
39 static int list_ppds(const char *name
);
46 static const char *models
[][2] =
48 { "foojet.ppd", "Foo Printer" },
49 { "barjet.ppd", "Bar Printer" },
50 { "foobar.ppd", "Foo/Bar Multifunction Printer" }
55 * 'main()' - Enumerate or display PPD files.
58 int /* O - Exit status */
59 main(int argc
, /* I - Number of command-line args */
60 char *argv
[]) /* I - Command-line arguments */
62 if (argc
== 2 && !strcmp(argv
[1], "list"))
63 return (list_ppds(argv
[0]));
64 else if (argc
== 3 && !strcmp(argv
[1], "cat"))
65 return (cat_ppd(argv
[2]));
67 fprintf(stderr
, "ERROR: Usage: %s cat URI\n", argv
[0]);
68 fprintf(stderr
, "ERROR: Usage: %s list\n", argv
[0]);
74 * 'cat_ppd()' - Display a PPD file.
77 static int /* O - Exit status */
78 cat_ppd(const char *uri
) /* I - PPD URI */
80 int i
; /* Looping var */
81 char scheme
[255], /* URI scheme */
82 userpass
[255], /* Username/password (unused) */
83 hostname
[255], /* Hostname (unused) */
84 resource
[1024]; /* Resource name */
85 int port
; /* Port (unused) */
86 const char *name
; /* Pointer to name in URI */
89 if (httpSeparateURI(HTTP_URI_CODING_ALL
, uri
, scheme
, sizeof(scheme
),
90 userpass
, sizeof(userpass
), hostname
, sizeof(hostname
),
91 &port
, resource
, sizeof(resource
)) < HTTP_URI_OK
)
93 fprintf(stderr
, "ERROR: Bad URI \"%s\"!\n", uri
);
99 for (i
= 0 ; i
< (int)(sizeof(models
) / sizeof(models
[0])); i
++)
100 if (!strcmp(name
, models
[i
][0]))
103 * Actually display the PPD file...
105 puts("*PPD-Adobe: \"4.3\"");
107 puts("*LanguageEncoding: ISOLatin1");
108 puts("*LanguageVersion: English");
109 puts("*Manufacturer: \"Test\"");
110 puts("*FileVersion: \"1.0\"");
111 puts("*FormatVersion: \"4.3\"");
112 puts("*PSVersion: \"(3010) 1\"");
113 printf("*PCFileName: \"%s\"\n", models
[i
][0]);
115 printf("*Product: \"(%s)\"\n", models
[i
][1]);
116 printf("*ModelName: \"Test %s\"\n", models
[i
][1]);
117 printf("*NickName: \"Test %s\"\n", models
[i
][1]);
118 printf("*ShortNickName: \"Test %s\"\n", models
[i
][1]);
120 puts("*OpenUI PageSize: PickOne");
121 puts("*OrderDependency: 10 AnySetup *PageSetup");
122 puts("*DefaultPageSize: Letter");
123 puts("*PageSize Letter: \"<</PageSize[612 792]>>setpagedevice\"");
124 puts("*PageSize A4: \"<</PageSize[585 842]>>setpagedevice\"");
125 puts("*CloseUI: *PageSize");
127 puts("*OpenUI PageRegion: PickOne");
128 puts("*OrderDependency: 10 AnySetup *PageRegion");
129 puts("*DefaultPageRegion: Letter");
130 puts("*PageRegion Letter: \"<</PageRegion[612 792]>>setpagedevice\"");
131 puts("*PageRegion A4: \"<</PageRegion[585 842]>>setpagedevice\"");
132 puts("*CloseUI: *PageRegion");
134 puts("*DefaultImageableArea: Letter");
135 puts("*ImageableArea Letter: \"0 0 612 792\"");
136 puts("*ImageableArea A4: \"0 0 595 842\"");
138 puts("*DefaultPaperDimension: Letter");
139 puts("*PaperDimension Letter: \"612 792\"");
140 puts("*PaperDimension A4: \"595 842\"");
145 fprintf(stderr
, "ERROR: Unknown URI \"%s\"!\n", uri
);
151 * 'list_ppds()' - List PPDs.
154 static int /* O - Exit status */
155 list_ppds(const char *name
) /* I - Program name */
157 int i
; /* Looping var */
158 const char *base
; /* Base name of program */
161 if ((base
= strrchr(name
, '/')) != NULL
)
166 for (i
= 0; i
< (int)(sizeof(models
) / sizeof(models
[0])); i
++)
167 printf("\"%s:///%s\" en \"Test\" \"Test %s\" \"1284 device id\"\n",
168 base
, models
[i
][0], models
[i
][1]);
175 * End of "$Id: testdriver.c 7306 2008-02-15 00:52:38Z mike $".