mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-12-28 06:35:34 +07:00
src/udev/mkdir.c: import path_startswith() from upstream
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This commit is contained in:
parent
7a2e1b1409
commit
ae66dd92e5
@ -12,8 +12,9 @@
|
||||
2013-07-10
|
||||
|
||||
* Add "hwdb: allow list of lookup keys per given record"
|
||||
* Bring src/udev/mkdir.c in line with upstreams use of *_internal() with prefix
|
||||
* Import format_timespan() from upstream's src/shared/time-util.c. Note: our
|
||||
src/libudev/util.c is derived from upstream's src/shared/util.c minus unneeded functions
|
||||
plus three functions from src/shared/time-util.c: now(), timespec_load() and
|
||||
timespan().
|
||||
plus three functions from src/shared/time-util.c: now(), timespec_load() and timespan().
|
||||
* Bring src/udev/mkdir.c in line with upstreams use of *_internal() with prefix. Also
|
||||
import path_startswith() from upstream's src/shared/path-util.c. This is now needed
|
||||
in our src/udev/mkdir.c in the new *_internal() functions.
|
||||
|
@ -39,6 +39,40 @@ static int is_dir(const char* path) {
|
||||
return S_ISDIR(st.st_mode);
|
||||
}
|
||||
|
||||
|
||||
char* path_startswith(const char *path, const char *prefix) {
|
||||
assert(path);
|
||||
assert(prefix);
|
||||
|
||||
if ((path[0] == '/') != (prefix[0] == '/'))
|
||||
return NULL;
|
||||
|
||||
for (;;) {
|
||||
size_t a, b;
|
||||
|
||||
path += strspn(path, "/");
|
||||
prefix += strspn(prefix, "/");
|
||||
|
||||
if (*prefix == 0)
|
||||
return (char*) path;
|
||||
|
||||
if (*path == 0)
|
||||
return NULL;
|
||||
|
||||
a = strcspn(path, "/");
|
||||
b = strcspn(prefix, "/");
|
||||
|
||||
if (a != b)
|
||||
return NULL;
|
||||
|
||||
if (memcmp(path, prefix, a) != 0)
|
||||
return NULL;
|
||||
|
||||
path += a;
|
||||
prefix += b;
|
||||
}
|
||||
}
|
||||
|
||||
static int mkdir_parents_internal(const char *prefix, const char *path, mode_t mode, bool apply) {
|
||||
const char *p, *e;
|
||||
int r;
|
||||
|
@ -22,6 +22,7 @@
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
char* path_startswith(const char *path, const char *prefix) _pure_;
|
||||
int mkdir_parents(const char *path, mode_t mode);
|
||||
int mkdir_parents_label(const char *path, mode_t mode);
|
||||
int mkdir_p(const char *path, mode_t mode);
|
||||
|
Loading…
Reference in New Issue
Block a user