Les meilleurs sources GTK+

Les meilleurs sources GTK+Consultez toutes les sources
Nombre d'auteurs : 4, nombre de sources : 13, dernière mise à jour : 28 juin 2013
Sommaire→GLib
La glib propose une seule API pour lire un fichier XML : l'API SAX[FAQ XML] Qu'est-ce que SAX ?.
Voici une implémentation de l'API DOM[FAQ XML] Qu'est-ce que DOM ? basée sur GMarkup.
Voici une source qui permet de connaître l'encodage d'un fichier texte. Comme il n'existe aucune méta-donnée dans les fichiers texte, nous sommes obligés de tester un à un différents encodages jusqu'à ce que la covertion réussisse. Dans ce code, je me contente de tester UTF-8 et ISO-8859-15 qui sont les plus répendus.
#ifndef H_NJ_ENCODING_11122007161145
#define H_NJ_ENCODING_11122007161145
#include <glib.h>
G_BEGIN_DECLS
const gchar *encoding_get_charset (const gchar *);
G_END_DECLS
#endif /* not H_NJ_ENCODING_11122007161145 */#include "encoding.h"
#include <stdlib.h>
#include <string.h>
static const gchar *charsets[] = {"UTF-8", "ISO-8859-15", NULL};
static gboolean test_encoding (const gchar *filename, const gchar *charset)
{
gboolean valid = FALSE;
if (filename != NULL)
{
gchar *content = NULL;
g_file_get_contents (filename, &content, NULL, NULL);
if (content != NULL)
{
gchar *convert = NULL;
gsize bytes_read = 0;
convert = g_convert (content, -1, "UTF-8", charset, &bytes_read, NULL,
NULL);
if (convert != NULL)
{
if (bytes_read == strlen (content))
{
valid = TRUE;
}
free (convert), convert = NULL;
}
free (content), content = NULL;
}
}
return valid;
}
/**
* encoding_get_charset:
* @filename: le chemin complet du fichier.
*
* Retourne l'encodage d'un fichier texte.
*
* Return value: l'encodage du fichier ou %NULL si non trouvé.
*/
const gchar *encoding_get_charset (const gchar *filename)
{
gint i;
for (i = 0; charsets[i] != NULL; i++)
{
if (test_encoding (filename, charsets[i]))
{
break;
}
}
return charset[i];
}


