Newsgroup: it.comp.os.linux.development
Titolo: libreria per mime type

ciao a tutti sto cercando una libreria che mi ritorni il mime
tipe di un file che però non sia quella di gnome.
ho guardato delle lib ma sono solo per email.
nello specifico mi serve sostituire questa funzione:
gnome_vfs_get_mime_type
Grazie

Lash wrote:

xdgmime, che poi è quello che usano le gtk+ (file chooser e file
recenti) e gnome-vfs.
xdgmime è un aggeggio da compilare staticamente all'interno del tuo
srcdir, almeno finché non si decideranno ad autotool-izzarla.
ovviamente, dovrai ricordarti di sincronizzarla con la versione
upstream
fai un check out dal CVS di 
freedesktop.org
, modulo "mime".
la puoi vedere sul web qui:
 
http://webcvs.freedesktop.org/mime/xdgmime/
ciao,
 Emmanuele.

 tipe di un file che però non sia quella di gnome.
  libmagic
Se usi Debian:
  apt-get install libmagic-dev
  man libmagic
Max

 
non pensavo l'avessero le gtk, visto che le uso ho cercato la funzione 
per prendere i mime da file ma ho un problema, ho trovato queste due 
funzioni ma nessuna che ritorni un GtkFileInfo* da un path dato
GtkFileInfo* gtk_file_info_new();
G_CONST_RETURN gchar *gtk_file_info_get_mime_type         (const 
GtkFileInfo *info);
sapresti dirmi come posso associare ad un GtkFileInfo il file che mi 
interessa??
Grazie

   man libmagic
ho fatto questo codice:
#include <magic.h>
#include <iostream>
int main()
{
         magic_t t;
         t = magic_open(MAGIC_MIME);
         if(t == NULL)
                 std::cout << magic_error(t) << " 1\n";
         const char* f = "mime.cc";
         const char* c;
         c = magic_file(t,f);
         if(c == NULL)
                 std::cout << magic_error(t) << " 2\n";
         else
                 std::cout << c << " 3\n";
         return(0);
}
ma dopo aver fatto magic_file
magic_error da sempre l'errore: no magic files loaded
che problema puo essere???
ho provato a mettere path relativi e assoluti ma niente.
Grazie ciao

 interessa??
GtkFileInfo viene da GtkFileSystem, un oggetto semi-privato che non deve
mai essere usato perché (per il momento, e fino a che il layer VFS non
sarà inserito sotto le GTK+ stesse) non vengono date garanzie sulla
stabilità delle API.
quindi se vuoi aggiungere la possibilità di sapere il MIME type usando
il database comune a descritto nella specifica shared-mime, sei
costretto ad usare gnome-vfs, kioslave o linkare staticamente xdgmime.
ciao,
 Emmanuele.

   libmagic
libmagic non supporta la shared-mime-spec, che è quello che ormai buona
parte delle piattaforme implementa e usa.  in più, libmagic impone lo
sniffing del file, quindi devi averlo in locale oppure accedervi.
ciao,
 Emmanuele.

 
si avevo capito, è per quello che ero andato a cercare se c'erano 
funzioni per usarlo attraverso le gtk per evitare di ricompilarlo visto 
che c'è gia.
visto che il VFS è instabile lo lascio stare :)
Ciao

 sniffing del file, quindi devi averlo in locale oppure accedervi.
scusa ma senza accedere a un file come fai a sapere che mime type ha????
Ciao

 scusa ma senza accedere a un file come fai a sapere che mime type ha????
sembra stupido (e lo è - se usi solo questo metodo), ma ormai
l'estensione è diventato il modo per ottenere il mime type.  poi, se
vuoi essere sicuro, puoi sniffare solo i primi byte, ma l'estensione
basta a darti l'idea di quello che hai sotto mano.
ciao,
 Emmanuele.