mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-13 05:28:49 +00:00
wildcard.cpp: don't call mimedb to complete suffixes
This commit is contained in:
parent
3b0805f4d7
commit
749b9182ab
1 changed files with 0 additions and 103 deletions
103
wildcard.cpp
103
wildcard.cpp
|
@ -47,11 +47,6 @@ wildcards using **.
|
|||
*/
|
||||
#define MAX_FILE_LENGTH 1024
|
||||
|
||||
/**
|
||||
The command to run to get a description from a file suffix
|
||||
*/
|
||||
#define SUFFIX_CMD_STR L"mimedb 2>/dev/null -fd "
|
||||
|
||||
/**
|
||||
Description for generic executable
|
||||
*/
|
||||
|
@ -382,97 +377,6 @@ static wcstring make_path(const wcstring &base_dir, const wcstring &name)
|
|||
return base_dir + name;
|
||||
}
|
||||
|
||||
/**
|
||||
Return a description of a file based on its suffix. This function
|
||||
does not perform any caching, it directly calls the mimedb command
|
||||
to do a lookup.
|
||||
*/
|
||||
static wcstring complete_get_desc_suffix_internal(const wcstring &suff)
|
||||
{
|
||||
|
||||
wcstring cmd = wcstring(SUFFIX_CMD_STR) + suff;
|
||||
|
||||
wcstring_list_t lst;
|
||||
wcstring desc;
|
||||
|
||||
if (exec_subshell(cmd, lst, false /* do not apply exit status */) != -1)
|
||||
{
|
||||
if (! lst.empty())
|
||||
{
|
||||
const wcstring & ln = lst.at(0);
|
||||
if (ln.size() > 0 && ln != L"unknown")
|
||||
{
|
||||
desc = ln;
|
||||
/*
|
||||
I have decided I prefer to have the description
|
||||
begin in uppercase and the whole universe will just
|
||||
have to accept it. Hah!
|
||||
*/
|
||||
desc[0]=towupper(desc[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (desc.empty())
|
||||
{
|
||||
desc = COMPLETE_FILE_DESC;
|
||||
}
|
||||
|
||||
suffix_map[suff] = desc.c_str();
|
||||
return desc;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Use the mimedb command to look up a description for a given suffix
|
||||
*/
|
||||
static wcstring complete_get_desc_suffix(const wchar_t *suff_orig)
|
||||
{
|
||||
|
||||
size_t len;
|
||||
wchar_t *suff;
|
||||
wchar_t *pos;
|
||||
|
||||
len = wcslen(suff_orig);
|
||||
|
||||
if (len == 0)
|
||||
return COMPLETE_FILE_DESC;
|
||||
|
||||
suff = wcsdup(suff_orig);
|
||||
|
||||
/*
|
||||
Drop characters that are commonly used as backup suffixes from the suffix
|
||||
*/
|
||||
for (pos=suff; *pos; pos++)
|
||||
{
|
||||
if (wcschr(L"?;#~@&", *pos))
|
||||
{
|
||||
*pos=0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
wcstring tmp = escape(suff, ESCAPE_ALL);
|
||||
free(suff);
|
||||
suff = wcsdup(tmp.c_str());
|
||||
|
||||
std::map<wcstring, wcstring>::iterator iter = suffix_map.find(suff);
|
||||
wcstring desc;
|
||||
if (iter != suffix_map.end())
|
||||
{
|
||||
desc = iter->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
desc = complete_get_desc_suffix_internal(suff);
|
||||
}
|
||||
|
||||
free(suff);
|
||||
|
||||
return desc;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Obtain a description string for the file specified by the filename.
|
||||
|
||||
|
@ -493,7 +397,6 @@ static wcstring file_get_desc(const wcstring &filename,
|
|||
struct stat buf,
|
||||
int err)
|
||||
{
|
||||
const wchar_t *suffix;
|
||||
|
||||
if (!lstat_res)
|
||||
{
|
||||
|
@ -595,12 +498,6 @@ static wcstring file_get_desc(const wcstring &filename,
|
|||
}
|
||||
}
|
||||
|
||||
suffix = wcsrchr(filename.c_str(), L'.');
|
||||
if (suffix != 0 && !wcsrchr(suffix, L'/'))
|
||||
{
|
||||
return complete_get_desc_suffix(suffix);
|
||||
}
|
||||
|
||||
return COMPLETE_FILE_DESC ;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue