BMessage GoogleTalk::GetSettingsTemplate() { BMessage main_msg(IM::SETTINGS_TEMPLATE); BMessage user_msg; user_msg.AddString("name","username"); user_msg.AddString("description", "Gmail Username"); user_msg.AddInt32("type",B_STRING_TYPE); /* BMessage serv_msg; serv_msg.AddString("name","server"); serv_msg.AddString("description", "Google Server"); serv_msg.AddInt32("type",B_STRING_TYPE); */ BMessage pass_msg; pass_msg.AddString("name","password"); pass_msg.AddString("description", "Gmail Password"); pass_msg.AddInt32("type",B_STRING_TYPE); pass_msg.AddBool("is_secret", true); BMessage res; res.AddString("name","resource"); res.AddString("description", "Resource"); res.AddString("default", "IM Kit GoogleTalk AddOn"); res.AddInt32("type",B_STRING_TYPE); main_msg.AddMessage("setting", &user_msg); //main_msg.AddMessage("setting", &serv_msg); main_msg.AddMessage("setting", &pass_msg); main_msg.AddMessage("setting", &res); return main_msg; }
BMessage AIMProtocol::GetSettingsTemplate() { BMessage main_msg(IM::SETTINGS_TEMPLATE); BMessage user_msg; user_msg.AddString("name","screenname"); user_msg.AddString("description", "Screen Name"); user_msg.AddInt32("type",B_STRING_TYPE); BMessage pass_msg; pass_msg.AddString("name","password"); pass_msg.AddString("description", "Password"); pass_msg.AddInt32("type",B_STRING_TYPE); pass_msg.AddBool("is_secret", true); BMessage profile; profile.AddString("name", "profile"); profile.AddString("description", "User Profile"); profile.AddInt32("type", B_STRING_TYPE); profile.AddString("default", "IM Kit: AIM user"); profile.AddBool("multi_line", true); BMessage icon; icon.AddString("name", "icon"); icon.AddString("description", "Buddy Icon"); icon.AddInt32("type", B_STRING_TYPE); main_msg.AddMessage("setting",&user_msg); main_msg.AddMessage("setting",&pass_msg); main_msg.AddMessage("setting", &profile); main_msg.AddMessage("setting", &icon); return main_msg; }
void saldl(saldl_params *params_ptr) { /* Definitions */ info_s info = DEF_INFO_S; info.params = params_ptr; /* Handle signals */ info_global = &info; saldl_handle_signals(); /* Need to be set as early as possible */ set_color(¶ms_ptr->no_color); set_verbosity(¶ms_ptr->verbosity, ¶ms_ptr->libcurl_verbosity); /* Check if loaded libcurl is recent enough */ info.curl_info = curl_version_info(CURLVERSION_NOW); check_libcurl(info.curl_info); /* Library initializations, should run only once */ SALDL_ASSERT(!curl_global_init(CURL_GLOBAL_ALL)); SALDL_ASSERT(!evthread_use_pthreads()); /* get/set initial info */ main_msg("URL", "%s", params_ptr->start_url); check_url(params_ptr->start_url); get_info(&info); set_info(&info); check_remote_file_size(&info); /* initialize chunks early for extra_resume() */ chunks_init(&info); if (params_ptr->resume) { check_resume(&info); } print_chunk_info(&info); global_progress_init(&info); /* exit here if dry_run was set */ if ( params_ptr->dry_run ) { saldl_free_all(&info); finish_msg_and_exit("Dry-run done."); } check_files_and_dirs(&info); /* Check if download was interrupted after all data was merged */ if (info.already_finished) { goto saldl_all_data_merged; } /* threads, needed by set_modes() */ info.threads = saldl_calloc(params_ptr->num_connections, sizeof(thread_s)); set_modes(&info); /* 1st iteration */ for (size_t counter = 0; counter < params_ptr->num_connections; counter++) { queue_next_chunk(&info, counter, 1); } /* Create event pthreads */ saldl_pthread_create(&info.trigger_events_pth, NULL, events_trigger_thread, &info); if (!params_ptr->read_only && !params_ptr->to_stdout) { saldl_pthread_create(&info.sync_ctrl_pth, NULL, sync_ctrl, &info); } if (info.chunk_count != 1) { saldl_pthread_create(&info.status_display_pth, NULL, status_display, &info); saldl_pthread_create(&info.queue_next_pth, NULL, queue_next_thread, &info); saldl_pthread_create(&info.merger_pth, NULL, merger_thread, &info); } /* Now that everything is initialized */ info.session_status = SESSION_IN_PROGRESS; /* Avoid race in joining event threads if the session was interrupted, or finishing without downloading if single_mode */ do { usleep(100000); } while (params_ptr->single_mode ? info.chunks[0].progress != PRG_FINISHED : info.global_progress.complete_size != info.file_size); /* Join event pthreads */ if (!params_ptr->read_only && !params_ptr->to_stdout) { join_event_pth(&info.ev_ctrl ,&info.sync_ctrl_pth); } if (info.chunk_count !=1) { join_event_pth(&info.ev_status, &info.status_display_pth); join_event_pth(&info.ev_queue, &info.queue_next_pth); join_event_pth(&info.ev_merge, &info.merger_pth); } info.events_queue_done = true; event_queue(&info.ev_trigger, NULL); join_event_pth(&info.ev_trigger ,&info.trigger_events_pth); saldl_all_data_merged: /* Remove tmp_dirname */ if (!params_ptr->read_only && !params_ptr->mem_bufs && !params_ptr->single_mode) { if ( rmdir(info.tmp_dirname) ) { err_msg(FN, "Failed to delete %s: %s", info.tmp_dirname, strerror(errno) ); } } /*** Final Steps ***/ /* One last check */ if (info.file_size && !params_ptr->no_remote_info && !params_ptr->read_only && !params_ptr->to_stdout && (!info.remote_info.content_encoded || params_ptr->no_decompress)) { off_t saved_file_size = saldl_fsizeo(info.part_filename, info.file); if (saved_file_size != info.file_size) { pre_fatal(FN, "Unexpected saved file size (%"SAL_JU"!=%"SAL_JU").", saved_file_size, info.file_size); pre_fatal(FN, "This could happen if you're downloading from a dynamic site."); pre_fatal(FN, "If that's the case and the download is small, retry with --no-remote-info"); fatal(FN, "If you think that's a bug in saldl, report it: https://github.com/saldl/saldl/issues"); } } else { debug_msg(FN, "Strict check for finished file size skipped."); } if (!params_ptr->read_only && !params_ptr->to_stdout) { saldl_fclose(info.part_filename, info.file); if (rename(info.part_filename, params_ptr->filename) ) { err_msg(FN, "Failed to rename now-complete %s to %s: %s", info.part_filename, params_ptr->filename, strerror(errno)); } saldl_fclose(info.ctrl_filename, info.ctrl_file); if ( remove(info.ctrl_filename) ) { err_msg(FN, "Failed to remove %s: %s", info.ctrl_filename, strerror(errno)); } } /* cleanups */ curl_cleanup(&info); saldl_free_all(&info); finish_msg_and_exit("Download Finished."); }