diff options
author | Daniel Caujolle-Bert <f1rmb@users.sourceforge.net> | 2001-11-30 21:55:05 +0000 |
---|---|---|
committer | Daniel Caujolle-Bert <f1rmb@users.sourceforge.net> | 2001-11-30 21:55:05 +0000 |
commit | e83128d4e0e1882a53943c2df3f7e64885223a3a (patch) | |
tree | edf1e49f9b1af43e9018bed75b596457b759262b /src/input/input_plugin.h | |
parent | 917fa5603cb9fa67c224846bcbf34bce4a8baa75 (diff) | |
download | xine-lib-e83128d4e0e1882a53943c2df3f7e64885223a3a.tar.gz xine-lib-e83128d4e0e1882a53943c2df3f7e64885223a3a.tar.bz2 |
Add an automatic way for input plugin to add extra valid mrls:
add at bottom of init_input_plugin() a line like this:
REGISTER_VALID_MRLS(this->config, "mrl.mrls_mpeg_block", "xxx");
CVS patchset: 1147
CVS date: 2001/11/30 21:55:05
Diffstat (limited to 'src/input/input_plugin.h')
-rw-r--r-- | src/input/input_plugin.h | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/input/input_plugin.h b/src/input/input_plugin.h index eb9a597c3..f14edf5ab 100644 --- a/src/input/input_plugin.h +++ b/src/input/input_plugin.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: input_plugin.h,v 1.16 2001/10/22 22:50:01 richwareham Exp $ + * $Id: input_plugin.h,v 1.17 2001/11/30 21:55:05 f1rmb Exp $ */ #ifndef HAVE_INPUT_PLUGIN_H @@ -140,6 +140,40 @@ extern void *xmalloc(size_t); } \ } +#define REGISTER_VALID_MRLS(config, mrltype, mrls) { \ + cfg_entry_t *entry; \ + char *sticky; \ + char *v_mrls; \ + char *a_def = NULL; \ + \ + (config)->register_empty((config), (mrltype)); \ + entry = (config)->lookup_entry((config), (mrltype)); \ + \ + sticky = entry->str_sticky; \ + v_mrls = (entry->str_value) ? entry->str_value : entry->unknown_value; \ + \ + if(v_mrls) { \ + a_def = strstr(v_mrls, (mrls)); \ + if(a_def) \ + goto __done; \ + } \ + \ + if(!sticky) { \ + sticky = (char *) xine_xmalloc(strlen((mrls)) + 2); \ + sprintf(sticky, ",%s", (mrls)); \ + entry->str_sticky = sticky; \ + } \ + else { \ + a_def = strstr(sticky, (mrls)); \ + if(!a_def) { \ + sticky = (char *) realloc(sticky, strlen((mrls)) + 2); \ + sprintf(sticky, "%s,%s", sticky, (mrls)); \ + } \ + } \ +__done: \ +} + + typedef struct { char *origin; /* Origin of grabbed mrls (eg: path for file plugin */ char *mrl; /* <type>://<location> */ |