From c7bbf29a1bcaaf37e987ad2be6a40238def815a8 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Fri, 12 Aug 2022 18:16:49 +0200 Subject: [PATCH] NPOS macro --- memo.txt | 1 - srcs/Client.cpp | 8 ++++---- srcs/config/LocationConfig.hpp | 6 +++--- srcs/config/extraConfig.cpp | 14 +++++++------- srcs/config/parser.cpp | 26 +++++++++++++------------- srcs/utils.cpp | 18 +++++++++--------- srcs/webserv/cgi_script.cpp | 6 +++--- srcs/webserv/request.cpp | 3 ++- srcs/webserv/response.cpp | 4 ++-- 9 files changed, 43 insertions(+), 43 deletions(-) diff --git a/memo.txt b/memo.txt index 5ad3c53..c0c2abc 100644 --- a/memo.txt +++ b/memo.txt @@ -9,7 +9,6 @@ IN 42 SUBJECT AND/OR PRIORITY : - Ecrire des tests ! - handle redirection (Work, but weird behavior need deeper test) - _determine_location() review (New version to complete and test) -- replace std::string::npos with macro NPOS ? ----------------------------- Si ce n'est pas deja fait : - dans config, check erreur si port > 16bits diff --git a/srcs/Client.cpp b/srcs/Client.cpp index f0310e8..f064337 100644 --- a/srcs/Client.cpp +++ b/srcs/Client.cpp @@ -352,7 +352,7 @@ void Client::_parse_request_target( std::string target ) size_t pos; pos = target.find("?"); - if (pos != std::string::npos) + if (pos != NPOS) _request.query = target.substr(pos + 1); else _request.query = ""; @@ -368,11 +368,11 @@ void Client::_parse_request_fields() headers = raw_request; // delete first line pos = headers.find(CRLF); - if (pos != std::string::npos) + if (pos != NPOS) headers.erase(0, pos + std::string(CRLF).size()); // delete body part pos = headers.find(CRLF CRLF); - if (pos != std::string::npos) + if (pos != NPOS) headers.erase(pos); else { std::cerr << "err _parse_request_fields(): request header doesn't end with empty line\n"; @@ -396,7 +396,7 @@ void Client::_parse_port_hostname(std::string host) pos = host.find(':'); // port : - if (pos == std::string::npos) + if (pos == NPOS) _request.port = "4040"; // TODO: make equal to default port in config else _request.port = host.substr(pos); diff --git a/srcs/config/LocationConfig.hpp b/srcs/config/LocationConfig.hpp index 8168eea..b6d96b3 100644 --- a/srcs/config/LocationConfig.hpp +++ b/srcs/config/LocationConfig.hpp @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/07/23 16:08:00 by me #+# #+# */ -/* Updated: 2022/08/04 19:32:40 by erlazo ### ########.fr */ +/* Updated: 2022/08/12 18:12:23 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,7 +65,7 @@ public: int comp_rhs = 0; size_t tmp = 0; - while ((tmp = this->path.find_first_of("/", tmp)) != std::string::npos) + while ((tmp = this->path.find_first_of("/", tmp)) != NPOS) { ++tmp; ++comp_lhs; @@ -73,7 +73,7 @@ public: if (path[path.find_last_of("/") + 1] != '\0') ++comp_lhs; tmp = 0; - while ((tmp = rhs.path.find_first_of("/", tmp)) != std::string::npos) + while ((tmp = rhs.path.find_first_of("/", tmp)) != NPOS) { ++tmp; ++comp_rhs; diff --git a/srcs/config/extraConfig.cpp b/srcs/config/extraConfig.cpp index 25a1bdf..010bca9 100644 --- a/srcs/config/extraConfig.cpp +++ b/srcs/config/extraConfig.cpp @@ -13,10 +13,10 @@ std::string ConfigParser::_pre_set_val_check(const std::string key, \ // check values for ; at end and right number of words depending on key // std::cout << "pre check\n"; - if (key.find_first_of(";") != std::string::npos) + if (key.find_first_of(";") != NPOS) throw std::invalid_argument("bad config file arguments 2"); - if (value.find_first_of("\t") != std::string::npos) + if (value.find_first_of("\t") != NPOS) throw std::invalid_argument("why would you put tabs between values"); size_t i = value.find_first_of(";"); @@ -24,7 +24,7 @@ std::string ConfigParser::_pre_set_val_check(const std::string key, \ // you can't have just ; // and you can't have a ; not at the end or several ; // in theory value_find_last_of should find the only ; - if (i == std::string::npos || (value.find_last_not_of(" \n")) != i \ + if (i == NPOS || (value.find_last_not_of(" \n")) != i \ || value.compare(";") == 0) throw std::invalid_argument("bad config file arguments 4"); @@ -38,9 +38,9 @@ std::string ConfigParser::_get_first_word(size_t *curr) { size_t start; - if ((start = _content.find_first_not_of(" \t\n", *curr)) == std::string::npos) + if ((start = _content.find_first_not_of(" \t\n", *curr)) == NPOS) throw std::invalid_argument("bad config file arguments"); - if ((*curr = _content.find_first_of(" \t\n", start)) == std::string::npos) + if ((*curr = _content.find_first_of(" \t\n", start)) == NPOS) throw std::invalid_argument("bad config file arguments"); std::string key = _content.substr(start, *curr - start); @@ -53,9 +53,9 @@ std::string ConfigParser::_get_rest_of_line(size_t *curr) { size_t start; - if ((start = _content.find_first_not_of(" \t\n", *curr)) == std::string::npos) + if ((start = _content.find_first_not_of(" \t\n", *curr)) == NPOS) throw std::invalid_argument("bad config file arguments"); - if ((*curr = _content.find_first_of("\n", start)) == std::string::npos) + if ((*curr = _content.find_first_of("\n", start)) == NPOS) throw std::invalid_argument("bad config file arguments"); std::string values = _content.substr(start, *curr - start); diff --git a/srcs/config/parser.cpp b/srcs/config/parser.cpp index 6dc08a7..9dc09f4 100644 --- a/srcs/config/parser.cpp +++ b/srcs/config/parser.cpp @@ -24,10 +24,10 @@ ConfigParser::ConfigParser(const char* path) { getline(file, buf); // remove # comments here. - if ((comment = buf.find_first_of("#")) == std::string::npos) + if ((comment = buf.find_first_of("#")) == NPOS) { // remove empty lines, i think... - if ((buf.find_first_not_of(" \t")) != std::string::npos) + if ((buf.find_first_not_of(" \t")) != NPOS) _content.append(buf + '\n'); } else if (comment > 0 && (buf.find_first_not_of(" \t")) < comment) @@ -67,14 +67,14 @@ std::vector * ConfigParser::parse() size_t start = 0; size_t curr = _content.find_first_not_of(" \t\n", 0); - if (curr == std::string::npos) + if (curr == NPOS) throw std::invalid_argument("empty config file"); - while (curr != std::string::npos) + while (curr != NPOS) { - if ((start = _content.find_first_not_of(" \t\n", curr)) == std::string::npos) + if ((start = _content.find_first_not_of(" \t\n", curr)) == NPOS) throw std::invalid_argument("empty config file"); - if ((curr = _content.find_first_of(" \t\n", start)) == std::string::npos) + if ((curr = _content.find_first_of(" \t\n", start)) == NPOS) throw std::invalid_argument("empty config file"); std::string key = _content.substr(start, curr - start); if (key != "server") @@ -91,13 +91,13 @@ ServerConfig ConfigParser::_parse_server(size_t *start) size_t curr = _content.find_first_not_of(" \t\n", *start); ret.client_body_limit = 0; - if (curr == std::string::npos || _content[curr] != '{') + if (curr == NPOS || _content[curr] != '{') throw std::invalid_argument("bad config file syntax 1"); - if ((curr = _content.find_first_of(" \t\n", curr + 1)) == std::string::npos) + if ((curr = _content.find_first_of(" \t\n", curr + 1)) == NPOS) throw std::invalid_argument("bad config file syntax"); // are there other things to check for? - while (curr != std::string::npos) // here curr == { + 1 + while (curr != NPOS) // here curr == { + 1 { // so this moves curr to past the word... std::string key = _get_first_word(&curr); @@ -140,12 +140,12 @@ LocationConfig ConfigParser::_parse_location(size_t *start) curr = _content.find_first_not_of(" \t\n", curr); - if (curr == std::string::npos || _content[curr] != '{') + if (curr == NPOS || _content[curr] != '{') throw std::invalid_argument("bad config file syntax 2"); - if ((curr = _content.find_first_of(" \t\n", curr + 1)) == std::string::npos) + if ((curr = _content.find_first_of(" \t\n", curr + 1)) == NPOS) throw std::invalid_argument("bad config file syntax"); - while (curr != std::string::npos) + while (curr != NPOS) { // so this moves curr to past the word... std::string key = _get_first_word(&curr); @@ -192,7 +192,7 @@ void ConfigParser::_set_server_values(ServerConfig *server, \ else if (key == "listen" && size == 1 && server->host == "" \ && server->port == "") { - if (tmp_val[0].find_first_of(":") == std::string::npos) + if (tmp_val[0].find_first_of(":") == NPOS) { if (!::isNumeric(tmp_val[0])) throw std::invalid_argument("bad port number"); diff --git a/srcs/utils.cpp b/srcs/utils.cpp index 6b71864..c4536e0 100644 --- a/srcs/utils.cpp +++ b/srcs/utils.cpp @@ -38,11 +38,11 @@ std::vector size_t end = 0; size_t len = 0; - while (end != std::string::npos) + while (end != NPOS) { end = input.find(delim, start); len = end - start; - if (end == std::string::npos) + if (end == NPOS) len = end; tmp = input.substr(start, len); if (ctrim != '\0') @@ -60,13 +60,13 @@ std::string trim(std::string str, char del) // delete leadings del pos = str.find_first_not_of(del); - if (pos == std::string::npos) + if (pos == NPOS) pos = str.size(); str = str.substr(pos); // delete trailing del pos = str.find_last_not_of(del); - if (pos != std::string::npos) + if (pos != NPOS) str = str.substr(0, pos + 1); return str; @@ -184,7 +184,7 @@ void while (1) { pos = str.find(ori_substr, pos); - if (pos == std::string::npos) + if (pos == NPOS) break; str.replace(pos, ori_substr.size(), new_substr); pos += new_substr.size(); @@ -209,14 +209,14 @@ std::string size_t len; begin = str.rfind(delim, pos); - if (begin == std::string::npos) + if (begin == NPOS) begin = 0; else begin += delim.size(); end = str.find(delim, pos); len = end; - if (end != std::string::npos) + if (end != NPOS) len = end - begin; del_str = str.substr(begin, len); @@ -253,13 +253,13 @@ size_t for (it = list.begin(); it != it_end; it++) { pos = (*it).find(':'); - if (pos == std::string::npos) + if (pos == NPOS) { err++; continue; } key = (*it).substr(0, pos); - if ( key.find(' ') != std::string::npos ) + if ( key.find(' ') != NPOS ) { err++; continue; diff --git a/srcs/webserv/cgi_script.cpp b/srcs/webserv/cgi_script.cpp index 99568c5..fe81ff4 100644 --- a/srcs/webserv/cgi_script.cpp +++ b/srcs/webserv/cgi_script.cpp @@ -157,7 +157,7 @@ void Webserv::_check_script_status(Client *client, std::string & output) int status_pos; pos = output.find("Status:"); - if (pos != std::string::npos) + if (pos != NPOS) { status_pos = pos + std::string("Status:").size(); client->status = std::strtoul(output.c_str() + status_pos, NULL, 10); @@ -179,13 +179,13 @@ void Webserv::_check_script_fields(Client *client, std::string & output) // put server headers in map tmp = client->response; pos = tmp.find(CRLF CRLF); - if (pos != std::string::npos) + if (pos != NPOS) tmp.erase(pos); ::parse_http_headers(tmp, srv_fld); // put script headers in map tmp = output; pos = tmp.find(CRLF CRLF); - if (pos != std::string::npos) + if (pos != NPOS) tmp.erase(pos); ::parse_http_headers(tmp, scr_fld); // compare both map to supress duplicates diff --git a/srcs/webserv/request.cpp b/srcs/webserv/request.cpp index 09b5c6e..0799aa7 100644 --- a/srcs/webserv/request.cpp +++ b/srcs/webserv/request.cpp @@ -61,7 +61,8 @@ int Webserv::_read_request(Client *client) { if (client->get_rq_headers("Content-Type").empty() && client->get_rq_headers("Content-Length").empty() - && client->get_rq_headers("Transfer-Encoding").empty()) + // && client->get_rq_headers("Transfer-Encoding").empty() + ) return READ_COMPLETE; // No body case } else if (client->raw_request.size() > MAX_HEADER_SIZE) diff --git a/srcs/webserv/response.cpp b/srcs/webserv/response.cpp index 0584e57..436e478 100644 --- a/srcs/webserv/response.cpp +++ b/srcs/webserv/response.cpp @@ -133,7 +133,7 @@ void Webserv::_append_body(Client *client, const std::string &body, const std::s else { client->response.append(mime_type); - if (mime_type.find("text/") != std::string::npos) + if (mime_type.find("text/") != NPOS) client->response.append("; charset=UTF-8"); } client->response.append(CRLF); @@ -251,7 +251,7 @@ If we get a url that ends in / ignore the last / std::string Webserv::_determine_file_extension(const std::string &path) const { size_t dot_pos = path.rfind("."); - if (dot_pos != std::string::npos && dot_pos + 1 < path.size()) + if (dot_pos != NPOS && dot_pos + 1 < path.size()) return ( path.substr(dot_pos + 1) ); return (std::string("")); }