static rc_t get_tool_options( Args * args, tool_options * options ) { uint32_t idx, count; rc_t rc = ArgsParamCount( args, &count ); if ( rc != 0 ) { PLOGERR( klogErr, ( klogErr, rc, "ArgsParamCount() failed in $(func)", "func=%s", __func__ ) ); } else if ( count > 0 ) { for ( idx = 0; idx < count && rc == 0; ++idx ) { const char *value = NULL; rc = ArgsParamValue( args, idx, &value ); if ( rc != 0 ) { PLOGERR( klogErr, ( klogErr, rc, "ArgsParamValue( $(idx) ) failed in $(func)", "idx=%d,func=%s", idx, __func__ ) ); } else if ( value != NULL ) rc = add_tool_options_path( options, value ); } } options->main_function = tf_unknown; options->detailed = get_bool_option( args, OPTION_DETAIL ); options->tstzero = get_bool_option( args, OPTION_TSTZERO ); options->remove_dirs = get_bool_option( args, OPTION_REMDIR ); if ( get_bool_option( args, OPTION_CREPORT ) ) options->main_function = tf_report; else if ( get_bool_option( args, OPTION_RREPORT ) ) options->main_function = tf_rreport; else if ( get_bool_option( args, OPTION_UNLOCK ) ) options->main_function = tf_unlock; else if ( get_bool_option( args, OPTION_CLEAR ) ) options->main_function = tf_clear; else { options->category = get_repo_select( args, OPTION_ENABLE ); if ( options->category != krepBadCategory ) options->main_function = tf_enable; if ( options->category == krepBadCategory ) { options->category = get_repo_select( args, OPTION_DISABLE ); if ( options->category != krepBadCategory ) options->main_function = tf_disable; } } if ( rc == 0 ) rc = get_user_repo_name( args, &options->user_repo_name ); if ( rc == 0 ) rc = get_max_remove( args, &options->max_remove ); return rc; }
static rc_t CC on_history_path( const String * part, void *data ) { tool_options * options = data; rc_t rc = add_tool_options_path( options, part->addr ); if ( options -> detailed ) KOutMsg( "source: %S\n", part ); return rc; }
static rc_t get_cache_path_from_repo_mgr( tool_options * options ) { KConfig * cfg; rc_t rc = KConfigMake ( &cfg, NULL ); if ( rc != 0 ) { PLOGERR( klogErr, ( klogErr, rc, "KConfigMake() failed in $(func)", "func=%s", __func__ ) ); } else { const KRepositoryMgr *repo_mgr; rc = KConfigMakeRepositoryMgrRead ( cfg, &repo_mgr ); if ( rc != 0 ) { PLOGERR( klogErr, ( klogErr, rc, "KConfigMakeRepositoryMgrRead() failed in $(func)", "func=%s", __func__ ) ); } else { KRepositoryVector repos; VectorInit ( &repos, 0, 5 ); rc = KRepositoryMgrUserRepositories ( repo_mgr, &repos ); if ( rc != 0 ) { rc = 0; /* we do not have a user-repository, but that is OK, the caller will display the lack of it ... */ } else { uint32_t idx; for ( idx = 0; idx < VectorLength( &repos ) && rc == 0; ++idx ) { const KRepository *repo = VectorGet( &repos, idx ); if ( repo != 0 ) { char path[ 4096 ]; rc = KRepositoryRoot ( repo, path, sizeof path, NULL ); if ( rc != 0 ) { PLOGERR( klogErr, ( klogErr, rc, "KRepositoryRoot( for repo # $(idx) ) failed in $(func)", "idx=%u,func=%s", idx, __func__ ) ); } else { bool add = true; if ( options->user_repo_name != NULL ) { char name[ 1024 ]; rc = KRepositoryName ( repo, name, sizeof name, NULL ); if ( rc != 0 ) { PLOGERR( klogErr, ( klogErr, rc, "KRepositoryName( for repo # $(idx) ) failed in $(func)", "idx=%u,func=%s", idx, __func__ ) ); } else add = string_cmp_1( options->user_repo_name, name ); } if ( add ) { rc = add_tool_options_path( options, path ); if ( options->detailed ) KOutMsg( "source: %s\n", path ); } } } } { rc_t rc2 = KRepositoryVectorWhack ( &repos ); if ( rc2 != 0 ) { PLOGERR( klogErr, ( klogErr, rc2, "KRepositoryVectorWhack() failed in $(func)", "func=%s", __func__ ) ); } } } { rc_t rc2 = KRepositoryMgrRelease ( repo_mgr ); if ( rc2 != 0 ) { PLOGERR( klogErr, ( klogErr, rc2, "KRepositoryMgrRelease() failed in $(func)", "func=%s", __func__ ) ); } } } { rc_t rc2 = KConfigRelease ( cfg ); if ( rc2 != 0 ) { PLOGERR( klogErr, ( klogErr, rc2, "KConfigRelease() failed in $(func)", "func=%s", __func__ ) ); } } } return rc; }