码迷,mamicode.com
首页 > 其他好文 > 详细

Mplayer 1.2 源码分析--main函数

时间:2015-11-11 15:08:29      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:

int main(int argc, char *argv[]) {

   
int opt_exit = 0; //标示 MPlayer 在没有播放视频时是否应该退出


int profile_config_loaded; //配置文件加载标示
profile_config_loaded = load_profile_config(mconfig, filename);
static int load_profile_config(m_config_t *conf, const char *const file) {
   if (file) {
       load_per_protocol_config(conf, file);
       
load_per_extension_config(conf, file);
       
load_per_file_config(conf, file);
   
}
   return file != NULL;
}


static void load_per_protocol_config(m_config_t *conf, const char *const file) {
   char *str;
   
char protocol[strlen(PROFILE_CFG_PROTOCOL) + strlen(file) + 1];
   
m_profile_t *p;

   
/* does filename actually uses a protocol ? */
   
str = strstr(file, "://");
   
if (!str)
       return;

   
sprintf(protocol, "%s%s", PROFILE_CFG_PROTOCOL, file);
   
protocol[strlen(PROFILE_CFG_PROTOCOL) + strlen(file) - strlen(str)] = \0;
   
p = m_config_get_profile(conf, protocol);
   
if (p) {
       mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_LoadingProtocolProfile, protocol);
       
m_config_set_profile(conf, p);
   
}
}
static void load_per_extension_config(m_config_t *conf, const char *const file) {
   char *str;
   
char extension[strlen(PROFILE_CFG_EXTENSION) + 8];
   
m_profile_t *p;

   
/* does filename actually have an extension ? */
   
str = strrchr(filename, ‘.‘);
   
if (!str)
       return;

   
sprintf(extension, PROFILE_CFG_EXTENSION);
   
strncat(extension, ++str, 7);
   
p = m_config_get_profile(conf, extension);
   
if (p) {
       mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_LoadingExtensionProfile, extension);
       
m_config_set_profile(conf, p);
   
}
}
static void load_per_file_config(m_config_t *conf, const char *const file) {
   char *confpath;
   
char cfg[PATH_MAX];
   
const char *name;

   
if (strlen(file) > PATH_MAX - 14) {
       mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_FilenameTooLong);
       
return;
   
}
   sprintf(cfg, "%s.conf", file);

   
name = mp_basename(cfg);
   
if (use_filedir_conf) {
       char dircfg[PATH_MAX];
       
strcpy(dircfg, cfg);
       
strcpy(dircfg + (name - cfg), "mplayer.conf");
       
try_load_config(conf, dircfg);

       
if (try_load_config(conf, cfg))
           return;
   
}

   if ((confpath = get_path(name)) != NULL) {
       try_load_config(conf, confpath);

       
free(confpath);
   
}
}


Mplayer 1.2 源码分析--main函数

标签:

原文地址:http://my.oschina.net/fonddream/blog/528872

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!