#ifndef UTILS_H_
#define UTILS_H_

#include <arpa/inet.h>

#include "flag_control.h"
#include "structures.h"

#define HTTP_OK 0
#define HTTP_ERROR 1

int search_dir(char* path);
void resolve_path(REQUEST* request, CGI* cgi, struct flag_control* fc,
                  char* dir);
void try_expand_home(char* path);
ssize_t safe_write(int fd, const void* buf, size_t nbytes);
void get_full_main_dir_path(REQUEST* request, const char* dir_arg,
                            char* full_request_path, int full_path_bufsize);
void get_full_cgi_path(CGI* cgi, const char* cgi_dir, char* full_request_path,
                       int full_path_bufsize);
void strip_nl_cr(char* string);
void send_status(REQUEST* request, int status);
char* format_time_GMT(void);
int parse_input(REQUEST* request, char* input);
int write_crlf_to_request(REQUEST* request);
void ignore_sigpipe();
void restore_default_sigpipe();
void try_remove_dots(char* path);

#ifdef __linux__
extern const char* process_name;
const char* getprogname();
#endif

#endif