fetch.h revision 268900
162765Smarkm/*- 262765Smarkm * Copyright (c) 1998-2004 Dag-Erling Sm��rgrav 362765Smarkm * All rights reserved. 462765Smarkm * 562765Smarkm * Redistribution and use in source and binary forms, with or without 662765Smarkm * modification, are permitted provided that the following conditions 762765Smarkm * are met: 862765Smarkm * 1. Redistributions of source code must retain the above copyright 962765Smarkm * notice, this list of conditions and the following disclaimer 1062765Smarkm * in this position and unchanged. 1162765Smarkm * 2. Redistributions in binary form must reproduce the above copyright 1262765Smarkm * notice, this list of conditions and the following disclaimer in the 1362765Smarkm * documentation and/or other materials provided with the distribution. 1462765Smarkm * 3. The name of the author may not be used to endorse or promote products 1562765Smarkm * derived from this software without specific prior written permission 1662765Smarkm * 1762765Smarkm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1862765Smarkm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1962765Smarkm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2062765Smarkm * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2162765Smarkm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2262765Smarkm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2362765Smarkm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2462765Smarkm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2562765Smarkm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2662765Smarkm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2762765Smarkm * 2862765Smarkm * $FreeBSD: stable/10/lib/libfetch/fetch.h 268900 2014-07-20 00:29:41Z bapt $ 2962765Smarkm */ 3062765Smarkm 3162765Smarkm#ifndef _FETCH_H_INCLUDED 3262765Smarkm#define _FETCH_H_INCLUDED 3365686Smarkm 3474914Sjhb#define _LIBFETCH_VER "libfetch/2.0" 3567365Sjhb 3667112Smarkm#define URL_SCHEMELEN 16 3770834Swollman#define URL_USERLEN 256 3874741Smarkm#define URL_PWDLEN 256 3962765Smarkm 4069168Smarkmstruct url { 4169168Smarkm char scheme[URL_SCHEMELEN+1]; 4269168Smarkm char user[URL_USERLEN+1]; 4374072Smarkm char pwd[URL_PWDLEN+1]; 4462765Smarkm char host[MAXHOSTNAMELEN+1]; 4567112Smarkm int port; 4667112Smarkm char *doc; 4772667Smarkm off_t offset; 4872667Smarkm size_t length; 4972667Smarkm time_t ims_time; 5063771Smarkm}; 5169168Smarkm 5263771Smarkmstruct url_stat { 5369168Smarkm off_t size; 5467112Smarkm time_t atime; 5562765Smarkm time_t mtime; 5662765Smarkm}; 5762765Smarkm 5869168Smarkmstruct url_ent { 5962765Smarkm char name[PATH_MAX]; 6067112Smarkm struct url_stat stat; 6167112Smarkm}; 6262765Smarkm 6362765Smarkm/* Recognized schemes */ 6462765Smarkm#define SCHEME_FTP "ftp" 6562765Smarkm#define SCHEME_HTTP "http" 6662765Smarkm#define SCHEME_HTTPS "https" 6762765Smarkm#define SCHEME_FILE "file" 6867112Smarkm 6967112Smarkm/* Error codes */ 7062765Smarkm#define FETCH_ABORT 1 7162765Smarkm#define FETCH_AUTH 2 7263771Smarkm#define FETCH_DOWN 3 7363771Smarkm#define FETCH_EXISTS 4 7463771Smarkm#define FETCH_FULL 5 7563771Smarkm#define FETCH_INFO 6 7663771Smarkm#define FETCH_MEMORY 7 7762765Smarkm#define FETCH_MOVED 8 7863855Smarkm#define FETCH_NETWORK 9 7962765Smarkm#define FETCH_OK 10 8069168Smarkm#define FETCH_PROTO 11 8169168Smarkm#define FETCH_RESOLV 12 8262765Smarkm#define FETCH_SERVER 13 8365686Smarkm#define FETCH_TEMP 14 8467112Smarkm#define FETCH_TIMEOUT 15 8567112Smarkm#define FETCH_UNAVAIL 16 8667112Smarkm#define FETCH_UNKNOWN 17 8767112Smarkm#define FETCH_URL 18 8867112Smarkm#define FETCH_VERBOSE 19 8967112Smarkm 9067112Smarkm__BEGIN_DECLS 9167112Smarkm 9267112Smarkm/* FILE-specific functions */ 9367112SmarkmFILE *fetchXGetFile(struct url *, struct url_stat *, const char *); 9465686SmarkmFILE *fetchGetFile(struct url *, const char *); 9567112SmarkmFILE *fetchPutFile(struct url *, const char *); 9667112Smarkmint fetchStatFile(struct url *, struct url_stat *, const char *); 9765686Smarkmstruct url_ent *fetchListFile(struct url *, const char *); 9867112Smarkm 9967112Smarkm/* HTTP-specific functions */ 10067112SmarkmFILE *fetchXGetHTTP(struct url *, struct url_stat *, const char *); 10167112SmarkmFILE *fetchGetHTTP(struct url *, const char *); 10267112SmarkmFILE *fetchPutHTTP(struct url *, const char *); 10369168Smarkmint fetchStatHTTP(struct url *, struct url_stat *, const char *); 10467112Smarkmstruct url_ent *fetchListHTTP(struct url *, const char *); 10569168SmarkmFILE *fetchReqHTTP(struct url *, const char *, const char *, 10669168Smarkm const char *, const char *); 10767112Smarkm 10867112Smarkm/* FTP-specific functions */ 10967112SmarkmFILE *fetchXGetFTP(struct url *, struct url_stat *, const char *); 11067112SmarkmFILE *fetchGetFTP(struct url *, const char *); 11167112SmarkmFILE *fetchPutFTP(struct url *, const char *); 11267112Smarkmint fetchStatFTP(struct url *, struct url_stat *, const char *); 11367112Smarkmstruct url_ent *fetchListFTP(struct url *, const char *); 11467112Smarkm 11567112Smarkm/* Generic functions */ 11665686SmarkmFILE *fetchXGetURL(const char *, struct url_stat *, const char *); 11765686SmarkmFILE *fetchGetURL(const char *, const char *); 11867112SmarkmFILE *fetchPutURL(const char *, const char *); 11967112Smarkmint fetchStatURL(const char *, struct url_stat *, const char *); 12067112Smarkmstruct url_ent *fetchListURL(const char *, const char *); 12167112SmarkmFILE *fetchXGet(struct url *, struct url_stat *, const char *); 12267112SmarkmFILE *fetchGet(struct url *, const char *); 12367112SmarkmFILE *fetchPut(struct url *, const char *); 12465686Smarkmint fetchStat(struct url *, struct url_stat *, const char *); 12567112Smarkmstruct url_ent *fetchList(struct url *, const char *); 12665686Smarkm 12767112Smarkm/* URL parsing */ 12872200Sbmilekicstruct url *fetchMakeURL(const char *, const char *, int, 12967112Smarkm const char *, const char *, const char *); 13067112Smarkmstruct url *fetchParseURL(const char *); 13165686Smarkmvoid fetchFreeURL(struct url *); 132 133__END_DECLS 134 135/* Authentication */ 136typedef int (*auth_t)(struct url *); 137extern auth_t fetchAuthMethod; 138 139/* Last error code */ 140extern int fetchLastErrCode; 141#define MAXERRSTRING 256 142extern char fetchLastErrString[MAXERRSTRING]; 143 144/* I/O timeout */ 145extern int fetchTimeout; 146 147/* Restart interrupted syscalls */ 148extern int fetchRestartCalls; 149 150/* Extra verbosity */ 151extern int fetchDebug; 152 153#endif 154