Merge pull request #71 from gmp216/lookup
Move lookup_variable from html-error.c to hashmap.c
This commit is contained in:
commit
302738dee5
@ -493,3 +493,24 @@ ssize_t hashmap_remove (hashmap_t map, const char *key)
|
|||||||
/* The key was not found, so return 0 */
|
/* The key was not found, so return 0 */
|
||||||
return deleted;
|
return deleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Look up the value for a variable.
|
||||||
|
*/
|
||||||
|
char *lookup_variable (hashmap_t map, const char *varname)
|
||||||
|
{
|
||||||
|
hashmap_iter result_iter;
|
||||||
|
char *key;
|
||||||
|
char *data;
|
||||||
|
|
||||||
|
result_iter = hashmap_find (map, varname);
|
||||||
|
|
||||||
|
if (hashmap_is_end (map, result_iter))
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
if (hashmap_return_entry (map, result_iter,
|
||||||
|
&key, (void **) &data) < 0)
|
||||||
|
return (NULL);
|
||||||
|
|
||||||
|
return (data);
|
||||||
|
}
|
||||||
|
@ -117,4 +117,9 @@ extern ssize_t hashmap_search (hashmap_t map, const char *key);
|
|||||||
*/
|
*/
|
||||||
extern ssize_t hashmap_remove (hashmap_t map, const char *key);
|
extern ssize_t hashmap_remove (hashmap_t map, const char *key);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Look up the value for a variable.
|
||||||
|
*/
|
||||||
|
extern char *lookup_variable (hashmap_t map, const char *varname);
|
||||||
|
|
||||||
#endif /* _HASHMAP_H */
|
#endif /* _HASHMAP_H */
|
||||||
|
@ -83,27 +83,6 @@ static char *get_html_file (unsigned int errornum)
|
|||||||
return (val);
|
return (val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Look up the value for a variable.
|
|
||||||
*/
|
|
||||||
static char *lookup_variable (struct conn_s *connptr, const char *varname)
|
|
||||||
{
|
|
||||||
hashmap_iter result_iter;
|
|
||||||
char *key;
|
|
||||||
char *data;
|
|
||||||
|
|
||||||
result_iter = hashmap_find (connptr->error_variables, varname);
|
|
||||||
|
|
||||||
if (hashmap_is_end (connptr->error_variables, result_iter))
|
|
||||||
return (NULL);
|
|
||||||
|
|
||||||
if (hashmap_return_entry (connptr->error_variables, result_iter,
|
|
||||||
&key, (void **) &data) < 0)
|
|
||||||
return (NULL);
|
|
||||||
|
|
||||||
return (data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send an already-opened file to the client with variable substitution.
|
* Send an already-opened file to the client with variable substitution.
|
||||||
*/
|
*/
|
||||||
@ -126,7 +105,7 @@ send_html_file (FILE *infile, struct conn_s *connptr)
|
|||||||
if (in_variable) {
|
if (in_variable) {
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
varval = (const char *)
|
varval = (const char *)
|
||||||
lookup_variable (connptr,
|
lookup_variable (connptr->error_variables,
|
||||||
varstart);
|
varstart);
|
||||||
if (!varval)
|
if (!varval)
|
||||||
varval = "(unknown)";
|
varval = "(unknown)";
|
||||||
@ -212,7 +191,7 @@ int send_http_error_message (struct conn_s *connptr)
|
|||||||
|
|
||||||
error_file = get_html_file (connptr->error_number);
|
error_file = get_html_file (connptr->error_number);
|
||||||
if (!(infile = fopen (error_file, "r"))) {
|
if (!(infile = fopen (error_file, "r"))) {
|
||||||
char *detail = lookup_variable (connptr, "detail");
|
char *detail = lookup_variable (connptr->error_variables, "detail");
|
||||||
return (write_message (connptr->client_fd, fallback_error,
|
return (write_message (connptr->client_fd, fallback_error,
|
||||||
connptr->error_number,
|
connptr->error_number,
|
||||||
connptr->error_string,
|
connptr->error_string,
|
||||||
|
Loading…
Reference in New Issue
Block a user