Merge pull request #71 from gmp216/lookup

Move lookup_variable from html-error.c to hashmap.c
This commit is contained in:
Michael Adam 2017-01-04 13:59:14 +01:00 committed by GitHub
commit 302738dee5
3 changed files with 28 additions and 23 deletions

View File

@ -493,3 +493,24 @@ ssize_t hashmap_remove (hashmap_t map, const char *key)
/* The key was not found, so return 0 */
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);
}

View File

@ -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);
/*
* Look up the value for a variable.
*/
extern char *lookup_variable (hashmap_t map, const char *varname);
#endif /* _HASHMAP_H */

View File

@ -83,27 +83,6 @@ static char *get_html_file (unsigned int errornum)
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.
*/
@ -126,7 +105,7 @@ send_html_file (FILE *infile, struct conn_s *connptr)
if (in_variable) {
*p = '\0';
varval = (const char *)
lookup_variable (connptr,
lookup_variable (connptr->error_variables,
varstart);
if (!varval)
varval = "(unknown)";
@ -212,7 +191,7 @@ int send_http_error_message (struct conn_s *connptr)
error_file = get_html_file (connptr->error_number);
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,
connptr->error_number,
connptr->error_string,