/usr/include/python2.7/mx/mxURL.h is in python-egenix-mx-base-dev 3.2.9-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | #ifndef MXURL_H
#define MXURL_H
/*
mxURL -- A URL datatype.
Copyright (c) 2000, Marc-Andre Lemburg; mailto:mal@lemburg.com
Copyright (c) 2000-2015, eGenix.com Software GmbH; mailto:info@egenix.com
See the documentation for further copyright information or contact
the author (mailto:mal@lemburg.com).
*/
/* The extension's name; must be the same as the init function's suffix */
#define MXURL_MODULE "mxURL"
/* Name of the package or module that provides the extensions C API.
If the extension is used inside a package, provide the complete
import path. */
#define MXURL_API_MODULE "mx.URL"
/* --- No servicable parts below this line ----------------------*/
/* Include generic mx extension header file */
#include "mxh.h"
#ifdef MX_BUILDING_MXURL
# define MXURL_EXTERNALIZE MX_EXPORT
#else
# define MXURL_EXTERNALIZE MX_IMPORT
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Flags for some APIs: Normalize the path */
#define NORMALIZE_URL 1
#define RAW_URL 0
/* --- URL Object ------------------------------------------*/
typedef struct {
PyObject_HEAD
PyObject *url; /* (Normalized) URL as Python string;
will always be none-NULL */
PyObject *scheme; /* scheme string or NULL (for: not
given); it is always converted to
lower case */
/* Indices into PyString_AS_STRING(url), with length; if a part is
not used by the scheme, then the char-index and length are set
to 0, otherwise the index points into PyString_AS_STRING(url)
and the length indicates how many characters make up that
field. */
Py_ssize_t netloc; /* network location */
Py_ssize_t netloc_len;
Py_ssize_t path; /* path */
Py_ssize_t path_len;
Py_ssize_t params; /* parameters */
Py_ssize_t params_len;
Py_ssize_t query; /* query */
Py_ssize_t query_len;
Py_ssize_t fragment; /* fragment */
Py_ssize_t fragment_len;
/* Flags */
short path_normalized; /* Is path normalized ? */
} mxURLObject;
/* Type checking macro */
#define mxURL_Check(v) \
(((mxURLObject *)(v))->ob_type == mxURL.URL_Type)
/* --- C API ----------------------------------------------------*/
/* C API for usage by other Python modules */
typedef struct {
/* Type object for URL() */
PyTypeObject *URL_Type;
/* Create a new URL object from str. If normalize is true the URL
is normalized first */
mxURLObject *(*mxURL_FromString)(char *str,
int normalize);
/* Return a pointer to the underlying URL string; the string may *not*
be modified ! */
char *(*mxURL_AsString)(mxURLObject *url);
/* Create a new URL object from the given 0-terminated strings.
If normalize is true the URL is normalized first */
mxURLObject *(*mxURL_FromBrokenDown)(char *scheme,
char *netloc,
char *path,
char *params,
char *query,
char *fragment,
int normalize);
/* Create a new URL object from url but with normalized path. */
mxURLObject *(*mxURL_NormalizedFromURL)(mxURLObject *url);
} mxURLModule_APIObject;
#ifndef MX_BUILDING_MXURL
/* Interfacestructure to C API for other modules.
Call mxURL_ImportModuleAPI() to initialize this
structure. After that usage is simple:
PyObject *v;
v = mxURL.URL_New("http://www.lemburg.com/");
if (!v)
goto onError;
...
*/
static
mxURLModule_APIObject mxURL;
/* You *must* call this before using any of the functions in
mxURL and check its outcome; otherwise all accesses will
result in a segfault. Returns 0 on success. */
#ifndef DPRINTF
# define DPRINTF if (0) printf
#endif
static
int mxURL_ImportModuleAndAPI(void)
{
PyObject *mod = 0, *v = 0;
void *api;
DPRINTF("Importing the %s C API...\n",MXURL_API_MODULE);
mod = PyImport_ImportModule(MXURL_API_MODULE);
if (mod == NULL)
goto onError;
DPRINTF(" module found\n");
v = PyObject_GetAttrString(mod,MXURL_MODULE"API");
if (v == NULL)
goto onError;
Py_CLEAR(mod);
DPRINTF(" API object found\n");
api = PyCObject_AsVoidPtr(v);
if (api == NULL)
goto onError;
Py_CLEAR(v);
memcpy(&mxURL,api,sizeof(mxURL));
DPRINTF(" API object initialized.\n");
return 0;
onError:
DPRINTF(" not found.\n");
Py_XDECREF(mod);
Py_XDECREF(v);
return -1;
}
#endif
/* EOF */
#ifdef __cplusplus
}
#endif
#endif
|