libxputty 0.1
Loading...
Searching...
No Matches
Typedefs | Functions
xdgmimemagic.h File Reference

Go to the source code of this file.

Typedefs

typedef struct XdgMimeMagic XdgMimeMagic
 

Functions

XdgMimeMagic_xdg_mime_magic_new (void)
 
void _xdg_mime_magic_read_from_file (XdgMimeMagic *mime_magic, const char *file_name)
 
void _xdg_mime_magic_free (XdgMimeMagic *mime_magic)
 
int _xdg_mime_magic_get_buffer_extents (XdgMimeMagic *mime_magic)
 
const char * _xdg_mime_magic_lookup_data (XdgMimeMagic *mime_magic, const void *data, size_t len, int *result_prio, const char *mime_types[], int n_mime_types)
 

Typedef Documentation

◆ XdgMimeMagic

typedef struct XdgMimeMagic XdgMimeMagic

Definition at line 33 of file xdgmimemagic.h.

Function Documentation

◆ _xdg_mime_magic_free()

void _xdg_mime_magic_free ( XdgMimeMagic mime_magic)

Definition at line 644 of file xdgmimemagic.c.

645{
646 if (mime_magic) {
647 _xdg_mime_magic_match_free (mime_magic->match_list);
648 free (mime_magic);
649 }
650}
XdgMimeMagicMatch * match_list

References XdgMimeMagic::match_list.

Referenced by xdg_mime_shutdown().

◆ _xdg_mime_magic_get_buffer_extents()

int _xdg_mime_magic_get_buffer_extents ( XdgMimeMagic mime_magic)

Definition at line 653 of file xdgmimemagic.c.

654{
655 return mime_magic->max_extent;
656}

References XdgMimeMagic::max_extent.

Referenced by xdg_mime_get_max_buffer_extents(), and xdg_mime_get_mime_type_for_file().

◆ _xdg_mime_magic_lookup_data()

const char * _xdg_mime_magic_lookup_data ( XdgMimeMagic mime_magic,
const void *  data,
size_t  len,
int *  result_prio,
const char *  mime_types[],
int  n_mime_types 
)

Definition at line 659 of file xdgmimemagic.c.

665{
666 XdgMimeMagicMatch *match;
667 const char *mime_type;
668 int n;
669 int prio;
670
671 prio = 0;
672 mime_type = NULL;
673 for (match = mime_magic->match_list; match; match = match->next)
674 {
675 if (_xdg_mime_magic_match_compare_to_data (match, data, len))
676 {
677 prio = match->priority;
678 mime_type = match->mime_type;
679 break;
680 }
681 else
682 {
683 for (n = 0; n < n_mime_types; n++)
684 {
685 if (mime_types[n] &&
686 _xdg_mime_mime_type_equal (mime_types[n], match->mime_type))
687 mime_types[n] = NULL;
688 }
689 }
690 }
691
692 if (mime_type == NULL)
693 {
694 for (n = 0; n < n_mime_types; n++)
695 {
696 if (mime_types[n])
697 mime_type = mime_types[n];
698 }
699 }
700
701 if (result_prio)
702 *result_prio = prio;
703
704 return mime_type;
705}
const char * mime_type
XdgMimeMagicMatch * next
int _xdg_mime_mime_type_equal(const char *mime_a, const char *mime_b)
Definition xdgmime.c:706

References _xdg_mime_mime_type_equal(), XdgMimeMagic::match_list, XdgMimeMagicMatch::mime_type, XdgMimeMagicMatch::next, and XdgMimeMagicMatch::priority.

Referenced by xdg_mime_get_mime_type_for_data(), and xdg_mime_get_mime_type_for_file().

◆ _xdg_mime_magic_new()

XdgMimeMagic * _xdg_mime_magic_new ( void  )

Definition at line 638 of file xdgmimemagic.c.

639{
640 return calloc (1, sizeof (XdgMimeMagic));
641}

◆ _xdg_mime_magic_read_from_file()

void _xdg_mime_magic_read_from_file ( XdgMimeMagic mime_magic,
const char *  file_name 
)

Definition at line 798 of file xdgmimemagic.c.

800{
801 FILE *magic_file;
802 char header[12];
803
804 magic_file = fopen (file_name, "r");
805
806 if (magic_file == NULL)
807 return;
808
809 if (fread (header, 1, 12, magic_file) == 12)
810 {
811 if (memcmp ("MIME-Magic\0\n", header, 12) == 0)
812 _xdg_mime_magic_read_magic_file (mime_magic, magic_file);
813 }
814
815 fclose (magic_file);
816}