12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include "stdafx.h"
- bool parse_key(std::string &RetValue, std::string strLine, TCHAR *lpszText)
- {
- TCHAR szText[MAX_PATH] = {0};
- TCHAR szValue[MAX_PATH] = {0};
-
- #if _MSC_VER > 1900
- strLine.erase(std::remove_if(strLine.begin(), strLine.end(), [](unsigned char x) {return std::isspace(x); }), strLine.end());
- #else
- for (std::string::iterator it = strLine.begin(); it != strLine.end();) {
- isspace(*it) ? it++ : it = it = strLine.erase(it);
- }
- #endif
- if ( 2 == _stscanf_s(strLine.c_str(), _T("%[^=]=%s"), szText, MAX_PATH, szValue, MAX_PATH) )
- {
- if ( _tcsstr(szText, lpszText) )
- {
- RetValue = szValue;
- return true;
- }
- }
- return false;
- }
- int parse_cmd_param_from_file(char *file_name)
- {
- char buf[MAX_PATH] = {0};
- TCHAR name[MAX_PATH] = {0};
- TCHAR head[MAX_PATH] = {0};
- TCHAR code[MAX_PATH] = {0};
- TCHAR mark[MAX_PATH] = {0};
- TCHAR multicode[MAX_PATH] = {0};
- TCHAR cmd_wait_time[MAX_PATH] = {0};
- TCHAR read_wait_time[MAX_PATH] = {0};
- int ret = -1;
- FILE *fp = NULL;
-
- if(!file_name)
- return ret;
- fp = fopen(file_name, "r");
- if(!fp)
- goto EXIT;
- while((fgets((char*)buf, MAX_PATH, fp) != NULL)) {
- int tmp_len = 0;
- unsigned short keycode = 0;
- unsigned int protocol = 0;
- unsigned int scancode = 0;
- tmp_len = _tcslen((char*)buf);
- if(tmp_len >= 1) {
- if (buf[tmp_len - 1] == '\r' || buf[tmp_len - 1] == '\n')
- buf[tmp_len - 1] = 0;
- if(tmp_len >= 2) {
- if(buf[tmp_len - 2] == '\r' || buf[tmp_len - 2] == '\n')
- buf[tmp_len - 2] = 0;
- }
- }
- #if _MSC_VER >= 1500
-
- if ( sscanf_s(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%s", name, MAX_PATH, head, MAX_PATH, code, MAX_PATH, mark, MAX_PATH, multicode, MAX_PATH, cmd_wait_time, MAX_PATH, read_wait_time, MAX_PATH) == 7)
- #endif
- #if _MSC_VER < 1500
- if ( sscanf(buf, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;]", name, head, code, mark, multicode, cmd_wait_time, read_wait_time) == 7)
- #endif
- {
- CommandParam cp;
- parse_key(cp.name, name, _T("Name"));
- parse_key(cp.head, head, _T("HeadCode"));
- parse_key(cp.code, code, _T("Command"));
- parse_key(cp.mark, mark, _T("CMDParam"));
- std::string value;
- parse_key(value, multicode, _T("MultiParams"));
- parse_key(value, cmd_wait_time, _T("ReadWaitTime"));
- parse_key(value, read_wait_time, _T("CMDWaitTime"));
- }
- }
- ret = 0;
- EXIT:
- if(fp)
- fclose(fp);
- return ret;
- }
|