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