#include <iostream>
#include <print>
{
try {
std::println(std::cerr, "Magic is not valid.");
return;
}
std::println(
std::cout,
"Magic::DEFAULT_DATABASE_FILE file type: {}",
type
);
std::println(std::cerr, "Error: {}", e.what());
}
}
{
std::println(std::cerr, "Failed to open magic.");
return;
}
std::nothrow
);
std::println(
std::cout,
"Noexcept Magic::DEFAULT_DATABASE_FILE file type: {}",
);
} else {
std::println(std::cerr, "Failed to load database.");
}
}
{
try {
std::filesystem::temp_directory_path()
);
std::println(
std::cout,
"Types in the temp directory (showing up to 10):"
);
for (const auto& result : results | std::views::take(10)) {
std::println(std::cout,
"{}",
ToString(result));
}
std::println(std::cerr, "Error: {}", e.what());
}
}
{
std::println(std::cout, "BytesMax: {}", value);
std::println(std::cout,
"Flags: {}",
ToString(flags));
}
{
std::println(std::cout, "Database check passed.");
} else {
std::println(std::cerr, "Database check failed.");
}
std::println(std::cout, "Database compiled successfully.");
} else {
std::println(std::cerr, "Database compilation failed.");
}
}
{
try {
std::filesystem::temp_directory_path(),
tracker
);
std::println(
std::cout,
"Identified {} files. Completed: {}",
results.size(),
tracker->IsCompleted() ? "yes" : "no"
);
std::println(
std::cout,
"Final progress: {}",
tracker->GetCompletionPercentage().ToString()
);
std::println(std::cerr, "Error: {}", e.what());
}
}
{
try {
std::vector<std::filesystem::path> files = {
};
std::println(std::cout, "Container identification results:");
for (const auto& result : results) {
std::println(std::cout,
"{}",
ToString(result));
}
std::println(std::cerr, "Error: {}", e.what());
}
}
{
std::println(
std::cout,
"After default construction: IsOpen={}, IsDatabaseLoaded={}, IsValid={}",
);
std::println(
std::cout,
"After Open(): IsOpen={}, IsDatabaseLoaded={}, IsValid={}",
);
std::println(
std::cout,
"After LoadDatabaseFile(): IsOpen={}, IsDatabaseLoaded={}, IsValid={}",
);
auto new_flags = example_magic.
GetFlags();
std::println(std::cout,
"After SetFlags(): {}",
ToString(new_flags));
std::println(
std::cout,
"After Close(): IsOpen={}, IsDatabaseLoaded={}, IsValid={}",
);
}
{
std::println(std::cout,
"All parameters: {}",
ToString(all_params));
});
std::println(
std::cout,
"After SetParameters(): {}",
);
}
{
std::println(std::cout, "--- Example 1: Basic Identify ---");
std::println(std::cout, "\n--- Example 2: Noexcept Identify ---");
std::println(std::cout, "\n--- Example 3: Directory Identify ---");
std::println(std::cout, "\n--- Example 4: Custom Flags/Parameters ---");
std::println(std::cout, "\n--- Example 5: Compile and Check ---");
std::println(std::cout, "\n--- Example 6: Progress Tracking ---");
std::println(std::cout, "\n--- Example 7: Container Identify ---");
std::println(std::cout, "\n--- Example 8: Lifecycle Management ---");
std::println(std::cout, "\n--- Example 9: Version and All Parameters ---");
return 0;
}
Base exception class for all Magic-related errors.
Definition magic_exception.hpp:102
A modern C++23 wrapper for libmagic — the library that powers the Unix file command.
Definition magic.hpp:216
static std::string_view DEFAULT_DATABASE_FILE
Path to the default magic database file.
Definition magic.hpp:431
void LoadDatabaseFile(const std::filesystem::path &database_file=DEFAULT_DATABASE_FILE)
Load a magic database file.
Definition magic.cpp:2638
FileTypeT IdentifyFile(const std::filesystem::path &path) const
Identify the type of a single file.
Definition magic.cpp:2530
FileTypeMapT IdentifyFiles(const std::filesystem::path &directory, std::filesystem::directory_options option=std::filesystem::directory_options::follow_directory_symlink) const
Identify all files in a directory.
Definition magic.hpp:1037
FlagsContainerT GetFlags() const
Get the current flags.
Definition magic.cpp:2488
void SetFlags(FlagsMaskT flags_mask)
Set new flags for the Magic instance.
Definition magic.cpp:2674
void Close() noexcept
Close the Magic instance.
Definition magic.cpp:2476
static bool Compile(const std::filesystem::path &database_file=DEFAULT_DATABASE_FILE) noexcept
Compile a magic database file.
Definition magic.cpp:2481
@ Mime
Definition magic.hpp:328
@ Compress
Definition magic.hpp:319
@ None
Definition magic.hpp:316
@ MimeType
Definition magic.hpp:321
@ RegexMax
Definition magic.hpp:388
@ BytesMax
Definition magic.hpp:389
std::string ToString(const Magic::FileTypeEntryT &file_type_entry, const std::string &type_separator=" -> ")
Convert a file type entry to a string.
Definition magic.cpp:2293
SharedProgressTrackerT MakeSharedProgressTracker(std::uint64_t total_steps=1u) noexcept
Factory function to create a shared ProgressTracker.
Definition progress_tracker.hpp:440
void Open(FlagsMaskT flags_mask)
Open Magic with specified flags.
Definition magic.cpp:2651
ParameterValueMapT GetParameters() const
Get all parameter values.
Definition magic.cpp:2513
std::size_t GetParameter(Parameters parameter) const
Get the value of a specific parameter.
Definition magic.cpp:2500
void SetParameter(Parameters parameter, std::size_t value)
Set a single parameter value.
Definition magic.cpp:2697
void SetParameters(const ParameterValueMapT ¶meters)
Set multiple parameter values.
Definition magic.cpp:2711
bool IsValid() const noexcept
Check if the Magic instance is valid for file identification.
Definition magic.cpp:2633
bool IsOpen() const noexcept
Check if the Magic instance is open.
Definition magic.cpp:2628
bool IsDatabaseLoaded() const noexcept
Check if a magic database is loaded.
Definition magic.cpp:2623
static std::string GetVersion() noexcept
Get the libmagic library version.
Definition magic.cpp:2525
static bool Check(const std::filesystem::path &database_file=DEFAULT_DATABASE_FILE) noexcept
Check magic database file for validity.
Definition magic.cpp:2469
Main header file for the libmagicxx library.
void ExampleCustomFlagsParameters()
Example 4: Configuring flags and parameters.
Definition magic_examples.cpp:179
void ExampleBasicIdentify()
Example 1: Basic file identification with exception handling.
Definition magic_examples.cpp:65
void ExampleVersionAndAllParameters()
Example 9: Get version and all parameters.
Definition magic_examples.cpp:374
auto main() -> int
Main entry point for the examples program.
Definition magic_examples.cpp:402
void ExampleProgressTracking()
Example 6: Progress tracking for batch operations.
Definition magic_examples.cpp:242
void ExampleNoexceptIdentify()
Example 2: File identification using the noexcept API.
Definition magic_examples.cpp:101
void ExampleCheckAndCompile()
Example 5: Database validation and compilation.
Definition magic_examples.cpp:211
void ExampleContainerIdentify()
Example 7: Identify specific files from a container.
Definition magic_examples.cpp:281
void ExampleIdentifyDirectory()
Example 3: Batch identification of files in a directory.
Definition magic_examples.cpp:140
void ExampleLifecycleManagement()
Example 8: Manual lifecycle and state queries.
Definition magic_examples.cpp:319
Root namespace for the libmagicxx library.