fetch.h revision 69464
1108574Sjmallett/*- 2108574Sjmallett * Copyright (c) 1998 Dag-Erling Co�dan Sm�rgrav 3108574Sjmallett * All rights reserved. 4108574Sjmallett * 5108574Sjmallett * Redistribution and use in source and binary forms, with or without 6108574Sjmallett * modification, are permitted provided that the following conditions 7108574Sjmallett * are met: 8108574Sjmallett * 1. Redistributions of source code must retain the above copyright 9108574Sjmallett * notice, this list of conditions and the following disclaimer 10108574Sjmallett * in this position and unchanged. 11108574Sjmallett * 2. Redistributions in binary form must reproduce the above copyright 12108574Sjmallett * notice, this list of conditions and the following disclaimer in the 13108574Sjmallett * documentation and/or other materials provided with the distribution. 14108574Sjmallett * 3. The name of the author may not be used to endorse or promote products 15108574Sjmallett * derived from this software without specific prior written permission 16108574Sjmallett * 17108574Sjmallett * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18108574Sjmallett * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19108574Sjmallett * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20108574Sjmallett * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21108574Sjmallett * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22108574Sjmallett * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23108574Sjmallett * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24108574Sjmallett * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25108574Sjmallett * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26108574Sjmallett * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27108574Sjmallett * 28108574Sjmallett * $FreeBSD: head/lib/libfetch/fetch.h 69464 2000-12-01 11:04:43Z des $ 29108574Sjmallett */ 30108574Sjmallett 31108574Sjmallett#ifndef _FETCH_H_INCLUDED 32108574Sjmallett#define _FETCH_H_INCLUDED 33108574Sjmallett 34181905Sed#define _LIBFETCH_VER "libfetch/2.0" 35206622Suqs 36108574Sjmallett#define URL_SCHEMELEN 16 37108574Sjmallett#define URL_USERLEN 256 38108574Sjmallett#define URL_PWDLEN 256 39108574Sjmallett 40181905Sedstruct url { 41108574Sjmallett char scheme[URL_SCHEMELEN+1]; 42108574Sjmallett char user[URL_USERLEN+1]; 43108574Sjmallett char pwd[URL_PWDLEN+1]; 44108574Sjmallett char host[MAXHOSTNAMELEN+1]; 45108574Sjmallett int port; 46108574Sjmallett char *doc; 47108574Sjmallett off_t offset; 48115631Sru size_t length; 49108574Sjmallett}; 50108574Sjmallett 51108574Sjmallettstruct url_stat { 52108574Sjmallett off_t size; 53108574Sjmallett time_t atime; 54108574Sjmallett time_t mtime; 55108574Sjmallett}; 56108574Sjmallett 57181905Sedstruct url_ent { 58108574Sjmallett char name[MAXPATHLEN]; 59181905Sed struct url_stat stat; 60181905Sed}; 61108574Sjmallett 62181905Sed/* Recognized schemes */ 63108574Sjmallett#define SCHEME_FTP "ftp" 64108574Sjmallett#define SCHEME_HTTP "http" 65108574Sjmallett#define SCHEME_HTTPS "https" 66108574Sjmallett#define SCHEME_FILE "file" 67108574Sjmallett 68108574Sjmallett/* Error codes */ 69115631Sru#define FETCH_ABORT 1 70108574Sjmallett#define FETCH_AUTH 2 71108574Sjmallett#define FETCH_DOWN 3 72108574Sjmallett#define FETCH_EXISTS 4 73108574Sjmallett#define FETCH_FULL 5 74115631Sru#define FETCH_INFO 6 75181905Sed#define FETCH_MEMORY 7 76108574Sjmallett#define FETCH_MOVED 8 77108574Sjmallett#define FETCH_NETWORK 9 78108574Sjmallett#define FETCH_OK 10 79108574Sjmallett#define FETCH_PROTO 11 80108574Sjmallett#define FETCH_RESOLV 12 81115631Sru#define FETCH_SERVER 13 82108574Sjmallett#define FETCH_TEMP 14 83108574Sjmallett#define FETCH_TIMEOUT 15 84181905Sed#define FETCH_UNAVAIL 16 85108574Sjmallett#define FETCH_UNKNOWN 17 86108574Sjmallett#define FETCH_URL 18 87108574Sjmallett#define FETCH_VERBOSE 19 88108574Sjmallett 89108574Sjmallett/* FILE-specific functions */ 90108574SjmallettFILE *fetchXGetFile(struct url *, struct url_stat *, char *); 91108574SjmallettFILE *fetchGetFile(struct url *, char *); 92108574SjmallettFILE *fetchPutFile(struct url *, char *); 93115631Sruint fetchStatFile(struct url *, struct url_stat *, char *); 94108574Sjmallettstruct url_ent *fetchListFile(struct url *, char *); 95115631Sru 96108574Sjmallett/* HTTP-specific functions */ 97108574SjmallettFILE *fetchXGetHTTP(struct url *, struct url_stat *, char *); 98108574SjmallettFILE *fetchGetHTTP(struct url *, char *); 99108574SjmallettFILE *fetchPutHTTP(struct url *, char *); 100115631Sruint fetchStatHTTP(struct url *, struct url_stat *, char *); 101115631Srustruct url_ent *fetchListHTTP(struct url *, char *); 102181905Sed 103108574Sjmallett/* FTP-specific functions */ 104108574SjmallettFILE *fetchXGetFTP(struct url *, struct url_stat *, char *); 105240412SemasteFILE *fetchGetFTP(struct url *, char *); 106240412SemasteFILE *fetchPutFTP(struct url *, char *); 107108574Sjmallettint fetchStatFTP(struct url *, struct url_stat *, char *); 108108574Sjmallettstruct url_ent *fetchListFTP(struct url *, char *); 109108574Sjmallett 110108574Sjmallett/* Generic functions */ 111108574SjmallettFILE *fetchXGetURL(char *, struct url_stat *, char *); 112108574SjmallettFILE *fetchGetURL(char *, char *); 113181905SedFILE *fetchPutURL(char *, char *); 114181905Sedint fetchStatURL(char *, struct url_stat *, char *); 115181905Sedstruct url_ent *fetchListURL(char *, char *); 116115631SruFILE *fetchXGet(struct url *, struct url_stat *, char *); 117115631SruFILE *fetchGet(struct url *, char *); 118108574SjmallettFILE *fetchPut(struct url *, char *); 119108574Sjmallettint fetchStat(struct url *, struct url_stat *, char *); 120108574Sjmallettstruct url_ent *fetchList(struct url *, char *); 121108574Sjmallett 122108574Sjmallett/* URL parsing */ 123108574Sjmallettstruct url *fetchMakeURL(char *, char *, int, char *, char *, char *); 124108574Sjmallettstruct url *fetchParseURL(char *); 125108574Sjmallettvoid fetchFreeURL(struct url *); 126108574Sjmallett 127115631Sru/* Last error code */ 128108574Sjmallettextern int fetchLastErrCode; 129108574Sjmallett#define MAXERRSTRING 256 130108574Sjmallettextern char fetchLastErrString[MAXERRSTRING]; 131181905Sedextern int fetchTimeout; 132181905Sedextern int fetchRestartCalls; 133108574Sjmallett 134108574Sjmallett#endif 135108574Sjmallett