| 134 | return s.size() >= p.size() && std::memcmp(s.data(), p.data(), p.size()) == 0; |
| 135 | } |
| 136 | |
| 137 | static bool looks_like_path(const std::string & s) { |
| 138 | if (s.empty()) return false; |
| 139 | if (s[0] == '/' || s[0] == '.') return true; |
| 140 | return s.find('/') != std::string::npos; |
| 141 | } |
| 142 | |
| 143 | static void emit_generate_error(const GenerateResult & result) { |