Re: updating kdar to work with libdar 4 (dar 2.3.1)
"Glen Ogilvie" <nelg-MqdbrFs/HPpCkLs28/[email protected]> Thu, 22 Feb 2007 11:02:51 +1300
| Newsgroups | gmane.comp.sysutils.backup.dar.libdar |
|---|---|
| Message-ID | <[email protected]> |
Hi Denis, Thank you for the details, I had discovered some of them a little last night, but it was hard to figure out. I'll be having a go at updating some of kdar bits over the next weekend. I appreciate all the help and time you've giving me, really encourages me to work on making kdar work well. Regards Glen Ogilvie On 2/22/07, Denis Corbin <[email protected]> wrote: > > > Glen Ogilvie wrote: > > > > Dennis, have you managed to put togeather a summary of the API > > changes? It would help in updating kdar to use them. > > > > Point 1: [taken from the ChangeLog and diff] : > added -[ and -] options (file selection from file listing) > Important consequence for libdar user programs: > the fs_root argument is now expanded to full absolute path inside > libdar, thus the mask you will give for path inclusion/exclusion > (the "subtree" argument) will be used against full absolute path > of files under consideration for the operation. Assuming you have > fs_root=tmp/A and the current directory is /var/tmp, your mask will > be used against strings like /var/tmp/A/some/file. (instead of > tmp/A/some/file as in the previous API version). Things are equal > if the fs_root is given an absolute path. > > In other word, the fs_root argument (in all public archive's methods > that use it) has to use become an absolute path, when user provides a > relative path. > > fs_root is an object of class path, the is_relative() method can let you > know whether a path is relative or not. If it is relative, find the > current working directory (getcwd() system call for example) build a > temporary path object (let's call it cwd_path) with the getcwd() string > (constructor works with std::string that can be also built from char *) > and before passing fs_root, set it to absolute with the path::operator+ > > fs_root = cwd_path + fs_root; > > This has to be done for any 'fs_root' argument in the archive methods. > > Point 2: the 'pause' argument moved from boolean to infinint. > > replacing the boolean argument by the following expression will keep > the same feature: > > original_provided_boolean_argument ? 1 : 0 > > (if true -> pause every 1 slice else do not pause at all) > > Point 3: root_EA and user_EA has been replaced by a mask 'ea_mask'. > to keep the same behavior you have to build a mask as follows and use it > in place of root_EA and user_EA: > > ou_mask ea_mask; // build an empty mask that does the *or* operation > > if(root_EA) > ea_mask.add(simple_mask("system.*")); > if(user_EA) > ea_mask.add(simple_mask("user.*")); > if(!root_EA && !user_EA) // if ea_mask is still empty > ea_mask.add(bool_mask(false)); > > // note that if ea_mask is empty (both root_EA and user_EA > // are false) you can avoid using an ou_mask object by directly > // using a bool_mask(false) object as argument (this does the same > // but will save some CPU cycles. > > Point 3: ignore_owner (boolean) has been replaced by 'what_to_check' > of type inode::comparison_fields, which is declared in catalogue.hpp. > here the equivalent behavior is realized by the following expression: > > what_to_check = ignore_owner ? cf_ignore_owner : cf_all > > > Point 4 : as opposed to point 1 to 3 that are general to the different > public archive's class methods, this point does only apply to the > 'create' constructor of archive class: > between the 'same_fs' and the 'ret' argument (which is the last of this > method), took place 4 new arguments corresponding to four new features: > > for backward compatibilty: > > - snapshot (boolean), has to set to false > - cache_directory_tagging (boolean) has to be set to false also > - display_skipped (boolean) has to be set to false also > - fixed_date (infinit) has to be set to zero > > Point 5 : still in the same 'create' constructor, the last argument > 'ret' has been changed of name ('progressive_report') and type (pointer). > > here, providing the address of the original argument (thanks to the & > operator) will do the trick. > > Point 6 : archive::op_extract received a new argument 'ea_erase'. > For backward compatibility set it to false. (Point 1 to 3 also apply to > this method as well as point 5). > > Point 7 : archive::op_listing has seen the tar_format boolean argument > been replaced by list_mode of type listformat. > > listformat = tar_format ? normal : tree > > (I guess op_listing is not used in kdar, but...) > > Point 8 : archive::op_diff has point 1 to 3 and point 5 that do apply. > > Point 9 : archive::op_test has point 1, 3 and 5 that apply. > > Point 10 : the statistic type has been changed from struct to class > the different field that were accessible directly before has to be > read throw the get_*() methods. For example: > > statistics_obj.treated > > has to be replaced by > > statistics_obj.get_treated() > > > That's all the changes I could found that are officially part of the > API, I know however that Johnathan has used some useful tools from the > tools.hpp/cpp module. No much change there, but rather several new > functions have been added, but in case of problem here don't hesitate to > ask me. > > I wish you success! > > Kind Regards, > Denis. > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Dar-libdar_api mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/dar-libdar_api > > > ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV