libxputty 0.1
Loading...
Searching...
No Matches
Data Structures | Typedefs | Enumerations | Functions
xdgmimemagic.c File Reference

Go to the source code of this file.

Data Structures

struct  XdgMimeMagicMatch
 
struct  XdgMimeMagicMatchlet
 
struct  XdgMimeMagic
 

Typedefs

typedef struct XdgMimeMagicMatch XdgMimeMagicMatch
 
typedef struct XdgMimeMagicMatchlet XdgMimeMagicMatchlet
 

Enumerations

enum  XdgMimeMagicState { XDG_MIME_MAGIC_SECTION , XDG_MIME_MAGIC_MAGIC , XDG_MIME_MAGIC_ERROR , XDG_MIME_MAGIC_EOF }
 

Functions

XdgMimeMagic_xdg_mime_magic_new (void)
 
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)
 
void _xdg_mime_magic_read_from_file (XdgMimeMagic *mime_magic, const char *file_name)
 

Typedef Documentation

◆ XdgMimeMagicMatch

Definition at line 54 of file xdgmimemagic.c.

◆ XdgMimeMagicMatchlet

Definition at line 55 of file xdgmimemagic.c.

Enumeration Type Documentation

◆ XdgMimeMagicState

Enumerator
XDG_MIME_MAGIC_SECTION 
XDG_MIME_MAGIC_MAGIC 
XDG_MIME_MAGIC_ERROR 
XDG_MIME_MAGIC_EOF 

Definition at line 57 of file xdgmimemagic.c.

58{
XdgMimeMagicState
@ XDG_MIME_MAGIC_SECTION
@ XDG_MIME_MAGIC_EOF
@ XDG_MIME_MAGIC_MAGIC
@ XDG_MIME_MAGIC_ERROR

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}