MCPcopy Create free account
hub / github.com/WiVRn/WiVRn / unescape_string

Function unescape_string

server/start_application.cpp:37–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35children_manager::~children_manager() {}
36
37static std::vector<std::string> unescape_string(const std::string & app_string)
38{
39 std::vector<std::string> app;
40 app.emplace_back();
41
42 bool seen_backslash = false;
43 bool seen_single_quote = false;
44 bool seen_double_quote = false;
45 for (auto c: app_string)
46 {
47 if (seen_backslash)
48 {
49 app.back() += c;
50 seen_backslash = false;
51 }
52 else if (seen_single_quote)
53 {
54 if (c == '\'')
55 seen_single_quote = false;
56 else if (c == '\\')
57 seen_backslash = true;
58 else
59 app.back() += c;
60 }
61 else if (seen_double_quote)
62 {
63 if (c == '"')
64 seen_double_quote = false;
65 else if (c == '\\')
66 seen_backslash = true;
67 else
68 app.back() += c;
69 }
70 else
71 {
72 switch (c)
73 {
74 case '\\':
75 seen_backslash = true;
76 break;
77 case '\'':
78 seen_single_quote = true;
79 break;
80 case '"':
81 seen_double_quote = true;
82 break;
83 case ' ':
84 if (app.back() != "")
85 app.emplace_back();
86 break;
87 default:
88 app.back() += c;
89 }
90 }
91 }
92
93 if (app.back() == "")
94 app.pop_back();

Callers 1

start_applicationMethod · 0.70

Calls 2

backMethod · 0.45
pop_backMethod · 0.45

Tested by

no test coverage detected