OLD | NEW |
(Empty) | |
| 1 /////////////////////////////////////////////////////////////////////////////// |
| 2 // |
| 3 /// \file message.h |
| 4 /// \brief Printing messages to stderr |
| 5 // |
| 6 // Author: Lasse Collin |
| 7 // |
| 8 // This file has been put into the public domain. |
| 9 // You can do whatever you want with this file. |
| 10 // |
| 11 /////////////////////////////////////////////////////////////////////////////// |
| 12 |
| 13 /// Verbosity levels |
| 14 enum message_verbosity { |
| 15 V_SILENT, ///< No messages |
| 16 V_ERROR, ///< Only error messages |
| 17 V_WARNING, ///< Errors and warnings |
| 18 V_VERBOSE, ///< Errors, warnings, and verbose statistics |
| 19 V_DEBUG, ///< Debugging, FIXME remove? |
| 20 }; |
| 21 |
| 22 |
| 23 /// \brief Initializes the message functions |
| 24 /// |
| 25 /// If an error occurs, this function doesn't return. |
| 26 /// |
| 27 extern void message_init(void); |
| 28 |
| 29 |
| 30 /// Increase verbosity level by one step unless it was at maximum. |
| 31 extern void message_verbosity_increase(void); |
| 32 |
| 33 /// Decrease verbosity level by one step unless it was at minimum. |
| 34 extern void message_verbosity_decrease(void); |
| 35 |
| 36 /// Get the current verbosity level. |
| 37 extern enum message_verbosity message_verbosity_get(void); |
| 38 |
| 39 |
| 40 /// \brief Print a message if verbosity level is at least "verbosity" |
| 41 /// |
| 42 /// This doesn't touch the exit status. |
| 43 extern void message(enum message_verbosity verbosity, const char *fmt, ...) |
| 44 lzma_attribute((format(printf, 2, 3))); |
| 45 |
| 46 |
| 47 /// \brief Prints a warning and possibly sets exit status |
| 48 /// |
| 49 /// The message is printed only if verbosity level is at least V_WARNING. |
| 50 /// The exit status is set to WARNING unless it was already at ERROR. |
| 51 extern void message_warning(const char *fmt, ...) |
| 52 lzma_attribute((format(printf, 1, 2))); |
| 53 |
| 54 |
| 55 /// \brief Prints an error message and sets exit status |
| 56 /// |
| 57 /// The message is printed only if verbosity level is at least V_ERROR. |
| 58 /// The exit status is set to ERROR. |
| 59 extern void message_error(const char *fmt, ...) |
| 60 lzma_attribute((format(printf, 1, 2))); |
| 61 |
| 62 |
| 63 /// \brief Prints an error message and exits with EXIT_ERROR |
| 64 /// |
| 65 /// The message is printed only if verbosity level is at least V_ERROR. |
| 66 extern void message_fatal(const char *fmt, ...) |
| 67 lzma_attribute((format(printf, 1, 2))) |
| 68 lzma_attribute((noreturn)); |
| 69 |
| 70 |
| 71 /// Print an error message that an internal error occurred and exit with |
| 72 /// EXIT_ERROR. |
| 73 extern void message_bug(void) lzma_attribute((noreturn)); |
| 74 |
| 75 |
| 76 /// Print a message that establishing signal handlers failed, and exit with |
| 77 /// exit status ERROR. |
| 78 extern void message_signal_handler(void) lzma_attribute((noreturn)); |
| 79 |
| 80 |
| 81 /// Convert lzma_ret to a string. |
| 82 extern const char *message_strm(lzma_ret code); |
| 83 |
| 84 |
| 85 /// Display how much memory was needed and how much the limit was. |
| 86 extern void message_mem_needed(enum message_verbosity v, uint64_t memusage); |
| 87 |
| 88 |
| 89 /// \brief Get the filter chain as a string |
| 90 /// |
| 91 /// \param filters Pointer to the filter chain |
| 92 /// \param all_known If true, all filter options are printed. |
| 93 /// If false, only the options that get stored |
| 94 /// into .xz headers are printed. |
| 95 /// |
| 96 /// \return Pointer to a statically allocated buffer. |
| 97 extern const char *message_filters_to_str( |
| 98 const lzma_filter *filters, bool all_known); |
| 99 |
| 100 |
| 101 /// Print the filter chain. |
| 102 extern void message_filters_show( |
| 103 enum message_verbosity v, const lzma_filter *filters); |
| 104 |
| 105 |
| 106 /// Print a message that user should try --help. |
| 107 extern void message_try_help(void); |
| 108 |
| 109 |
| 110 /// Print the memory usage limit and exit. |
| 111 extern void message_memlimit(void) lzma_attribute((noreturn)); |
| 112 |
| 113 |
| 114 /// Prints the version number to stdout and exits with exit status SUCCESS. |
| 115 extern void message_version(void) lzma_attribute((noreturn)); |
| 116 |
| 117 |
| 118 /// Print the help message. |
| 119 extern void message_help(bool long_help) lzma_attribute((noreturn)); |
| 120 |
| 121 |
| 122 /// \brief Set the total number of files to be processed |
| 123 /// |
| 124 /// Standard input is counted as a file here. This is used when printing |
| 125 /// the filename via message_filename(). |
| 126 extern void message_set_files(unsigned int files); |
| 127 |
| 128 |
| 129 /// \brief Set the name of the current file and possibly print it too |
| 130 /// |
| 131 /// The name is printed immediately if --list was used or if --verbose |
| 132 /// was used and stderr is a terminal. Even when the filename isn't printed, |
| 133 /// it is stored so that it can be printed later if needed for progress |
| 134 /// messages. |
| 135 extern void message_filename(const char *src_name); |
| 136 |
| 137 |
| 138 /// \brief Start progress info handling |
| 139 /// |
| 140 /// message_filename() must be called before this function to set |
| 141 /// the filename. |
| 142 /// |
| 143 /// This must be paired with a call to message_progress_end() before the |
| 144 /// given *strm becomes invalid. |
| 145 /// |
| 146 /// \param strm Pointer to lzma_stream used for the coding. |
| 147 /// \param in_size Size of the input file, or zero if unknown. |
| 148 /// |
| 149 extern void message_progress_start(lzma_stream *strm, uint64_t in_size); |
| 150 |
| 151 |
| 152 /// Update the progress info if in verbose mode and enough time has passed |
| 153 /// since the previous update. This can be called only when |
| 154 /// message_progress_start() has already been used. |
| 155 extern void message_progress_update(void); |
| 156 |
| 157 |
| 158 /// \brief Finishes the progress message if we were in verbose mode |
| 159 /// |
| 160 /// \param finished True if the whole stream was successfully coded |
| 161 /// and output written to the output stream. |
| 162 /// |
| 163 extern void message_progress_end(bool finished); |
OLD | NEW |