60 lines
2.1 KiB
C++
60 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
// Utilidades multiplataforma para operaciones del sistema
|
|
namespace SystemUtils {
|
|
|
|
// Códigos de resultado para operaciones del sistema
|
|
enum class Result {
|
|
SUCCESS = 0,
|
|
PERMISSION_DENIED, // Sin permisos para crear la carpeta
|
|
PATH_TOO_LONG, // Ruta demasiado larga
|
|
ALREADY_EXISTS, // Ya existe (solo si se considera error)
|
|
INVALID_PATH, // Ruta inválida
|
|
UNKNOWN_ERROR // Error desconocido
|
|
};
|
|
|
|
// Configuración para creación de carpetas
|
|
struct FolderConfig {
|
|
bool create_parents; // Crear carpetas padre si no existen
|
|
bool fail_if_exists; // Fallar si la carpeta ya existe
|
|
int permissions; // Permisos Unix (ignorado en Windows)
|
|
|
|
// Constructor con valores por defecto
|
|
FolderConfig()
|
|
: create_parents(true)
|
|
, fail_if_exists(false)
|
|
, permissions(0755) // rwxr-xr-x
|
|
{}
|
|
};
|
|
|
|
// Crea la carpeta del sistema donde guardar datos de la aplicación
|
|
Result createApplicationFolder(const std::string& app_name, std::string& out_path);
|
|
|
|
// Crea la carpeta del sistema con configuración personalizada
|
|
Result createApplicationFolder(const std::string& app_name, std::string& out_path, const FolderConfig& config);
|
|
|
|
// Crea una carpeta en la ruta especificada
|
|
Result createFolder(const std::string& path);
|
|
|
|
// Crea una carpeta con configuración personalizada
|
|
Result createFolder(const std::string& path, const FolderConfig& config);
|
|
|
|
// Obtiene la ruta de datos de la aplicación (sin crearla)
|
|
std::string getApplicationDataPath(const std::string& app_name);
|
|
|
|
// Verifica si una carpeta existe
|
|
bool folderExists(const std::string& path);
|
|
|
|
// Convierte un código de resultado a string descriptivo
|
|
const char* resultToString(Result result);
|
|
|
|
// Obtiene el directorio home del usuario
|
|
std::string getHomeDirectory();
|
|
|
|
// Obtiene el directorio temporal del sistema
|
|
std::string getTempDirectory();
|
|
|
|
} // namespace SystemUtils
|