Mercurial > trustbridge
view common/portpath.h @ 1074:8d811b030959
(issue116) Always do selftest on windows
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 10 Sep 2014 17:54:50 +0200 |
parents | f110a3f6e387 |
children | fd7d04bb37cb |
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=2) * and comes with ABSOLUTELY NO WARRANTY! * See LICENSE.txt for details. */ #ifndef PORTPATH_H #define PORTPATH_H #include <stdbool.h> /** * @file portpath.h * @brief Platform independent functions for file and path handling. * @details portpath contains functions to handle file and path names * in a platform independent way. The code unsing this functions * should be protable between GNU/Linux and Windows32 systems. */ /** * @brief portable version of dirname * @details return the directory component of the given path. * The argument path may be altered by the function. * @param[inout] path the pathname * @returns a pointer to the string containing the directory component */ char *port_dirname(char *path); /** * @brief portable version of realpath * @details return the expanded absolute pathname for the given path. * The buffer for the resolved path is allocated by this function and * should be freed by the caller. * @param[in] path the original pathname * @returns a pointer to the resolved path or NULL on error */ char *port_realpath(const char *path); /** * @brief test if a file exists * @details uses a platform specific stat call to test if the given * file exists. * @param[in] path the path to the file * @returns true if the file exists and false otherwise */ bool port_fileexits(char *path); /** * @brief test if a file is a directory * @details uses a platform specific stat call to test if the given * file is an directory. * @param[in] path the path to the file * @returns true if the file is an directory and false otherwise */ bool port_isdir(const char *path); /** * @brief create a directory * @details uses a platform specific mkdir / access rights setup * to create a directory that is world readable and * writable by the current user / group * @param[in] path the path to the directory * @param[in] propagate_acl weather or not objects should inherit * the ACL of this directory. Only has an effect on Windows. * @returns true if the directory was created */ bool port_mkdir(const char *path, bool propagate_acl); /** * @brief create a directory and its parent directores * * On Windows the last directory will propagate it's ACL * to objects and subdirectories. The parent directories * will not. * * @param[in] propagate_acl weather or not the * last created directory should propagate it's acl. * Only has an effect on Windows. * @param[in] path the path to the directory * @returns true if the directory was created */ bool port_mkdir_p(const char *path, bool propagate_acl); #endif