FileProgressStatus file_progress_real_query_replace (enum OperationMode mode, char *destname, struct stat *_s_stat, struct stat *_d_stat) { if (file_progress_replace_result < REPLACE_ALWAYS){ file_progress_replace_filename = destname; s_stat = _s_stat; d_stat = _d_stat; init_replace (mode); run_dlg (replace_dlg); file_progress_replace_result = replace_dlg->ret_value; if (file_progress_replace_result == B_CANCEL) file_progress_replace_result = REPLACE_ABORT; destroy_dlg (replace_dlg); } switch (file_progress_replace_result){ case REPLACE_UPDATE: do_refresh (); if (_s_stat->st_mtime > _d_stat->st_mtime) return FILE_CONT; else return FILE_SKIP; case REPLACE_SIZE: do_refresh (); if (_s_stat->st_size == _d_stat->st_size) return FILE_SKIP; else return FILE_CONT; case REPLACE_REGET: /* Carefull: we fall through and set do_append */ file_progress_do_reget = _d_stat->st_size; case REPLACE_APPEND: file_progress_do_append = 1; case REPLACE_YES: case REPLACE_ALWAYS: do_refresh (); return FILE_CONT; case REPLACE_NO: case REPLACE_NEVER: do_refresh (); return FILE_SKIP; case REPLACE_ABORT: default: return FILE_ABORT; } }
int main(int argc, char *argv[]) { int i,error; char word_end_chars[256],*pos; POINTER_ARRAY from,to; REPLACE *replace; MY_INIT(argv[0]); if (static_get_options(&argc,&argv)) exit(1); if (get_replace_strings(&argc,&argv,&from,&to)) exit(1); for (i=1,pos=word_end_chars ; i < 256 ; i++) if (my_isspace(&my_charset_latin1,i)) *pos++= (char) i; *pos=0; if (!(replace=init_replace((char**) from.typelib.type_names, (char**) to.typelib.type_names, (uint) from.typelib.count,word_end_chars))) exit(1); free_pointer_array(&from); free_pointer_array(&to); if (initialize_buffer()) return 1; error=0; if (argc == 0) error=convert_pipe(replace,stdin,stdout); else { while (argc--) { error=convert_file(replace,*(argv++)); } } free_buffer(); my_free(replace); my_end(verbose ? MY_CHECK_ERROR | MY_GIVE_INFO : MY_CHECK_ERROR); exit(error ? 2 : 0); return 0; /* No compiler warning */ } /* main */