static char rcsid[] = "@(#)$Id: no_url.c,v 1.5 2006/06/25 10:41:05 hurtta Exp $";
/******************************************************************************
* The Elm (ME+) Mail System - $Revision: 1.5 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+elm@posti.FMI.FI>
* or Kari Hurtta <elm@elmme-mailer.org>
*****************************************************************************/
#include "def_url.h"
#define URL_no_url_magic 0xEC05
struct no_url {
unsigned short magic; /* URL_no_url_magic */
struct string * stored;
struct string * params;
struct string * query;
};
#if ANSI_C
#define S_(x) static x;
#else
#define S_(x)
#endif
S_(uh_init_url uh_init_NO_URL)
static void uh_init_NO_URL P_((struct url *url));
static void uh_init_NO_URL(url)
struct url *url;
{
url->u.NO_URL = safe_malloc (sizeof (* url->u.NO_URL));
/* bzero is defined hdrs/defs.h */
bzero((void *)url->u.NO_URL,sizeof (* url->u.NO_URL));
url->u.NO_URL->magic = URL_no_url_magic;
url->u.NO_URL->stored = NULL;
url->u.NO_URL->params = NULL;
url->u.NO_URL->query = NULL;
}
S_(uh_free_url uh_free_NO_URL)
static void uh_free_NO_URL P_((struct url *url));
static void uh_free_NO_URL(url)
struct url *url;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_free_NO_URL",
"bad magic number",0);
if (url->u.NO_URL->stored)
free_string(& (url->u.NO_URL->stored));
if (url->u.NO_URL->params)
free_string(& (url->u.NO_URL->params));
if (url->u.NO_URL->query)
free_string(& (url->u.NO_URL->query));
url->u.NO_URL->magic = 0; /* Invalidate */
free(url->u.NO_URL);
url->u.NO_URL = NULL;
}
S_(uh_parse_url_not_path uh_parse_NO_URL_not_path)
static int uh_parse_NO_URL_not_path P_((struct url *url,
struct string *scheme_pesifix,
struct header_errors **header_error));
static int uh_parse_NO_URL_not_path(url,scheme_pesifix,header_error)
struct url *url;
struct string *scheme_pesifix;
struct header_errors **header_error;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_parse_NO_URL_not_path",
"bad magic number",0);
url->u.NO_URL->stored = dup_string(scheme_pesifix);
return 1;
}
S_(uh_dup_url_not_path uh_dup_NO_URL_not_path)
static int uh_dup_NO_URL_not_path P_((struct url *url,
struct url *source));
static int uh_dup_NO_URL_not_path(url,source)
struct url *url;
struct url *source;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_dup_NO_URL_not_path",
"bad magic number (url)",0);
if (URL_no_url_magic != source->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_dup_NO_URL_not_path",
"bad magic number (source)",0);
if (source->u.NO_URL->stored)
url->u.NO_URL->stored = dup_string(source->u.NO_URL->stored);
return 1;
}
S_(uh_parse_url_params uh_parse_NO_URL_params)
static int uh_parse_NO_URL_params P_((struct url *url,
struct string *scheme_pesifix,
struct header_errors **header_error));
static int uh_parse_NO_URL_params(url,scheme_pesifix,header_error)
struct url *url;
struct string *scheme_pesifix;
struct header_errors **header_error;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_parse_NO_URL_params",
"bad magic number",0);
url->u.NO_URL->params = dup_string(scheme_pesifix);
return 1;
}
S_(uh_dup_url_params uh_dup_NO_URL_params)
static int uh_dup_NO_URL_params P_((struct url *url,
struct url *source));
static int uh_dup_NO_URL_params(url,source)
struct url *url;
struct url *source;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_dup_NO_URL_params",
"bad magic number (url)",0);
if (URL_no_url_magic != source->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_dup_NO_URL_params",
"bad magic number (source)",0);
if (source->u.NO_URL->params)
url->u.NO_URL->params = dup_string(source->u.NO_URL->params);
return 1;
}
S_(uh_parse_url_query uh_parse_NO_URL_query)
static int uh_parse_NO_URL_query P_((struct url *url,
struct string *scheme_pesifix,
struct header_errors **header_error));
static int uh_parse_NO_URL_query(url,scheme_pesifix,header_error)
struct url *url;
struct string *scheme_pesifix;
struct header_errors **header_error;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_parse_NO_URL_query",
"bad magic number",0);
url->u.NO_URL->query = dup_string(scheme_pesifix);
return 1;
}
S_(uh_dup_url_query uh_dup_NO_URL_query)
static int uh_dup_NO_URL_query P_((struct url *url,
struct url *source));
static int uh_dup_NO_URL_query(url,source)
struct url *url;
struct url *source;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_dup_NO_URL_query",
"bad magic number (url)",0);
if (URL_no_url_magic != source->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_dup_NO_URL_query",
"bad magic number (source)",0);
if (source->u.NO_URL->query)
url->u.NO_URL->query = dup_string(source->u.NO_URL->query);
return 1;
}
S_(uh_set_mailing_headers_from_url uh_set_mailing_headers_from_NO_URL)
static int uh_set_mailing_headers_from_NO_URL P_((struct mailing_headers *hdrs,
const struct url *url,
struct mailer_info
*mailer_info));
static int uh_set_mailing_headers_from_NO_URL(hdrs,url,mailer_info)
struct mailing_headers *hdrs;
CONST struct url *url;
struct mailer_info *mailer_info;
{
return 0;
}
S_(uh_get_body_string_from_url uh_get_body_string_from_NO_URL)
static CONST struct string * uh_get_body_string_from_NO_URL P_((CONST struct
url *url,
int *errors));
static CONST struct string * uh_get_body_string_from_NO_URL(url,errors)
const struct url *url;
int *errors;
{
return NULL;
}
S_(uh_not_path_to_raw_url uh_not_path_to_raw_NO_URL)
static struct string * uh_not_path_to_raw_NO_URL P_((const struct url *url));
static struct string * uh_not_path_to_raw_NO_URL(url)
CONST struct url *url;
{
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_not_path_to_raw_NO_URL",
"bad magic number",0);
if (url->u.NO_URL->stored)
return dup_string(url->u.NO_URL->stored);
return NULL;
}
S_(uh_params_to_raw_url uh_params_to_raw_NO_URL)
static int uh_params_to_raw_NO_URL P_((const struct url *url,
struct string **result));
static int uh_params_to_raw_NO_URL(url,result)
CONST struct url *url;
struct string **result;
{
*result = NULL;
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_params_to_raw_url",
"bad magic number",0);
if (url->u.NO_URL->params)
*result = dup_string(url->u.NO_URL->params);
return 1;
}
S_(uh_query_to_raw_url uh_query_to_raw_NO_URL)
static int uh_query_to_raw_NO_URL P_((const struct url *url,
struct string **result));
static int uh_query_to_raw_NO_URL(url,result)
CONST struct url *url;
struct string **result;
{
*result = NULL;
if (URL_no_url_magic != url->u.NO_URL->magic)
panic("URL PANIC",__FILE__,__LINE__,"uh_query_to_raw_NO_URL",
"bad magic number",0);
if (url->u.NO_URL->query)
*result = dup_string(url->u.NO_URL->query);
return 1;
}
S_(uh_get_folder_from_url uh_get_folder_from_NO_URL)
static struct folder_info * uh_get_folder_from_NO_URL P_((const struct url *url,
verify_remote_url_f * verify_remote));
static struct folder_info * uh_get_folder_from_NO_URL(url,verify_remote)
const struct url *url;
verify_remote_url_f * verify_remote;
{
return NULL;
}
struct url_handler NO_URL_HANDLER = {
URL_handler_magic,
0,
url_unknown,
uh_init_NO_URL,
uh_free_NO_URL,
uh_parse_NO_URL_not_path,
uh_dup_NO_URL_not_path,
uh_parse_NO_URL_params,
uh_dup_NO_URL_params,
uh_parse_NO_URL_query,
uh_dup_NO_URL_query,
uh_set_mailing_headers_from_NO_URL,
uh_get_body_string_from_NO_URL,
uh_not_path_to_raw_NO_URL,
uh_params_to_raw_NO_URL,
uh_query_to_raw_NO_URL,
uh_get_folder_from_NO_URL,
get_url_type_default
};
/*
* Local Variables:
* mode:c
* c-basic-offset:4
* buffer-file-coding-system: iso-8859-1
* End:
*/
syntax highlighted by Code2HTML, v. 0.9.1