/* Load configfile from directories */ int load_user_config(t_session *session) { char *search, *conffile; int length, result; if (session->file_on_disk == NULL) { return 0; } search = session->file_on_disk; while (*search != '\0') { if (*search == '/') { length = search - session->file_on_disk + 1; if ((conffile = (char*)malloc(length + 10)) == NULL) { return -1; } else { memcpy(conffile, session->file_on_disk, length); memcpy(conffile + length, ".hiawatha\0", 10); result = read_user_configfile(conffile, session->host, &(session->tempdata)); if (result != 0) { log_file_error(session, conffile, "error in configuration file on line %d", result); free(conffile); return -1; } free(conffile); } } search++; } return 0; }
/* Load configfile from directories */ int load_user_config(t_session *session) { char *search, *conffile; size_t length; int result; t_user_config_mode read_mode; if (session->file_on_disk == NULL) { return 0; } else if ((length = strlen(session->file_on_disk)) <= 1) { return 0; } else if ((conffile = (char*)malloc(length + 10)) == NULL) { return -1; } search = session->file_on_disk + 1; while (*search != '\0') { if (*search == '/') { length = search - session->file_on_disk + 1; if (length - 1 != session->host->website_root_len) { read_mode = non_root_config; } else if (memcmp(session->file_on_disk, session->host->website_root, length - 1) != 0) { read_mode = non_root_config; } else { read_mode = ignore_root_config; } memcpy(conffile, session->file_on_disk, length); memcpy(conffile + length, ".hiawatha\0", 10); result = read_user_configfile(conffile, session->host, &(session->tempdata), read_mode); if (result != 0) { log_file_error(session, conffile, "error in configuration file on line %d", result); free(conffile); return -1; } } search++; } free(conffile); return 0; }
int load_user_root_config(t_session *session) { char *conffile; int result; if ((conffile = malloc(session->host->website_root_len + 11)) == NULL) { return -1; } memcpy(conffile, session->host->website_root, session->host->website_root_len); memcpy(conffile + session->host->website_root_len, "/.hiawatha\0", 11); if ((result = read_user_configfile(conffile, session->host, &(session->tempdata), only_root_config)) != 0) { log_file_error(session, conffile, "error in configuration file on line %d", result); result = -1; } free(conffile); return result; }