subsumed by fetch.c
authormillert <millert@openbsd.org>
Mon, 3 Feb 1997 06:08:07 +0000 (06:08 +0000)
committermillert <millert@openbsd.org>
Mon, 3 Feb 1997 06:08:07 +0000 (06:08 +0000)
usr.bin/ftp/http.c [deleted file]

diff --git a/usr.bin/ftp/http.c b/usr.bin/ftp/http.c
deleted file mode 100644 (file)
index 69642d7..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*     $OpenBSD: http.c,v 1.2 1997/01/29 22:21:32 millert Exp $        */
-
-/*
- * Copyright (c) 1996 Theo de Raadt
- * Copyright (c) 1996 Brian Mitchell
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/types.h>
-#include <sys/file.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include <ctype.h>
-#include <err.h>
-#include <netdb.h>
-#include <pwd.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-/*
- * This function lets you retrieve files from the WWW. It will accept
- * any http:// url. It conects and retrieves the file, saving it in
- * the current directory.
- *
- * Limitations:
- * http://host does not work, nor http://host/ - you have to specifically
- * specify the filename you want to transfer.
- */
-int
-http_fetch(url)
-       char *url;
-{
-       char *hostname, *filename, basename[MAXPATHLEN] = "/";
-       char buf[8192], *bufp, *req = NULL;
-       struct sockaddr_in addr;
-       struct hostent *he;
-       FILE *write_to;
-       char *s, *p;
-       int bytes, c, d;
-       int sock = -1, file = -1, ret = 1;
-
-       s = url + strlen("http://");
-       p = strchr(s, '/');
-       if (p)
-               *p = '\0';
-       else
-               p = s + strlen(s);
-       if (p - s > MAXHOSTNAMELEN-1) {
-               warn("hostname too long");
-               return (1);
-       }
-       hostname = s;
-       filename = p + 1;
-
-       p = strrchr(filename, '/');
-       if (p == NULL) {
-               if (strlen(s) > MAXPATHLEN-1) {
-                       warn("filename too long");
-                       return (1);
-               }
-               strcpy(basename, filename);
-       } else {
-               p++;
-               if (strlen(p) > MAXPATHLEN-1) {
-                       warn("filename too long");
-                       return (1);
-               }
-               strcpy(basename, p);
-       }
-       if (strlen(basename) == 0)
-               strcpy(basename, "index.html");
-
-       req = (char *)malloc(sizeof("GET ") + strlen(filename) +3);
-       if (!req) {
-               warn("no memory");
-               return (1);
-       }
-       sprintf(req, "GET /%s\n", filename);
-
-       he = gethostbyname(hostname);
-       if (!he) {
-               herror("gethostbyname");
-               goto die;
-       }
-
-       sock = socket(AF_INET, SOCK_STREAM, 0);
-       if (sock == -1) {
-               perror("socket");
-               goto die;
-       }
-
-       memset(&addr, 0, sizeof addr);
-       addr.sin_family = he->h_addrtype;
-       addr.sin_port = htons(80);
-       memcpy(&addr.sin_addr, he->h_addr, he->h_length);
-
-       if (connect(sock, (struct sockaddr *)&addr, sizeof addr) == -1) {
-               perror("connect");
-               goto die;
-       }
-       printf("Connected to %s.\n", hostname);
-
-       printf("Retrieving using: %s", req);
-       for (bufp = req, c = strlen(bufp); c > 0; c -= d, bufp += d) {
-               if ((d = write(sock, bufp, c)) <= 0)
-                       break;
-       }
-       if (d == -1) {
-               perror("sending command");
-               goto die;
-       }
-
-       file = open(basename, O_CREAT|O_WRONLY|O_TRUNC, 0666);
-       if (!file) {
-               perror("fopen");
-               goto die;
-       }
-
-       bytes = 0;
-       while ((c = read(sock, buf, sizeof (buf))) > 0) {
-               bytes += c;
-               for (bufp = buf; c > 0; c -= d, bufp += d)
-                       if ((d = write(file, bufp, c)) <= 0)
-                               break;
-       }
-       if (d == -1) {
-               perror("failed to receive correctly");
-               goto die;
-       }
-       printf("Success, closing connection.\n"); 
-       ret = 0;
-die:
-       if (sock != -1)
-               close(sock);
-       if (file != -1)
-               close(file);
-       if (req)
-               free(req);
-       return (ret);
-}