X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Furl.h;h=9808b54024c21ab2f4aa3533613dbd32a3745967;hb=d5be8ecca466601bda9b81c28a79077fbda6ccde;hp=bfe78426a688791ff1e5d049719fe824f601f001;hpb=6e598c81e36a23ae6c0651fab303a129de68522c;p=wget diff --git a/src/url.h b/src/url.h index bfe78426..9808b540 100644 --- a/src/url.h +++ b/src/url.h @@ -1,47 +1,64 @@ /* Declarations for url.c. Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. -This file is part of Wget. +This file is part of GNU Wget. -This program is free software; you can redistribute it and/or modify +GNU Wget is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. -This program is distributed in the hope that it will be useful, +GNU Wget is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software +along with Wget; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef URL_H #define URL_H -/* If the string contains unsafe characters, duplicate it with - encode_string, otherwise just copy it with strdup. */ -#define CLEANDUP(x) (contains_unsafe (x) ? encode_string (x) : xstrdup (x)) +/* Default port definitions */ +#define DEFAULT_HTTP_PORT 80 +#define DEFAULT_FTP_PORT 21 +#define DEFAULT_HTTPS_PORT 443 + +/* Note: the ordering here is related to the order of elements in + `supported_schemes' in url.c. */ + +enum url_scheme { + SCHEME_HTTP, +#ifdef HAVE_SSL + SCHEME_HTTPS, +#endif + SCHEME_FTP, + SCHEME_INVALID +}; /* Structure containing info on a URL. */ -struct urlinfo +struct url { - char *url; /* Unchanged URL */ - uerr_t proto; /* URL protocol */ + char *url; /* Original URL */ + enum url_scheme scheme; /* URL scheme */ + char *host; /* Extracted hostname */ - unsigned short port; - char ftp_type; - char *path, *dir, *file, *qstring; - /* Path, dir, file, and query string - (properly decoded) */ - char *user, *passwd; /* Username and password */ - struct urlinfo *proxy; /* The exact string to pass to proxy - server */ - char *referer; /* The source from which the request - URI was obtained */ - char *local; /* The local filename of the URL - document */ + int port; /* Port number */ + + /* URL components (URL-quoted). */ + char *path; + char *params; + char *query; + char *fragment; + + /* Extracted path info (unquoted). */ + char *dir; + char *file; + + /* Username and password (unquoted). */ + char *user; + char *passwd; }; enum convert_options { @@ -91,32 +108,33 @@ typedef enum /* Function declarations */ -int skip_url PARAMS ((const char *)); - -int contains_unsafe PARAMS ((const char *)); char *encode_string PARAMS ((const char *)); -struct urlinfo *newurl PARAMS ((void)); -void freeurl PARAMS ((struct urlinfo *, int)); -uerr_t urlproto PARAMS ((const char *)); -int skip_proto PARAMS ((const char *)); -int has_proto PARAMS ((const char *)); -int skip_uname PARAMS ((const char *)); +struct url *url_parse PARAMS ((const char *, int *)); +const char *url_error PARAMS ((int)); +char *url_full_path PARAMS ((const struct url *)); +void url_set_dir PARAMS ((struct url *, const char *)); +void url_set_file PARAMS ((struct url *, const char *)); +void url_free PARAMS ((struct url *)); + +enum url_scheme url_scheme PARAMS ((const char *)); +int url_skip_scheme PARAMS ((const char *)); +int url_has_scheme PARAMS ((const char *)); +int scheme_default_port PARAMS ((enum url_scheme)); -uerr_t parseurl PARAMS ((const char *, struct urlinfo *, int)); -char *str_url PARAMS ((const struct urlinfo *, int)); -int url_equal PARAMS ((const char *, const char *)); +int url_skip_uname PARAMS ((const char *)); + +char *url_string PARAMS ((const struct url *, int)); urlpos *get_urls_file PARAMS ((const char *)); urlpos *get_urls_html PARAMS ((const char *, const char *, int, int *)); void free_urlpos PARAMS ((urlpos *)); -char *url_concat PARAMS ((const char *, const char *)); +char *uri_merge PARAMS ((const char *, const char *)); void rotate_backups PARAMS ((const char *)); int mkalldirs PARAMS ((const char *)); -char *url_filename PARAMS ((const struct urlinfo *)); -void opt_url PARAMS ((struct urlinfo *)); +char *url_filename PARAMS ((const struct url *)); char *getproxy PARAMS ((uerr_t)); int no_proxy_match PARAMS ((const char *, const char **)); @@ -126,4 +144,6 @@ urlpos *add_url PARAMS ((urlpos *, const char *, const char *)); downloaded_file_t downloaded_file PARAMS ((downloaded_file_t, const char *)); +char *rewrite_shorthand_url PARAMS ((const char *)); + #endif /* URL_H */