globus_common  17.11
globus_url.h
Go to the documentation of this file.
1 
2 #ifndef GLOBUS_URL_H
3 #define GLOBUS_URL_H
4 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 /* Supported URL Schemes */
34 typedef enum
35 {
54  GLOBUS_URL_SCHEME_SSHFTP,
58 
59 /*
60  Other schemes defined in RFCs but _not_ supported here are
61  'news', 'nntp', 'telnet', 'gopher', 'wais', 'mailto', and 'prospero'
62 */
63 
72 typedef struct
73 {
75  char *scheme;
76 
79 
80 
81  /*
82  * Other fields as seen in these known url schemes:
83  *
84  * ftp://[user[:password]@]host[:port]/[url_path]
85  * gsiftp://[user[:password]@]host[:port]/[url_path]
86  * http://host[:port]/url_path
87  * x-nexus://host:port
88  * x-gass-cache://url_path
89  * ldap://host[:port]/dn?attributes?scope?filter
90  * otherurl://host[:port]/url_path or
91  * otherurl://url_specific_part
92  */
93 
94  char *user;
95  char *password;
96  char *host;
98  unsigned short port;
100  char *url_path;
102  char *dn;
104  char *attributes;
106  char *scope;
107  char *filter;
115 } globus_url_t;
116 
117 /* Fill in the data structure pointed to by url */
118 int globus_url_parse(const char *url_string, globus_url_t *url);
119 
120 /* Fill in the data structure pointed to by url */
121 int globus_url_parse_rfc1738(const char *url_string, globus_url_t *url);
122 
123 /* Fill in the data structure pointed to by url */
124 int globus_url_parse_loose(const char *url_string, globus_url_t *url);
125 
126 /* Destroy the fields of the data structure pointed to by url */
128 
129 /* Create a copy of a globus_url_t structure */
130 int globus_url_copy(globus_url_t * dest, const globus_url_t * src);
131 
132 /* Find out the URL scheme type */
133 int globus_url_get_scheme(const char *url_string,
134  globus_url_scheme_t *scheme_type);
135 
136 
137 void
138 globus_url_string_hex_decode(
139  char * s);
140 
141 char *
142 globus_url_string_hex_encode(
143  const char * s,
144  const char * enc);
145 
146 /* Return conditions */
147 #define GLOBUS_URL_SUCCESS 0
148 #define GLOBUS_URL_ERROR_NULL_STRING -1
149 #define GLOBUS_URL_ERROR_NULL_URL -2
150 #define GLOBUS_URL_ERROR_BAD_SCHEME -3
151 #define GLOBUS_URL_ERROR_BAD_USER -4
152 #define GLOBUS_URL_ERROR_BAD_PASSWORD -5
153 #define GLOBUS_URL_ERROR_BAD_HOST -6
154 #define GLOBUS_URL_ERROR_BAD_PORT -7
155 #define GLOBUS_URL_ERROR_BAD_PATH -8
156 
157 /* for ldap URLs */
158 #define GLOBUS_URL_ERROR_BAD_DN -9
159 #define GLOBUS_URL_ERROR_BAD_ATTRIBUTES -10
160 #define GLOBUS_URL_ERROR_BAD_SCOPE -11
161 #define GLOBUS_URL_ERROR_BAD_FILTER -12
162 
163 /* when malloc fails */
164 #define GLOBUS_URL_ERROR_OUT_OF_MEMORY -13
165 
166 /* for nexus errors/former assertion failures */
167 #define GLOBUS_URL_ERROR_INTERNAL_ERROR -14
168 
169 #define GLOBUS_URL_TRUE 1
170 #define GLOBUS_URL_FALSE 0
171 
172 
173 #ifdef __cplusplus
174 }
175 #endif
176 
177 #endif /* GLOBUS_URL_H */
int globus_url_parse_loose(const char *url_string, globus_url_t *url)
Definition: globus_url.c:601
int globus_url_get_scheme(const char *url_string, globus_url_scheme_t *scheme_type)
Definition: globus_url.c:2111
int globus_url_parse(const char *url_string, globus_url_t *url)
Definition: globus_url.c:115
int globus_url_copy(globus_url_t *dest, const globus_url_t *src)
Definition: globus_url.c:2189
globus_url_scheme_t
URL Schemes.
Definition: globus_url.h:35
int globus_url_destroy(globus_url_t *url)
Definition: globus_url.c:806
int globus_url_parse_rfc1738(const char *url_string, globus_url_t *url)
Definition: globus_url.c:349
@ GLOBUS_URL_SCHEME_FILE
Definition: globus_url.h:47
@ GLOBUS_URL_NUM_SCHEMES
Definition: globus_url.h:56
@ GLOBUS_URL_SCHEME_GSIFTP
Definition: globus_url.h:39
@ GLOBUS_URL_SCHEME_X_NEXUS
Definition: globus_url.h:49
@ GLOBUS_URL_SCHEME_HTTP
Definition: globus_url.h:41
@ GLOBUS_URL_SCHEME_LDAP
Definition: globus_url.h:45
@ GLOBUS_URL_SCHEME_FTP
Definition: globus_url.h:37
@ GLOBUS_URL_SCHEME_HTTPS
Definition: globus_url.h:43
@ GLOBUS_URL_SCHEME_UNKNOWN
Definition: globus_url.h:53
@ GLOBUS_URL_SCHEME_X_GASS_CACHE
Definition: globus_url.h:51
Parsed URLs.
Definition: globus_url.h:73
unsigned short port
Definition: globus_url.h:98
char * url_path
Definition: globus_url.h:100
char * attributes
Definition: globus_url.h:104
char * url_specific_part
Definition: globus_url.h:110
char * host
Definition: globus_url.h:96
char * dn
Definition: globus_url.h:102
char * user
Definition: globus_url.h:94
char * password
Definition: globus_url.h:95
char * scope
Definition: globus_url.h:106
char * scheme
Definition: globus_url.h:75
globus_url_scheme_t scheme_type
Definition: globus_url.h:78
char * filter
Definition: globus_url.h:107