203 lines
7.2 KiB
C
203 lines
7.2 KiB
C
/****************************************************************************
|
|
* NCSA Mosaic for the X Window System *
|
|
* Software Development Group *
|
|
* National Center for Supercomputing Applications *
|
|
* University of Illinois at Urbana-Champaign *
|
|
* 605 E. Springfield, Champaign IL 61820 *
|
|
* mosaic@ncsa.uiuc.edu *
|
|
* *
|
|
* Copyright (C) 1993, Board of Trustees of the University of Illinois *
|
|
* *
|
|
* NCSA Mosaic software, both binary and source (hereafter, Software) is *
|
|
* copyrighted by The Board of Trustees of the University of Illinois *
|
|
* (UI), and ownership remains with the UI. *
|
|
* *
|
|
* The UI grants you (hereafter, Licensee) a license to use the Software *
|
|
* for academic, research and internal business purposes only, without a *
|
|
* fee. Licensee may distribute the binary and source code (if released) *
|
|
* to third parties provided that the copyright notice and this statement *
|
|
* appears on all copies and that no charge is associated with such *
|
|
* copies. *
|
|
* *
|
|
* Licensee may make derivative works. However, if Licensee distributes *
|
|
* any derivative work based on or derived from the Software, then *
|
|
* Licensee will (1) notify NCSA regarding its distribution of the *
|
|
* derivative work, and (2) clearly notify users that such derivative *
|
|
* work is a modified version and not the original NCSA Mosaic *
|
|
* distributed by the UI. *
|
|
* *
|
|
* Any Licensee wishing to make commercial use of the Software should *
|
|
* contact the UI, c/o NCSA, to negotiate an appropriate license for such *
|
|
* commercial use. Commercial use includes (1) integration of all or *
|
|
* part of the source code into a product for sale or license by or on *
|
|
* behalf of Licensee to third parties, or (2) distribution of the binary *
|
|
* code or source code to third parties that need it to utilize a *
|
|
* commercial product sold or licensed by or on behalf of Licensee. *
|
|
* *
|
|
* UI MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR *
|
|
* ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED *
|
|
* WARRANTY. THE UI SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY THE *
|
|
* USERS OF THIS SOFTWARE. *
|
|
* *
|
|
* By using or copying this Software, Licensee agrees to abide by the *
|
|
* copyright law and all other applicable laws of the U.S. including, but *
|
|
* not limited to, export control laws, and the terms of this license. *
|
|
* UI shall have the right to terminate this license immediately by *
|
|
* written notice upon Licensee's breach of, or non-compliance with, any *
|
|
* of its terms. Licensee may be held legally responsible for any *
|
|
* copyright infringement that is caused or encouraged by Licensee's *
|
|
* failure to abide by the terms of this license. *
|
|
* *
|
|
* Comments and questions are welcome and can be sent to *
|
|
* mosaic-x@ncsa.uiuc.edu. *
|
|
****************************************************************************/
|
|
#include "../config.h"
|
|
#include "mosaic.h"
|
|
#include "grpan-www.h"
|
|
|
|
/*for memcpy*/
|
|
#include <memory.h>
|
|
|
|
#ifndef DISABLE_TRACE
|
|
extern int srcTrace;
|
|
#endif
|
|
|
|
#if 0
|
|
|
|
/* libwww includes */
|
|
#include "tcp.h"
|
|
#include "HTAnchor.h"
|
|
#include "HTParse.h"
|
|
|
|
|
|
static int HtLoadHTTPANN(char *arg, char *data, int len, char *com);
|
|
|
|
/****************************************************************************
|
|
* name: HtLoadHTTPANN (PRIVATE)
|
|
* purpose: Issue a command to a group annotation server.
|
|
* inputs:
|
|
* - char *arg:
|
|
* - char *data:
|
|
* - int len:
|
|
* - char *com:
|
|
* returns:
|
|
*
|
|
* remarks:
|
|
*
|
|
****************************************************************************/
|
|
static int
|
|
HtLoadHTTPANN(char *arg, char *data, int len, char *com)
|
|
{
|
|
int s; /* Socket number for returned data */
|
|
char *command; /* The whole command */
|
|
int status; /* tcp return */
|
|
SockA soc_address; /* Binary network address */
|
|
SockA *sin = &soc_address;
|
|
char *tptr;
|
|
int fmt, compressed;
|
|
int command_len;
|
|
HTParentAnchor *anchor;
|
|
|
|
/*
|
|
* Set up defaults:
|
|
*/
|
|
#ifdef DECNET
|
|
sin->sdn_family = AF_DECnet; /* Family = DECnet, host order */
|
|
sin->sdn_objnum = DNP_OBJ; /* Default: http object number */
|
|
#else /* Internet */
|
|
sin->sin_family = AF_INET; /* Family = internet, host order */
|
|
sin->sin_port = htons(TCP_PORT); /* Default: http port */
|
|
#endif
|
|
|
|
tptr = HTParse(arg, "", PARSE_HOST);
|
|
status = HTParseInet(sin, tptr);
|
|
free(tptr);
|
|
if (status)
|
|
{
|
|
return(status);
|
|
}
|
|
|
|
/*
|
|
* Now, let's get a socket set up from the server for the data.
|
|
*/
|
|
#ifdef DECNET
|
|
s = socket(AF_DECnet, SOCK_STREAM, 0);
|
|
#else
|
|
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
|
#endif
|
|
status = connect
|
|
(s, (struct sockaddr*)&soc_address,sizeof(soc_address));
|
|
if (status < 0)
|
|
{
|
|
return(HTInetStatus("connect"));
|
|
}
|
|
|
|
/* If there's an anchor at this point, leave it in. */
|
|
tptr = HTParse(arg, "", PARSE_PATH|PARSE_PUNCTUATION|PARSE_ANCHOR);
|
|
#ifndef DISABLE_TRACE
|
|
if (srcTrace) {
|
|
fprintf(stderr, "HTParse(%s) returns:\n\t(%s)\n", arg, tptr);
|
|
}
|
|
#endif
|
|
command_len = strlen(com) + strlen(tptr);
|
|
command = malloc(command_len + len + 1);
|
|
if (command == NULL) outofmem(__FILE__, "HTLoadHTTP");
|
|
strcpy(command, com);
|
|
strcat(command, tptr);
|
|
if (len != 0)
|
|
{
|
|
char *bptr;
|
|
|
|
bptr = (char *)(command + command_len);
|
|
/* bcopy(data, bptr, len);*/
|
|
memcpy(bptr, data, len);
|
|
command_len += len;
|
|
}
|
|
else
|
|
{
|
|
command_len++;
|
|
}
|
|
free(tptr);
|
|
|
|
status = NETWRITE(s, command, command_len);
|
|
free(command);
|
|
if (status < 0)
|
|
{
|
|
return(HTInetStatus("send"));
|
|
}
|
|
|
|
tptr = HTParse(arg, "",
|
|
PARSE_ACCESS | PARSE_HOST | PARSE_PATH |
|
|
PARSE_PUNCTUATION);
|
|
#if 0
|
|
/* fmt = HTFileFormat (tptr, WWW_HTML, &compressed); */
|
|
fmt = WWW_HTML;
|
|
anchor = HTAnchor_parent(HTAnchor_findAddress(arg));
|
|
HTParseFormat(fmt, anchor, s, 0);
|
|
#endif
|
|
free(tptr);
|
|
|
|
status = NETCLOSE(s);
|
|
|
|
return(HT_LOADED);
|
|
}
|
|
|
|
#endif /* 0 */
|
|
|
|
char *
|
|
grpan_doit(char *com, char *url, char *data, int len, char **texthead)
|
|
{
|
|
#if 0
|
|
char *txt;
|
|
|
|
if (HtLoadHTTPANN(url, data, len, com) == HT_LOADED)
|
|
{
|
|
txt = mo_get_html_return(texthead);
|
|
return(txt);
|
|
}
|
|
*texthead = NULL;
|
|
#endif /* 0 */
|
|
return(NULL);
|
|
}
|
|
|