diff options
| -rw-r--r-- | HISTORY | 1 | ||||
| -rw-r--r-- | config.c | 8 | ||||
| -rw-r--r-- | config.h | 3 | ||||
| -rw-r--r-- | frontend_local.c | 4 | ||||
| -rw-r--r-- | xine_fbfe_frontend.c | 10 | ||||
| -rw-r--r-- | xine_frontend.c | 9 | ||||
| -rw-r--r-- | xine_frontend.h | 5 | ||||
| -rw-r--r-- | xine_frontend_main.c | 21 | 
8 files changed, 44 insertions, 17 deletions
| @@ -3,6 +3,7 @@ VDR Plugin 'xineliboutput' Revision History  ????-??-??: Version 1.1.0 +- Added '-C'/'--config' command-line option to specify xine's configuration file.  - Replaced cIConv with VDR's cCharConv.  - Supports only for vdr-1.6.0 or later.  - Added an option to limit number of remote clients @@ -4,7 +4,7 @@   * See the main source file 'xineliboutput.c' for copyright information and   * how to reach the author.   * - * $Id: config.c,v 1.75 2008-11-20 11:46:30 rofafor Exp $ + * $Id: config.c,v 1.76 2008-12-19 16:01:54 rofafor Exp $   *   */ @@ -462,6 +462,7 @@ config_t::config_t() {    speaker_type = SPEAKERS_STEREO;    post_plugins = NULL; +  config_file = NULL;    audio_delay       = 0;    audio_compression = 0; @@ -606,7 +607,7 @@ bool config_t::ProcessArg(const char *Name, const char *Value)  bool config_t::ProcessArgs(int argc, char *argv[])  { -  static const char short_options[] = "fDw:h:l:r:A:V:d:P:pc"; +  static const char short_options[] = "fDw:h:l:r:A:V:d:P:C:pc";    static const struct option long_options[] = {        { "fullscreen",   no_argument,       NULL, 'f' }, @@ -622,6 +623,7 @@ bool config_t::ProcessArgs(int argc, char *argv[])        { "video",        required_argument, NULL, 'V' },        { "display",      required_argument, NULL, 'd' },        { "post",         required_argument, NULL, 'P' }, +      { "config",       required_argument, NULL, 'C' },        { "primary",      no_argument,       NULL, 'p' },        { "exit-on-close",no_argument,     NULL, 'c' },        { NULL } @@ -686,6 +688,8 @@ bool config_t::ProcessArgs(int argc, char *argv[])                  post_plugins = strcatrealloc(post_plugins, ";");                post_plugins = strcatrealloc(post_plugins, optarg);                break; +    case 'C': config_file = strdup(optarg); +              break;      case 'p': ProcessArg("ForcePrimaryDevice", "1");                break;      case 'c': exit_on_close = 1; @@ -4,7 +4,7 @@   * See the main source file 'xineliboutput.c' for copyright information and   * how to reach the author.   * - * $Id: config.h,v 1.57 2008-11-20 11:46:30 rofafor Exp $ + * $Id: config.h,v 1.58 2008-12-19 16:01:55 rofafor Exp $   *   */ @@ -244,6 +244,7 @@ class config_t {      char audio_driver[32];      char audio_port[64];      char *post_plugins;      // static post plugins from command line options +    char *config_file;       // config file from command line options      int  pes_buffers;      char modeline[64]; diff --git a/frontend_local.c b/frontend_local.c index 05d36192..60baa53f 100644 --- a/frontend_local.c +++ b/frontend_local.c @@ -4,7 +4,7 @@   * See the main source file 'xineliboutput.c' for copyright information and   * how to reach the author.   * - * $Id: frontend_local.c,v 1.34 2008-11-20 11:46:31 rofafor Exp $ + * $Id: frontend_local.c,v 1.35 2008-12-19 16:01:55 rofafor Exp $   *   */ @@ -365,7 +365,7 @@ void cXinelibLocal::Action(void)  	if(!fe->xine_init(fe, xc.audio_driver, xc.audio_port,  			  xc.video_driver,  			  xc.pes_buffers, -			  xc.post_plugins)) { +			  xc.post_plugins, xc.config_file)) {  	  LOGMSG("cXinelibLocal: Error initializing frontend");  	  break;  	} diff --git a/xine_fbfe_frontend.c b/xine_fbfe_frontend.c index 9f954fb8..beb4d885 100644 --- a/xine_fbfe_frontend.c +++ b/xine_fbfe_frontend.c @@ -4,7 +4,7 @@   * See the main source file 'xineliboutput.c' for copyright information and   * how to reach the author.   * - * $Id: xine_fbfe_frontend.c,v 1.42 2008-11-17 23:39:20 phintuka Exp $ + * $Id: xine_fbfe_frontend.c,v 1.43 2008-12-19 16:01:55 rofafor Exp $   *   */ @@ -40,7 +40,8 @@ typedef struct fbfe_s {  		      const char *audio_port,  		      const char *video_driver,   		      int pes_buffers, -		      const char *static_post_plugins); +		      const char *static_post_plugins, +		      const char *config_file);    /* display */  /*char   *modeline;*/ @@ -267,7 +268,8 @@ static int fbfe_xine_init(frontend_t *this_gen, const char *audio_driver,  			  const char *audio_port,  			  const char *video_driver,   			  int pes_buffers, -			  const char *static_post_plugins) +			  const char *static_post_plugins, +			  const char *config_file)  {    fbfe_t *this = (fbfe_t*)this_gen; @@ -275,7 +277,7 @@ static int fbfe_xine_init(frontend_t *this_gen, const char *audio_driver,      update_DFBARGS(this->x.video_port_name);    return this->fe_xine_init(this_gen, audio_driver, audio_port, -			    video_driver, pes_buffers, static_post_plugins); +			    video_driver, pes_buffers, static_post_plugins, config_file);  }  static frontend_t *fbfe_get_frontend(void) diff --git a/xine_frontend.c b/xine_frontend.c index 482d4566..acdd0d7f 100644 --- a/xine_frontend.c +++ b/xine_frontend.c @@ -4,7 +4,7 @@   * See the main source file 'xineliboutput.c' for copyright information and   * how to reach the author.   * - * $Id: xine_frontend.c,v 1.92 2008-12-18 14:12:43 phintuka Exp $ + * $Id: xine_frontend.c,v 1.93 2008-12-19 16:01:55 rofafor Exp $   *   */ @@ -530,7 +530,8 @@ static int fe_xine_init(frontend_t *this_gen, const char *audio_driver,  			const char *audio_port,  			const char *video_driver,   			int pes_buffers, -			const char *static_post_plugins) +			const char *static_post_plugins, +			const char *config_file)  {    fe_t *this = (fe_t*)this_gen;    post_plugins_t *posts = NULL; @@ -569,7 +570,9 @@ static int fe_xine_init(frontend_t *this_gen, const char *audio_driver,    free(this->configfile);    this->configfile = NULL; -  if(asprintf(&this->configfile, "%s%s", xine_get_homedir(),  +  if (config_file) +    this->configfile = strdup(config_file); +  else if(asprintf(&this->configfile, "%s%s", xine_get_homedir(),   	      "/.xine/config_xineliboutput") < 0)      return 0; diff --git a/xine_frontend.h b/xine_frontend.h index b8523dda..e124ac36 100644 --- a/xine_frontend.h +++ b/xine_frontend.h @@ -4,7 +4,7 @@   * See the main source file 'xineliboutput.c' for copyright information and   * how to reach the author.   * - * $Id: xine_frontend.h,v 1.16 2008-12-13 23:59:05 phintuka Exp $ + * $Id: xine_frontend.h,v 1.17 2008-12-19 16:01:55 rofafor Exp $   *   */ @@ -79,7 +79,8 @@ struct frontend_s {                      const char *audio_port,                      const char *video_driver,                      int pes_buffers, -                    const char *static_post); +                    const char *static_post, +                    const char *config_file);    int  (*xine_open)(frontend_t*, const char *mrl);    int  (*xine_play)(frontend_t*);    int  (*xine_stop)(frontend_t*); diff --git a/xine_frontend_main.c b/xine_frontend_main.c index 7436fd6d..dcebaf4e 100644 --- a/xine_frontend_main.c +++ b/xine_frontend_main.c @@ -4,7 +4,7 @@   * See the main source file 'xineliboutput.c' for copyright information and   * how to reach the author.   * - * $Id: xine_frontend_main.c,v 1.70 2008-12-14 00:11:53 phintuka Exp $ + * $Id: xine_frontend_main.c,v 1.71 2008-12-19 16:01:55 rofafor Exp $   *   */ @@ -396,6 +396,7 @@ static const char help_str[] =      "                                 --post=upmix;tvtime:enabled=1,cheap_mode=1\n"      "   --lirc[=devicename]           Use lirc input device\n"      "                                 Optional lirc socket name can be given\n" +    "   --config=file                 Use config file (default: ~/.xine/config_xineliboutput).\n"      "   --verbose                     Verbose debug output\n"      "   --silent                      Silent mode (report only errors)\n"      "   --syslog                      Write all output to system log\n" @@ -412,7 +413,7 @@ static const char help_str[] =      "                                 are tried in following order:\n"      "                                 local pipe, rtp, udp, tcp\n\n"; -static const char short_options[] = "HL:A:V:d:a:fDw:h:P:vslkobtur"; +static const char short_options[] = "HA:V:d:a:fDw:h:P:L:C:vslkobtur";  static const struct option long_options[] = {    { "help",       no_argument,       NULL, 'H' }, @@ -428,6 +429,7 @@ static const struct option long_options[] = {    { "noscaling",  no_argument,       NULL, 'n' },    { "post",       required_argument, NULL, 'P' },    { "lirc",       optional_argument, NULL, 'L' }, +  { "config",     required_argument, NULL, 'C' },    { "verbose", no_argument,  NULL, 'v' },    { "silent",  no_argument,  NULL, 's' }, @@ -465,6 +467,7 @@ int main(int argc, char *argv[])    char *aspect_controller = NULL;    int repeat_emu = 0;    char *exec_name = argv[0]; +  char *config_file = NULL;    LogToSysLog = 0; @@ -551,6 +554,9 @@ int main(int argc, char *argv[])                static_post_plugins = strcatrealloc(static_post_plugins, optarg);                PRINTF("Post plugins: %s\n", static_post_plugins);                break; +    case 'C': config_file = strdup(optarg); +              PRINTF("Config file: %s\n", config_file); +              break;      case 'L': lirc_dev = optarg ? : strdup("/dev/lircd");                if (strstr((char*)lirc_dev, ",repeatemu")) {                   *strstr((char*)lirc_dev, ",repeatemu") = 0; @@ -700,7 +706,7 @@ int main(int argc, char *argv[])    }    /* Initialize xine */ -  if (!fe->xine_init(fe, adrv, adev, gdrv, 250, static_post_plugins)) { +  if (!fe->xine_init(fe, adrv, adev, gdrv, 250, static_post_plugins, config_file)) {      fprintf(stderr, "Error initializing xine\n");      list_xine_plugins(fe, SysLogLevel>2);      fe->fe_free(fe); @@ -790,5 +796,14 @@ int main(int argc, char *argv[])    fe->fe_free(fe); +  if (config_file) free(config_file); +  if (static_post_plugins) free(static_post_plugins); +  if (mrl) free(mrl); +  if (adrv) free(adrv); +  if (gdrv) free(gdrv); +  if (video_port) free(video_port); +  if (aspect_controller) free(aspect_controller); +  if (lirc_dev) free(lirc_dev); +    return xine_finished==FE_XINE_EXIT ? 0 : 1;  } | 
