}
/**
- * @brief
+ * @brief Scans for `prefix` in `cmd`, when match copy remaining to `param`.
+ *
*
* @param cmd
* @param param
* @return true - when prefix match in the command
* @return false - when not
*/
-bool scan_parameter_str(const POOL_MEM &cmd, const char *prefix, POOL_MEM ¶m)
+bool scan_parameter_str(const char * cmd, const char *prefix, POOL_MEM ¶m)
{
if (prefix != NULL){
int len = strlen(prefix);
- if (strncmp(cmd.c_str(), prefix, len) == 0)
+ if (strncmp(cmd, prefix, len) == 0)
{
// prefix match, extract param
- pm_strcpy(param, cmd.c_str() + len);
+ pm_strcpy(param, cmd + len);
strip_trailing_newline(param.c_str());
return true;
}
bool parse_param(POOL_MEM ¶m, const char *pname, const char *name, char *value);
bool add_param_str(alist **list, const char *pname, const char *name, char *value);
-bool scan_parameter_str(const POOL_MEM &cmd, const char *prefix, POOL_MEM ¶m);
+bool scan_parameter_str(const char * cmd, const char *prefix, POOL_MEM ¶m);
+inline bool scan_parameter_str(const POOL_MEM &cmd, const char *prefix, POOL_MEM ¶m) { return scan_parameter_str(cmd.c_str(), prefix, param); }
#endif /* _PLUGINLIB_H_ */
\ No newline at end of file
ok(strcmp((char*)list->next(), "Kern") == 0, "check element Kern");
delete list;
- POOL_MEM cmd(PM_NAME);
+ POOL_MEM cmd1(PM_NAME);
POOL_MEM param(PM_NAME);
const char *prefix = "FNAME:";
const char *fname1 = "/etc/passwd";
- pm_strcpy(cmd, prefix);
- pm_strcat(cmd, fname1);
- pm_strcat(cmd, "\n");
- ok(scan_parameter_str(cmd, prefix, param), "check scan parameter str match");
+ pm_strcpy(cmd1, prefix);
+ pm_strcat(cmd1, fname1);
+ pm_strcat(cmd1, "\n");
+ ok(scan_parameter_str(cmd1, prefix, param), "check scan parameter str match");
ok(bstrcmp(param.c_str(), fname1) , "check scan parameter str param");
- nok(scan_parameter_str(cmd, "prefix", param), "check scan parameter str not match");
+ nok(scan_parameter_str(cmd1, "prefix", param), "check scan parameter str not match");
const char *fname2 = "/home/this is a filename with spaces which /are hard to/ manage.com";
- pm_strcpy(cmd, prefix);
- pm_strcat(cmd, fname2);
- pm_strcat(cmd, "\n");
- ok(scan_parameter_str(cmd, prefix, param), "check scan parameter str with spaces match");
+ pm_strcpy(cmd1, prefix);
+ pm_strcat(cmd1, fname2);
+ pm_strcat(cmd1, "\n");
+ ok(scan_parameter_str(cmd1, prefix, param), "check scan parameter str with spaces match");
ok(bstrcmp(param.c_str(), fname2) , "check scan parameter str with spaces param");
+ char cmd2[256];
+ snprintf(cmd2, 256, "%s%s\n", prefix, fname1);
+ ok(scan_parameter_str(cmd2, prefix, param), "check scan parameter for char* str match");
+ ok(bstrcmp(param.c_str(), fname1) , "check scan parameter for char* str param");
+ nok(scan_parameter_str(cmd2, "prefix", param), "check scan parameter for char* str not match");
+
return report();
}