• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file file_manip.h
3  * Useful file management helpers
4  *
5  * @remark Copyright 2002 OProfile authors
6  * @remark Read the file COPYING
7  *
8  * @author Philippe Elie
9  * @author John Levon
10  */
11 
12 #ifndef FILE_MANIP_H
13 #define FILE_MANIP_H
14 
15 #include <string>
16 #include <list>
17 
18 
19 /**
20  * copy_file - copy a file.
21  * @param source        filename to copy from
22  * @param destination   filename to copy into
23  *
24  * the last modification time of the source file is preserved, file attribute
25  * and owner are preserved if possible. Return true if copying successful.
26  */
27 bool copy_file(std::string const & source, std::string const & destination);
28 
29 /// return true if dir is an existing directory
30 bool is_directory(std::string const & dirname);
31 
32 /**
33  * is_file_identical - check for identical files
34  * @param file1  first filename
35  * @param file2  second filename
36  *
37  * return true if the two filenames belong to the same file
38  */
39 bool is_files_identical(std::string const & file1, std::string const & file2);
40 
41 /**
42  * op_realpath - resolve symlinks etc.
43  * Resolve a path as much as possible. Accounts for relative
44  * paths (from cwd), ".." and ".". For success, the target
45  * file must exist !
46  *
47  * Resolve a symbolic link as far as possible.
48  * Returns the original string on failure.
49  */
50 std::string const op_realpath(std::string const & name);
51 
52 /// return true if the given file is readable
53 bool op_file_readable(std::string const & file);
54 
55 /**
56  * @param file_list where to store result
57  * @param base_dir directory from where lookup start
58  * @param filter a filename filter
59  * @param recursive if true lookup in sub-directory
60  *
61  * create a filelist under base_dir, filtered by filter and optionally
62  * looking in sub-directory. If we look in sub-directory only sub-directory
63  * which match filter are traversed.
64  */
65 bool create_file_list(std::list<std::string> & file_list,
66 		      std::string const & base_dir,
67 		      std::string const & filter = "*",
68 		      bool recursive = false);
69 
70 /**
71  * op_dirname - get the path component of a filename
72  * @param file_name  filename
73  *
74  * Returns the path name of a filename with trailing '/' removed.
75  */
76 std::string op_dirname(std::string const & file_name);
77 
78 /**
79  * op_basename - get the basename of a path
80  * @param path_name  path
81  *
82  * Returns the basename of a path with trailing '/' removed.
83  *
84  * Always use this instead of the C basename() - header order
85  * can affect behaviour  for basename("/")
86  */
87 std::string op_basename(std::string const & path_name);
88 
89 #endif /* !FILE_MANIP_H */
90