diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/xine.h.tmpl.in | 121 |
1 files changed, 102 insertions, 19 deletions
diff --git a/include/xine.h.tmpl.in b/include/xine.h.tmpl.in index 327eeb2c5..cac664dfd 100644 --- a/include/xine.h.tmpl.in +++ b/include/xine.h.tmpl.in @@ -29,7 +29,7 @@ \endverbatim */ /* - * $Id: xine.h.tmpl.in,v 1.27 2001/07/10 19:33:05 guenter Exp $ + * $Id: xine.h.tmpl.in,v 1.28 2001/07/10 21:07:55 f1rmb Exp $ * */ @@ -454,26 +454,109 @@ void xine_select_spu_channel (xine_t *this, int channel); char **xine_get_browsable_input_plugin_ids (xine_t *this) ; /* Types of mrls returned by get_dir() */ -#define mrl_unknown 0x0 -#define mrl_dvd 0x1 -#define mrl_vcd 0x3 -#define mrl_net 0x4 -#define mrl_rtp 0x5 -#define mrl_stdin 0x6 -#define mrl_fifo 0x7 -#define mrl_chardev 0x8 -#define mrl_directory 0x9 -#define mrl_blockdev 0xA -#define mrl_normal 0xB -#define mrl_symbolic_link 0xC -#define mrl_sock 0xD -/* bit for exec file, should be combinated with mrl_normal type*/ -#define mrl_type_exec 0xFFFF8000 +#define mrl_unknown (0 << 0) +#define mrl_dvd (1 << 0) +#define mrl_vcd (1 << 1) +#define mrl_net (1 << 2) +#define mrl_rtp (1 << 3) +#define mrl_stdin (1 << 4) +#define mrl_file (1 << 5) +#define mrl_file_fifo (1 << 6) +#define mrl_file_chardev (1 << 7) +#define mrl_file_directory (1 << 8) +#define mrl_file_blockdev (1 << 9) +#define mrl_file_normal (1 << 10) +#define mrl_file_symlink (1 << 11) +#define mrl_file_sock (1 << 12) +#define mrl_file_exec (1 << 13) +#define mrl_file_backup (1 << 14) +#define mrl_file_hidden (1 << 15) + +/* + * Freeing/zeroing all of entries of given mrl. + */ +#define MRL_ZERO(m) { \ + if((m)) { \ + if((m)->origin) \ + free((m)->origin); \ + if((m)->mrl) \ + free((m)->mrl); \ + if((m)->link) \ + free((m)->link); \ + (m)->origin = NULL; \ + (m)->mrl = NULL; \ + (m)->link = NULL; \ + (m)->type = 0; \ + (m)->size = (off_t) 0; \ + } \ +} + +/* + * Duplicate two mrls entries (s = source, d = destination). + */ +#define MRL_DUPLICATE(s, d) { \ + assert((s) != NULL); \ + assert((d) != NULL); \ + \ + if((s)->origin) { \ + if((d)->origin) { \ + (d)->origin = (char *) realloc((d)->origin, strlen((s)->origin) + 1); \ + sprintf((d)->origin, "%s", (s)->origin); \ + } \ + else \ + (d)->origin = strdup((s)->origin); \ + } \ + else \ + (d)->origin = NULL; \ + \ + if((s)->mrl) { \ + if((d)->mrl) { \ + (d)->mrl = (char *) realloc((d)->mrl, strlen((s)->mrl) + 1); \ + sprintf((d)->mrl, "%s", (s)->mrl); \ + } \ + else \ + (d)->mrl = strdup((s)->mrl); \ + } \ + else \ + (d)->mrl = NULL; \ + \ + if((s)->link) { \ + if((d)->link) { \ + (d)->link = (char *) realloc((d)->link, strlen((s)->link) + 1); \ + sprintf((d)->link, "%s", (s)->link); \ + } \ + else \ + (d)->link = strdup((s)->link); \ + } \ + else \ + (d)->link = NULL; \ + \ + (d)->type = (s)->type; \ + (d)->size = (s)->size; \ +} + +/* + * Duplicate two arrays of mrls (s = source, d = destination). + */ +#define MRLS_DUPLICATE(s, d) { \ + int i = 0; \ + \ + assert((s) != NULL); \ + assert((d) != NULL); \ + \ + while((s) != NULL) { \ + d[i] = (mrl_t *) malloc(sizeof(mrl_t)); \ + MRL_DUPLICATE(s[i], d[i]); \ + i++; \ + } \ +} typedef struct { - char *mrl; /* <type>://<location */ - int type; /* match to mrl_type enum */ - off_t size; /* size of this source, may be 0 */ + char *origin; /* Origin of grabbed mrls (eg: path for file plugin */ + char *mrl; /* <type>://<location> */ + char *link; /* name of link, if exist, otherwise NULL */ + uint32_t type; /* match to mrl_type enum */ + off_t size; /* size of this source, may be 0 */ } mrl_t; /** |