]> git.ipfire.org Git - thirdparty/cups.git/blob - cups/testhttp.c
Copyright update...
[thirdparty/cups.git] / cups / testhttp.c
1 /*
2 * "$Id: testhttp.c,v 1.12 2002/01/02 17:58:41 mike Exp $"
3 *
4 * HTTP test program for the Common UNIX Printing System (CUPS).
5 *
6 * Copyright 1997-2002 by Easy Software Products.
7 *
8 * These coded instructions, statements, and computer programs are the
9 * property of Easy Software Products and are protected by Federal
10 * copyright law. Distribution and use rights are outlined in the file
11 * "LICENSE.txt" which should have been included with this file. If this
12 * file is missing or damaged please contact Easy Software Products
13 * at:
14 *
15 * Attn: CUPS Licensing Information
16 * Easy Software Products
17 * 44141 Airport View Drive, Suite 204
18 * Hollywood, Maryland 20636-3111 USA
19 *
20 * Voice: (301) 373-9603
21 * EMail: cups-info@cups.org
22 * WWW: http://www.cups.org
23 *
24 * Contents:
25 *
26 * main() - Main entry.
27 */
28
29 /*
30 * Include necessary headers...
31 */
32
33 #include <stdio.h>
34 #include "http.h"
35
36
37 /*
38 * 'main()' - Main entry.
39 */
40
41 int /* O - Exit status */
42 main(int argc, /* I - Number of command-line arguments */
43 char *argv[]) /* I - Command-line arguments */
44 {
45 int i; /* Looping var */
46 http_t *http; /* HTTP connection */
47 http_status_t status; /* Status of GET command */
48 char buffer[8192]; /* Input buffer */
49 long bytes; /* Number of bytes read */
50 FILE *out; /* Output file */
51 char host[HTTP_MAX_URI],
52 method[HTTP_MAX_URI],
53 username[HTTP_MAX_URI],
54 resource[HTTP_MAX_URI];
55 int port;
56 long length, total;
57 time_t start, current;
58
59
60
61 http = NULL;
62 out = stdout;
63
64 for (i = 1; i < argc; i ++)
65 {
66 if (strcmp(argv[i], "-o") == 0)
67 {
68 i ++;
69 out = fopen(argv[i], "wb");
70 continue;
71 }
72
73 httpSeparate(argv[i], method, username, host, &port, resource);
74
75 http = httpConnect(host, port);
76 if (http == NULL)
77 {
78 perror(host);
79 continue;
80 }
81 printf("Requesting file \"%s\"...\n", resource);
82 httpClearFields(http);
83 httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
84 httpGet(http, resource);
85 while ((status = httpUpdate(http)) == HTTP_CONTINUE);
86
87 if (status == HTTP_OK)
88 puts("GET OK:");
89 else
90 printf("GET failed with status %d...\n", status);
91
92
93 start = time(NULL);
94 length = atoi(httpGetField(http, HTTP_FIELD_CONTENT_LENGTH));
95 total = 0;
96
97 while ((bytes = httpRead(http, buffer, sizeof(buffer))) > 0)
98 {
99 total += bytes;
100 fwrite(buffer, bytes, 1, out);
101 if (out != stdout)
102 {
103 current = time(NULL);
104 if (current == start) current ++;
105 printf("\r%ld/%ld bytes (%ld bytes/sec) ", total, length,
106 total / (current - start));
107 fflush(stdout);
108 }
109 }
110 }
111
112 puts("Closing connection to server...");
113 httpClose(http);
114
115 if (out != stdout)
116 fclose(out);
117
118 return (0);
119 }
120
121
122 /*
123 * End of "$Id: testhttp.c,v 1.12 2002/01/02 17:58:41 mike Exp $".
124 */