Prefer non-private mime-types in case of ambiguity.
GitOrigin-RevId: 6d44c83405e3fc0c9b386c26ca0f84474349a044
This commit is contained in:
parent
10e2fd28c0
commit
69814c72cb
@ -15,7 +15,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
std::pair<std::string, std::string> split(std::string s, char delimiter = ' ') {
|
static std::pair<std::string, std::string> split(std::string s, char delimiter = ' ') {
|
||||||
auto delimiter_pos = s.find(delimiter);
|
auto delimiter_pos = s.find(delimiter);
|
||||||
if (delimiter_pos == std::string::npos) {
|
if (delimiter_pos == std::string::npos) {
|
||||||
return {std::move(s), ""};
|
return {std::move(s), ""};
|
||||||
@ -26,7 +26,7 @@ std::pair<std::string, std::string> split(std::string s, char delimiter = ' ') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool generate(const char *file_name, const char *from_name, const char *to_name,
|
static bool generate(const char *file_name, const char *from_name, const char *to_name,
|
||||||
const std::map<std::string, std::string> &map) {
|
const std::map<std::string, std::string> &map) {
|
||||||
// binary mode is needed for MSYS2 gperf
|
// binary mode is needed for MSYS2 gperf
|
||||||
std::ofstream out(file_name, std::ios_base::trunc | std::ios_base::binary);
|
std::ofstream out(file_name, std::ios_base::trunc | std::ios_base::binary);
|
||||||
@ -71,6 +71,10 @@ bool generate(const char *file_name, const char *from_name, const char *to_name,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool is_private_mime_type(const std::string &mime_type) {
|
||||||
|
return mime_type.find("/x-") != std::string::npos;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
if (argc != 4) {
|
if (argc != 4) {
|
||||||
std::cerr << "Wrong number of arguments supplied. Expected 'generate_mime_types_gperf <mime_types.txt> "
|
std::cerr << "Wrong number of arguments supplied. Expected 'generate_mime_types_gperf <mime_types.txt> "
|
||||||
@ -132,7 +136,13 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
for (auto &extension : extensions) {
|
for (auto &extension : extensions) {
|
||||||
if (!extension_to_mime_type.emplace(extension, mime_type).second) {
|
if (!extension_to_mime_type.emplace(extension, mime_type).second) {
|
||||||
|
if (is_private_mime_type(extension_to_mime_type[extension]) == is_private_mime_type(mime_type)) {
|
||||||
std::cerr << "Extension \"" << extension << "\" matches more than one type" << std::endl;
|
std::cerr << "Extension \"" << extension << "\" matches more than one type" << std::endl;
|
||||||
|
} else {
|
||||||
|
if (!is_private_mime_type(mime_type)) {
|
||||||
|
extension_to_mime_type[extension] = mime_type;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user