#include <stdio.h>
#include <stdlib.h>
-#ifdef HAVE_STRING_H
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include <sys/types.h>
+#include <string.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include "url.h"
#include "host.h" /* for is_valid_ipv6_address */
-#ifndef errno
-extern int errno;
-#endif
-
struct scheme_data
{
const char *name;
/* Forward declarations: */
-static int path_simplify PARAMS ((char *));
+static int path_simplify (char *);
\f
/* Support for escaping and unescaping of URL strings. */
}
}
\f
-static void split_path PARAMS ((const char *, char **, char **));
+static void split_path (const char *, char **, char **);
/* Like strpbrk, with the exception that it returns the pointer to the
terminating zero (end-of-string aka "eos") if no matching character
if (scheme == SCHEME_INVALID)
{
error_code = PE_UNSUPPORTED_SCHEME;
- goto err;
+ goto error;
}
url_encoded = reencode_escapes (url);
if (!host_e)
{
error_code = PE_UNTERMINATED_IPV6_ADDRESS;
- goto err;
+ goto error;
}
#ifdef ENABLE_IPV6
if (!is_valid_ipv6_address(host_b, host_e))
{
error_code = PE_INVALID_IPV6_ADDRESS;
- goto err;
+ goto error;
}
/* Continue parsing after the closing ']'. */
p = host_e + 1;
#else
error_code = PE_IPV6_NOT_SUPPORTED;
- goto err;
+ goto error;
#endif
}
else
if (host_b == host_e)
{
error_code = PE_EMPTY_HOST;
- goto err;
+ goto error;
}
port = scheme_default_port (scheme);
/* http://host:12randomgarbage/blah */
/* ^ */
error_code = PE_BAD_PORT_NUMBER;
- goto err;
+ goto error;
}
port = 10 * port + (*pp - '0');
/* Check for too large port numbers here, before we have
if (port > 65535)
{
error_code = PE_BAD_PORT_NUMBER;
- goto err;
+ goto error;
}
}
}
if (!parse_credentials (uname_b, uname_e - 1, &user, &passwd))
{
error_code = PE_INVALID_USER_NAME;
- goto err;
+ goto error;
}
}
return u;
- err:
+ error:
/* Cleanup in case of error: */
if (url_encoded && url_encoded != url)
xfree (url_encoded);