default config: fixed some mtypes without icons or catgs

This commit is contained in:
Jean-Francois Dockes 2019-06-17 08:12:33 +02:00
parent e38e58c37a
commit be81082f38
3 changed files with 295 additions and 24 deletions

View File

@ -202,16 +202,24 @@ text/xml = internal text/plain
[icons]
application/epub+zip = book
application/javascript = source
application/javascript = source
application/msword = wordprocessing
application/ogg = sownd
application/pdf = pdf
application/postscript = postscript
application/sql = source
application/vnd.ms-excel = spreadsheet
application/vnd.ms-office = document
application/vnd.ms-outlook = document
application/vnd.ms-powerpoint = presentation
application/vnd.oasis.opendocument.presentation = presentation
application/vnd.oasis.opendocument.spreadsheet = spreadsheet
application/vnd.oasis.opendocument.text = wordprocessing
application/vnd.oasis.opendocument.graphics = presentation
application/vnd.oasis.opendocument.presentation-flat-xml = presentation
application/vnd.oasis.opendocument.spreadsheet-flat-xml = spreadsheet
application/vnd.oasis.opendocument.text-flat-xml = wordprocessing
application/vnd.oasis.opendocument.text-template = wordprocessing
application/vnd.openxmlformats-officedocument.presentationml.presentation = presentation
application/vnd.openxmlformats-officedocument.presentationml.template = presentation
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet = spreadsheet
@ -229,6 +237,7 @@ application/vnd.sun.xml.writer = wordprocessing
application/vnd.sun.xml.writer.global = wordprocessing
application/vnd.sun.xml.writer.template = wordprocessing
application/vnd.wordperfect = wordprocessing
application/x-7z-compressed = archive
application/x-abiword = wordprocessing
application/x-awk = source
application/x-chm = book
@ -255,9 +264,13 @@ application/x-tex = wordprocessing
application/x-webarchive = archive
application/xml = document
application/zip = archive
application/x-7z-compressed = archive
audio/aac = sownd
audio/ape = sownd
audio/mp4 = sownd
audio/mpeg = sownd
audio/x-karaoke = sownd
audio/x-musepack = sownd
audio/x-wavpack = sownd
image/bmp = image
image/gif = image
image/jp2 = image
@ -266,35 +279,40 @@ image/png = image
image/svg+xml = drawing
image/tiff = image
image/vnd.djvu = document
image/x-nikon-nef = image
image/x-xcf = image
image/x-xpmi = image
image/x-nikon-nef = image
inode/directory = folder
inode/symlink = emblem-symbolic-link
message/rfc822 = message
text/css = html
text/html = html
text/html|chm = bookchap
text/html|epub = bookchap
text/html|gnuinfo = bookchap
text/plain = txt
text/rtf = wordprocessing
text/x-bibtex = txt
text/x-c = source
text/x-c+ = source
text/x-c++ = source
text/x-chm-html = html
text/x-csharp = source
text/x-csv = txt
text/x-fictionbook = document
text/x-fictionbook = book
text/x-html-aptosid-man = aptosid-book
text/x-ini = txt
text/x-bibtex = txt
text/x-lua = source
text/x-java = source
text/x-lua = source
text/x-mail = message
text/x-man = document
text/x-perl = source
text/x-php = source
text/x-purple-html-log = pidgin
text/x-purple-log = pidgin
text/x-python = text-x-python
text/x-shellscript = source
text/x-srt = source
text/x-tex = wordprocessing
text/xml = document
video/3gpp = video
@ -316,11 +334,14 @@ video/x-msvideo = video
# "guifilters" section below.
text = \
application/epub+zip \
application/javascript \
application/msword \
application/pdf \
application/postscript \
application/sql \
application/vnd.oasis.opendocument.text \
application/vnd.oasis.opendocument.text-flat-xml \
application/vnd.oasis.opendocument.text-template \
application/vnd.openxmlformats-officedocument.wordprocessingml.document \
application/vnd.openxmlformats-officedocument.wordprocessingml.template \
application/vnd.sun.xml.writer \
@ -328,6 +349,7 @@ text = \
application/vnd.sun.xml.writer.template \
application/vnd.wordperfect \
application/x-abiword \
application/vnd.ms-office \
application/x-awk \
application/x-chm \
application/x-dvi \
@ -338,6 +360,7 @@ text = \
application/x-mobipocket-ebook \
application/x-okular-notes \
application/x-perl \
application/x-php \
application/x-scribus \
application/x-shellscript \
application/x-tex \
@ -347,6 +370,7 @@ text = \
text/x-tex \
image/vnd.djvu \
text/calendar \
text/css \
text/html \
text/plain \
text/rtf \
@ -354,6 +378,8 @@ text = \
text/x-c \
text/x-c++ \
text/x-c+ \
text/x-chm-html \
text/x-csharp \
text/x-lua \
text/x-fictionbook \
text/x-html-aptosid-man \
@ -362,25 +388,30 @@ text = \
text/x-java \
text/x-man \
text/x-perl \
text/x-php \
text/x-python \
text/x-shellscript
text/x-shellscript \
text/x-srt \
spreadsheet = \
application/vnd.ms-excel \
application/vnd.oasis.opendocument.spreadsheet \
application/vnd.oasis.opendocument.spreadsheet-flat-xml \
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet \
application/vnd.openxmlformats-officedocument.spreadsheetml.template \
application/vnd.sun.xml.calc \
application/vnd.sun.xml.calc.template \
application/x-gnumeric
application/x-gnumeric \
presentation = \
application/vnd.ms-powerpoint \
application/vnd.oasis.opendocument.graphics \
application/vnd.oasis.opendocument.presentation \
application/vnd.oasis.opendocument.presentation-flat-xml \
application/vnd.openxmlformats-officedocument.presentationml.presentation \
application/vnd.openxmlformats-officedocument.presentationml.template \
application/vnd.sun.xml.impress \
application/vnd.sun.xml.impress.template
application/vnd.sun.xml.impress.template \
media = \
application/ogg \
@ -389,25 +420,30 @@ media = \
image/* \
video/* \
message = message/rfc822 \
text/x-gaim-log \
text/x-mail \
text/x-purple-log \
text/x-purple-html-log \
message = \
message/rfc822 \
text/x-gaim-log \
text/x-mail \
text/x-purple-html-log \
text/x-purple-log \
other = application/vnd.sun.xml.draw \
other = \
application/vnd.ms-outlook \
application/vnd.sun.xml.draw \
application/vnd.sun.xml.draw.template \
application/vnd.sun.xml.math \
application/x-7z-compressed \
application/x-dia-diagram \
application/x-fsdirectory \
application/x-mimehtml \
application/x-rar \
application/x-tar \
application/x-webarchive \
application/x-zerosize \
application/zip \
application/x-7z-compressed \
inode/directory \
inode/symlink \
inode/x-empty \
[guifilters]
# This defines the top level filters in the GUI (accessed by the the

View File

@ -58,6 +58,11 @@ application/vnd.ms-powerpoint = libreoffice %f
application/vnd.oasis.opendocument.text = libreoffice %f
application/vnd.oasis.opendocument.presentation = libreoffice %f
application/vnd.oasis.opendocument.spreadsheet = libreoffice %f
application/vnd.oasis.opendocument.graphics = libreoffice %f
application/vnd.oasis.opendocument.presentation-flat-xml = libreoffice %f
application/vnd.oasis.opendocument.spreadsheet-flat-xml = libreoffice %f
application/vnd.oasis.opendocument.text-flat-xml = libreoffice %f
application/vnd.oasis.opendocument.text-template = libreoffice %f
application/vnd.openxmlformats-officedocument.wordprocessingml.document = \
libreoffice %f
@ -102,20 +107,28 @@ application/x-gnumeric = gnumeric %f
application/x-flac = rhythmbox %f
audio/mpeg = rhythmbox %f
audio/aac = rhythmbox %f
audio/ape = rhythmbox %f
audio/mp4 = rhythmbox %f
audio/x-musepack = rhythmbox %f
audio/x-wavpack = rhythmbox %f
application/ogg = rhythmbox %f
audio/x-karaoke = kmid %f
image/jpeg = gwenview %f
image/png = gwenview %f
image/tiff = gwenview %f
image/gif = gwenview %f
image/svg+xml = inkview %f
image/jpeg = ristretto %f
image/jp2 = ristretto %f
image/png = ristretto %f
image/tiff = ristretto %f
image/gif = ristretto %f
image/vnd.djvu = djview %f
image/bmp = ristretto %f
image/x-ms-bmp = ristretto %f
image/x-xpmi = ristretto %f
image/x-xcf = gimp %f
image/bmp = gwenview %f
image/x-ms-bmp = gwenview %f
image/x-xpmi = gwenview %f
image/x-nikon-nef = ufraw %f
image/svg+xml = inkview %f
# Opening mail messages:
# - Thunderbird will only open a single-message file if it has an .eml
@ -146,15 +159,26 @@ application/x-tar = ark %f
application/zip = ark %f
application/x-7z-compressed = ark %f
application/javascript = emacsclient --no-wait %f
application/x-awk = emacsclient --no-wait %f
application/x-bibtex = emacsclient --no-wait %f
application/x-csharp = emacsclient --no-wait %f
application/x-java = emacsclient --no-wait %f
application/x-perl = emacsclient --no-wait %f
text/x-perl = emacsclient --no-wait %f
application/x-php = emacsclient --no-wait %f
application/x-shellscript = emacsclient --no-wait %f
text/x-bibtex = emacsclient --no-wait %f
text/css = emacsclient --no-wait %f
text/x-csharp = emacsclient --no-wait %f
text/x-java = emacsclient --no-wait %f
text/x-perl = emacsclient --no-wait %f
text/x-shellscript = emacsclient --no-wait %f
text/x-srt = emacsclient --no-wait %f
# Or firefox -remote "openFile(%u)"
text/html = firefox %u
application/x-chm-html = %u
text/x-chm-html = %u
# gnu info nodes are translated to html with a "gnuinfo"
# rclaptg. rclshowinfo knows how to start the info command on the right
@ -163,6 +187,9 @@ text/html|gnuinfo = rclshowinfo %F %(title);ignoreipath=1
application/x-webarchive = konqueror %f
text/x-fictionbook = ebook-viewer %f
application/x-javascript = emacsclient --no-wait %f
application/sql = emacsclient --no-wait %f
application/x-tex = emacsclient --no-wait %f
application/xml = emacsclient --no-wait %f
text/xml = emacsclient --no-wait %f

View File

@ -0,0 +1,208 @@
/* Copyright (C) 2017-2019 J.F.Dockes
*
* License: GPL 2.1
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <stdio.h>
#include <signal.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
#include "log.h"
#include "rclinit.h"
#include "rclconfig.h"
#include "cstr.h"
static char *thisprog;
static char usage [] = "\n"
"-c: check a few things in the configuration files\n"
"[-s subkey] -q param : query parameter value\n"
"-f : print some field data\n"
" : default: print parameters\n"
;
static void
Usage(void)
{
fprintf(stderr, "%s: usage: %s\n", thisprog, usage);
exit(1);
}
static int op_flags;
#define OPT_MOINS 0x1
#define OPT_s 0x2
#define OPT_q 0x4
#define OPT_c 0x8
#define OPT_f 0x10
int main(int argc, char **argv)
{
string pname, skey;
thisprog = argv[0];
argc--; argv++;
while (argc > 0 && **argv == '-') {
(*argv)++;
if (!(**argv))
/* Cas du "adb - core" */
Usage();
while (**argv)
switch (*(*argv)++) {
case 'c': op_flags |= OPT_c; break;
case 'f': op_flags |= OPT_f; break;
case 's': op_flags |= OPT_s; if (argc < 2) Usage();
skey = *(++argv);
argc--;
goto b1;
case 'q': op_flags |= OPT_q; if (argc < 2) Usage();
pname = *(++argv);
argc--;
goto b1;
default: Usage(); break;
}
b1: argc--; argv++;
}
if (argc != 0)
Usage();
string reason;
RclConfig *config = recollinit(0, 0, 0, reason);
if (config == 0 || !config->ok()) {
cerr << "Configuration problem: " << reason << endl;
exit(1);
}
if (op_flags & OPT_s)
config->setKeyDir(skey);
if (op_flags & OPT_q) {
string value;
if (!config->getConfParam(pname, value)) {
fprintf(stderr, "getConfParam failed for [%s]\n", pname.c_str());
exit(1);
}
printf("[%s] -> [%s]\n", pname.c_str(), value.c_str());
} else if (op_flags & OPT_f) {
set<string> stored = config->getStoredFields();
set<string> indexed = config->getIndexedFields();
cout << "Stored fields: ";
for (set<string>::const_iterator it = stored.begin();
it != stored.end(); it++) {
cout << "[" << *it << "] ";
}
cout << endl;
cout << "Indexed fields: ";
for (set<string>::const_iterator it = indexed.begin();
it != indexed.end(); it++) {
const FieldTraits *ftp;
config->getFieldTraits(*it, &ftp);
if (ftp)
cout << "[" << *it << "]" << " -> [" << ftp->pfx << "] ";
else
cout << "[" << *it << "]" << " -> [" << "(none)" << "] ";
}
cout << endl;
} else if (op_flags & OPT_c) {
// Checking the configuration consistency
// Find and display category names
vector<string> catnames;
config->getMimeCategories(catnames);
cout << "Categories: ";
for (vector<string>::const_iterator it = catnames.begin();
it != catnames.end(); it++) {
cout << *it << " ";
}
cout << endl;
// Compute union of all types from each category. Check that there
// are no duplicates while we are at it.
set<string> allmtsfromcats;
for (vector<string>::const_iterator it = catnames.begin();
it != catnames.end(); it++) {
vector<string> cts;
config->getMimeCatTypes(*it, cts);
for (vector<string>::const_iterator it1 = cts.begin();
it1 != cts.end(); it1++) {
// Already in map -> duplicate
if (allmtsfromcats.find(*it1) != allmtsfromcats.end()) {
cout << "Duplicate: [" << *it1 << "]" << endl;
}
allmtsfromcats.insert(*it1);
}
}
// Retrieve complete list of mime types
vector<string> mtypes = config->getAllMimeTypes();
// And check that each mime type is found in exactly one category
// And have an icon
for (const auto& mtype: mtypes) {
if (allmtsfromcats.find(mtype) == allmtsfromcats.end()) {
cout << "Not found in catgs: [" << mtype << "]" << endl;
}
// We'd like to check for types with no icons, but
// getMimeIconPath() returns the valid 'document' by
// default, we'd have to go look into the confsimple
// directly.
// string path = config->getMimeIconPath(mtype, string());
// cout << mtype << " -> " << path << endl;
}
// List mime types not in mimeview
for (vector<string>::const_iterator it = mtypes.begin();
it != mtypes.end(); it++) {
if (config->getMimeViewerDef(*it, "", false).empty()) {
cout << "No viewer: [" << *it << "]" << endl;
}
}
// Check that each mime type has an indexer
for (vector<string>::const_iterator it = mtypes.begin();
it != mtypes.end(); it++) {
if (config->getMimeHandlerDef(*it, false).empty()) {
cout << "No filter: [" << *it << "]" << endl;
}
}
// Check that each mime type has a defined icon
for (vector<string>::const_iterator it = mtypes.begin();
it != mtypes.end(); it++) {
if (config->getMimeIconPath(*it, "") == "document") {
cout << "No or generic icon: [" << *it << "]" << endl;
}
}
} else {
config->setKeyDir(cstr_null);
vector<string> names = config->getConfNames();
for (vector<string>::iterator it = names.begin();
it != names.end();it++) {
string value;
config->getConfParam(*it, value);
cout << *it << " -> [" << value << "]" << endl;
}
}
exit(0);
}