gecko-dev/cmd/gnomefe/gnome-cnvtrs.c

198 строки
5.6 KiB
C

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "structs.h"
#include "ntypes.h"
#include "net.h"
void
fe_RegisterConverters (void)
{
#ifdef NEW_DECODERS
NET_ClearAllConverters ();
#endif /* NEW_DECODERS */
#if 0
if (fe_encoding_extensions)
{
int i = 0;
while (fe_encoding_extensions [i])
free (fe_encoding_extensions [i++]);
free (fe_encoding_extensions);
fe_encoding_extensions = 0;
}
/* register X specific decoders
*/
if (fe_globalData.encoding_filters)
{
char *copy = strdup (fe_globalData.encoding_filters);
char *rest = copy;
char *end = rest + strlen (rest);
int exts_count = 0;
int exts_size = 10;
char **all_exts = (char **) malloc (sizeof (char *) * exts_size);
while (rest < end)
{
char *start;
char *eol, *colon;
char *input, *output, *extensions, *command;
eol = strchr (rest, '\n');
if (eol) *eol = 0;
rest = fe_StringTrim (rest);
if (! *rest)
/* blank lines are ok */
continue;
start = rest;
colon = strchr (rest, ':');
if (! colon) goto LOSER;
*colon = 0;
input = fe_StringTrim (rest);
rest = colon + 1;
colon = strchr (rest, ':');
if (! colon) goto LOSER;
*colon = 0;
output = fe_StringTrim (rest);
rest = colon + 1;
colon = strchr (rest, ':');
if (! colon) goto LOSER;
*colon = 0;
extensions = fe_StringTrim (rest);
rest = colon + 1;
command = fe_StringTrim (rest);
rest = colon + 1;
if (*command)
{
/* First save away the extensions. */
char *rest = extensions;
while (*rest)
{
char *start;
char *comma, *end;
while (isspace (*rest))
rest++;
start = rest;
comma = XP_STRCHR (start, ',');
end = (comma ? comma - 1 : start + strlen (start));
while (end >= start && isspace (*end))
end--;
if (comma) end++;
if (start < end)
{
all_exts [exts_count] =
(char *) malloc (end - start + 1);
strncpy (all_exts [exts_count], start, end - start);
all_exts [exts_count][end - start] = 0;
if (++exts_count == exts_size)
all_exts = (char **)
realloc (all_exts,
sizeof (char *) * (exts_size += 10));
}
rest = (comma ? comma + 1 : end);
}
all_exts [exts_count] = 0;
fe_encoding_extensions = all_exts;
/* Now register the converter. */
NET_RegisterExternalDecoderCommand (input, output, command);
}
else
{
LOSER:
fprintf (stderr,
XP_GetString(XFE_COMMANDS_UNPARSABLE_ENCODING_FILTER_SPEC),
fe_progname, start);
}
rest = (eol ? eol + 1 : end);
}
free (copy);
}
#endif
/* Register standard decoders
This must come AFTER all calls to NET_RegisterExternalDecoderCommand(),
(at least in the `NEW_DECODERS' world.)
*/
NET_RegisterMIMEDecoders ();
#if 0 /* XXX toshok - for now. */
/* How to save to disk. */
NET_RegisterContentTypeConverter ("*", FO_SAVE_AS, NULL,
fe_MakeSaveAsStream);
/* Saving any binary format as type `text' should save as `source' instead.
*/
NET_RegisterContentTypeConverter ("*", FO_SAVE_AS_TEXT, NULL,
fe_MakeSaveAsStreamNoPrompt);
NET_RegisterContentTypeConverter ("*", FO_QUOTE_MESSAGE, NULL,
fe_MakeSaveAsStreamNoPrompt);
/* default presentation converter - offer to save unknown types. */
NET_RegisterContentTypeConverter ("*", FO_PRESENT, NULL,
fe_MakeSaveAsStream);
#endif
#ifndef NO_MOCHA_CONVERTER_HACK
/* libmocha:LM_InitMocha() installs this convert. We blow away all
* converters that were installed and hence these mocha default converters
* dont get recreated. And mocha has no call to re-register them.
* So this hack. - dp/brendan
*/
NET_RegisterContentTypeConverter(APPLICATION_JAVASCRIPT, FO_PRESENT, 0,
NET_CreateMochaConverter);
#endif /* NO_MOCHA_CONVERTER_HACK */
/* Parse stuff out of the .mime.types and .mailcap files.
* We dont have to check dates of files for modified because all that
* would have been done by the caller. The only place time checking
* happens is
* (1) Helperapp page is created
* (2) Helpers are being saved (OK button pressed on the General Prefs).
*/
NET_InitFileFormatTypes (NULL /* XXX fe_globalPrefs.private_mime_types_file */,
NULL /* XXX fe_globalPrefs.global_mime_types_file*/);
#if 0 /* XXX toshok - for now. */
fe_isFileChanged(fe_globalPrefs.private_mime_types_file, 0,
&fe_globalData.privateMimetypeFileModifiedTime);
NET_RegisterConverters (fe_globalPrefs.private_mailcap_file,
fe_globalPrefs.global_mailcap_file);
fe_isFileChanged(fe_globalPrefs.private_mailcap_file, 0,
&fe_globalData.privateMailcapFileModifiedTime);
fe_RegisterPrefConverters();
#ifndef NO_WEB_FONTS
/* Register webfont converters */
NF_RegisterConverters();
#endif /* NO_WEB_FONTS */
/* Plugins go on top of all this */
fe_RegisterPluginConverters();
#endif
}