Arguments::Arguments(const char* rqs) { obj_name = NULL; method_name = NULL; argc = 0; // This copy can be removed if we can assume the request string is // persistent and writable for the duration of the call strcpy(request, rqs); // Initial '/' char* p = request; if (*p != '/') return; p++; // Object Name p = search_arg(&obj_name, p, '/'); if (p == NULL) return; // Method Name p = search_arg(&method_name, p, ' '); if (p == NULL) return; // Arguments while (true) { argv[argc] = NULL; p = search_arg(&argv[argc], p, ' '); if (argv[argc] != NULL) argc++; if (p == NULL) break; } index = -1; }
Arguments::Arguments(const char* rqs) { obj_name = NULL; method_name = NULL; argc = 0; // This copy can be removed if we can assume the request string is // persistent and writable for the duration of the call strcpy(request, rqs); // Initial '/' char* p = request; if (*p != '/') return; p++; // Object Name p = search_arg(&obj_name, p, '/'); if (p == NULL) return; // Method Name char* p2 = search_arg(&method_name, p, ' '); //use p2 because i'll possibly need to search twice. if (p2 == NULL) { //If i can't find an argument with space, then try the null character. p2 = search_arg(&method_name,p,'\r'); if(p2 == NULL) { //if i can't find one will the null character either, return return; } else { //else, use it! p = p2; } } else { p = p2; } // Arguments while (true) { argv[argc] = NULL; p = search_arg(&argv[argc], p, ' '); if (argv[argc] != NULL) argc++; if (p == NULL) break; } index = -1; }