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