summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/xine/Makefile.am2
-rw-r--r--include/xine/base64.h94
-rw-r--r--include/xine/configfile.h35
-rw-r--r--include/xine/plugin_catalog.h1
-rw-r--r--include/xine/xineutils.h1
5 files changed, 130 insertions, 3 deletions
diff --git a/include/xine/Makefile.am b/include/xine/Makefile.am
index cc086dfaf..14eb98445 100644
--- a/include/xine/Makefile.am
+++ b/include/xine/Makefile.am
@@ -8,4 +8,4 @@ xineinclude_HEADERS = version.h buffer.h metronom.h configfile.h vo_scale.h \
io_helper.h broadcaster.h info_helper.h refcounter.h alphablend.h \
demux.h input_plugin.h attributes.h compat.h xine_buffer.h \
xineutils.h xmllexer.h xmlparser.h list.h array.h sorted_array.h \
- pool.h ring_buffer.h os_types.h vdr.h
+ pool.h ring_buffer.h os_types.h vdr.h base64.h
diff --git a/include/xine/base64.h b/include/xine/base64.h
new file mode 100644
index 000000000..61d362150
--- /dev/null
+++ b/include/xine/base64.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2000 Robert Kaye
+ *
+ * This file is part of xine, a free video player.
+ *
+ * xine is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * xine is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ * Base64 encoding modified for Musicbrainz
+ * relicensed under the GNU General Public License for use in xine-lib
+ */
+/* --------------------------------------------------------------------------
+
+ MusicBrainz -- The Internet music metadatabase
+
+ Copyright (C) 2000 Robert Kaye
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+
+----------------------------------------------------------------------------*/
+/*
+ * Program: RFC-822 routines (originally from SMTP)
+ *
+ * Author: Mark Crispin
+ * Networks and Distributed Computing
+ * Computing & Communications
+ * University of Washington
+ * Administration Building, AG-44
+ * Seattle, WA 98195
+ * Internet: MRC@CAC.Washington.EDU
+ *
+ * Date: 27 July 1988
+ * Last Edited: 10 September 1998
+ *
+ * Sponsorship: The original version of this work was developed in the
+ * Symbolic Systems Resources Group of the Knowledge Systems
+ * Laboratory at Stanford University in 1987-88, and was funded
+ * by the Biomedical Research Technology Program of the National
+ * Institutes of Health under grant number RR-00785.
+ *
+ * Original version Copyright 1988 by The Leland Stanford Junior University
+ * Copyright 1998 by the University of Washington
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notices appear in all copies and that both the
+ * above copyright notices and this permission notice appear in supporting
+ * documentation, and that the name of the University of Washington or The
+ * Leland Stanford Junior University not be used in advertising or publicity
+ * pertaining to distribution of the software without specific, written prior
+ * permission. This software is made available "as is", and
+ * THE UNIVERSITY OF WASHINGTON AND THE LELAND STANFORD JUNIOR UNIVERSITY
+ * DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE UNIVERSITY OF
+ * WASHINGTON OR THE LELAND STANFORD JUNIOR UNIVERSITY BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef BASE64_H
+#define BASE64_H
+
+unsigned char *xine_rfc822_binary (void *src,unsigned long srcl,unsigned long *len) XINE_PROTECTED;
+
+char *xine_base64_encode (const void *src, unsigned long srcl, unsigned long *len) XINE_PROTECTED;
+void *xine_base64_decode (const char *src, unsigned long srcl, unsigned long *len) XINE_PROTECTED;
+
+#endif
diff --git a/include/xine/configfile.h b/include/xine/configfile.h
index 724a75245..e8f2c070e 100644
--- a/include/xine/configfile.h
+++ b/include/xine/configfile.h
@@ -148,6 +148,8 @@ struct config_values_s {
xine_config_cb_t changed_cb,
void *cb_data);
+ void (*register_entry) (config_values_t *self, cfg_entry_t* entry);
+
/** convenience function to update range, enum, num and bool values */
void (*update_num) (config_values_t *self, const char *key, int value);
@@ -167,7 +169,7 @@ struct config_values_s {
cfg_entry_t* (*lookup_entry) (config_values_t *self, const char *key);
/**
- * unregister callback function
+ * unregister entry callback function
*/
void (*unregister_callback) (config_values_t *self, const char *key);
@@ -176,12 +178,41 @@ struct config_values_s {
*/
void (*dispose) (config_values_t *self);
- /*
+ /**
+ * callback called when a new config entry is registered
+ */
+ void (*set_new_entry_callback) (config_values_t *self, xine_config_cb_t new_entry_cb, void *cb_data);
+
+ /**
+ * unregister the callback
+ */
+ void (*unset_new_entry_callback) (config_values_t *self);
+
+ /**
+ * serialize a config entry.
+ * return a base64 null terminated string.
+ */
+ char* (*get_serialized_entry) (config_values_t *self, const char *key);
+
+ /**
+ * deserialize a config entry.
+ * value is a base 64 encoded string
+ * return the key of the serialized entry
+ */
+ char* (*register_serialized_entry) (config_values_t *self, const char *value);
+
+ /**
* config values are stored here:
*/
cfg_entry_t *first, *last, *cur;
/**
+ * new entry callback
+ */
+ xine_config_cb_t new_entry_cb;
+ void *new_entry_cbdata;
+
+ /**
* mutex for modification to the config
*/
pthread_mutex_t config_lock;
diff --git a/include/xine/plugin_catalog.h b/include/xine/plugin_catalog.h
index be02c3649..bacdfa56c 100644
--- a/include/xine/plugin_catalog.h
+++ b/include/xine/plugin_catalog.h
@@ -45,6 +45,7 @@ typedef struct {
plugin_file_t *file;
plugin_info_t *info;
void *plugin_class;
+ xine_list_t *config_entry_list;
int ref; /* count intances of plugins */
int priority;
} plugin_node_t ;
diff --git a/include/xine/xineutils.h b/include/xine/xineutils.h
index 5f052ee58..9fb1ad538 100644
--- a/include/xine/xineutils.h
+++ b/include/xine/xineutils.h
@@ -47,6 +47,7 @@ extern "C" {
#include <xine/list.h>
#include <xine/array.h>
#include <xine/sorted_array.h>
+#include <xine/base64.h>
#include <stdio.h>
#include <string.h>