char *linphone_gtk_call_logs_storage_get_db_file(const char *filename){ const int path_max=1024; char *db_file=NULL; db_file=(char *)g_malloc(path_max*sizeof(char)); if (filename==NULL) filename=CONFIG_FILE; /*try accessing a local file first if exists*/ if (bctbx_file_exist(CONFIG_FILE)==0){ snprintf(db_file,path_max,"%s",filename); }else{ #ifdef _WIN32 const char *appdata=getenv("APPDATA"); if (appdata){ snprintf(db_file,path_max,"%s\\%s",appdata,LINPHONE_CONFIG_DIR); CreateDirectory(db_file,NULL); snprintf(db_file,path_max,"%s\\%s\\%s",appdata,LINPHONE_CONFIG_DIR,filename); } #else const char *home=getenv("HOME"); if (home==NULL) home="."; snprintf(db_file,path_max,"%s/%s",home,filename); #endif } return db_file; }
/* * Up to version 1.2.1 linphone used ~/.linphonec for * CLI and ~/.gnome2/linphone for GUI as configuration file. * In newer version both interfaces will use ~/.linphonerc. * * This function helps transparently migrating from one * to the other layout using the following heuristic: * * IF new_config EXISTS => do nothing * ELSE IF old_cli_config EXISTS => copy to new_config * ELSE IF old_gui_config EXISTS => copy to new_config * * Returns: * 0 if it did nothing * 1 if it migrated successfully * -1 on error */ static int handle_configfile_migration() { #if !defined(_WIN32_WCE) char *old_cfg_gui; char *old_cfg_cli; char *new_cfg; const char *home = getenv("HOME"); new_cfg = ms_strdup_printf("%s/.linphonerc", home); /* * If the *NEW* configuration already exists * do nothing. */ if (bctbx_file_exist(new_cfg)==0) { free(new_cfg); return 0; } old_cfg_cli = ms_strdup_printf("%s/.linphonec", home); /* * If the *OLD* CLI configurations exist copy it to * the new file and make it a symlink. */ if (bctbx_file_exist(old_cfg_cli)==0) { if ( ! copy_file(old_cfg_cli, new_cfg) ) { free(old_cfg_cli); free(new_cfg); return -1; } printf("%s copied to %s\n", old_cfg_cli, new_cfg); free(old_cfg_cli); free(new_cfg); return 1; } free(old_cfg_cli); old_cfg_gui = ms_strdup_printf("%s/.gnome2/linphone", home); /* * If the *OLD* GUI configurations exist copy it to * the new file and make it a symlink. */ if (bctbx_file_exist(old_cfg_gui)==0) { if ( ! copy_file(old_cfg_gui, new_cfg) ) { exit(EXIT_FAILURE); free(old_cfg_gui); free(new_cfg); return -1; } printf("%s copied to %s\n", old_cfg_gui, new_cfg); free(old_cfg_gui); free(new_cfg); return 1; } free(old_cfg_gui); free(new_cfg); #endif /*_WIN32_WCE*/ return 0; }
/* * Parse command line switches * * Use globals: * * - int trace_level * - char *logfile_name * - char *configfile_name * - char *sipAddr */ static int linphonec_parse_cmdline(int argc, char **argv) { int arg_num=1; while (arg_num < argc) { int old_arg_num = arg_num; if (strncmp ("-d", argv[arg_num], 2) == 0) { arg_num++; if (arg_num < argc) trace_level = atoi (argv[arg_num]); else trace_level = 1; } else if (strncmp ("-l", argv[arg_num], 2) == 0) { arg_num++; if (arg_num < argc) logfile_name = argv[arg_num]; } else if (strncmp ("-c", argv[arg_num], 2) == 0) { if ( ++arg_num >= argc ) print_usage(EXIT_FAILURE); #ifdef _MSC_VER if (strcmp(argv[arg_num], "NUL") != 0) { #endif #if !defined(_WIN32_WCE) if (bctbx_file_exist(argv[arg_num]) != 0) { fprintf(stderr, "Cannot open config file %s.\n", argv[arg_num]); exit(EXIT_FAILURE); } #endif /*_WIN32_WCE*/ #ifdef _MSC_VER } #endif snprintf(configfile_name, PATH_MAX, "%s", argv[arg_num]); } else if (strncmp ("-b", argv[arg_num], 2) == 0) { if ( ++arg_num >= argc ) print_usage(EXIT_FAILURE); #if !defined(_WIN32_WCE) if (bctbx_file_exist(argv[arg_num])!=0 ) { fprintf (stderr, "Cannot open config file %s.\n", argv[arg_num]); exit(EXIT_FAILURE); } #endif /*_WIN32_WCE*/ factory_configfile_name = argv[arg_num]; } else if (strncmp ("-s", argv[arg_num], 2) == 0) { arg_num++; if (arg_num < argc) sip_addr_to_call = argv[arg_num]; } else if (strncmp ("-a", argv[arg_num], 2) == 0) { auto_answer = TRUE; } else if (strncmp ("--real-early-media", argv[arg_num], strlen("--real-early-media")) == 0) { real_early_media_sending = TRUE; } else if (strncmp ("-C", argv[arg_num], 2) == 0) { vcap_enabled = TRUE; } else if (strncmp ("-D", argv[arg_num], 2) == 0) { display_enabled = TRUE; } else if (strncmp ("-V", argv[arg_num], 2) == 0) { display_enabled = TRUE; vcap_enabled = TRUE; preview_enabled=TRUE; } else if ((strncmp ("-v", argv[arg_num], 2) == 0) || (strncmp ("--version", argv[arg_num], strlen ("--version")) == 0)) { #if !defined(_WIN32_WCE) printf ("version: " LINPHONE_VERSION "\n"); #endif exit (EXIT_SUCCESS); } else if (strncmp ("-S", argv[arg_num], 2) == 0) { show_general_state = TRUE; } else if (strncmp ("--pipe", argv[arg_num], 6) == 0) { unix_socket=1; } else if (strncmp ("--wid", argv[arg_num], 5) == 0) { arg_num++; if (arg_num < argc) { char *tmp; window_id = (void *)strtol( argv[arg_num], &tmp, 0 ); lpc_video_params.wid = window_id; } } else if (old_arg_num == arg_num) { fprintf (stderr, "ERROR: bad arguments\n"); print_usage (EXIT_FAILURE); } arg_num++; } return 1; }