/
githubmirror
/
kmod
Обзор
Документация
Войти
/
githubmirror
/
kmod
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v33
shared/missing.h
69 строк
1 KB
Khem Raj
Use portable implementation for basename API
11 июн 2024, 02:15
11 июн 2024, 02:15
11eb9bc
Код
Авторство
О чём код?
#pragma once #include <unistd.h> #include <sys/syscall.h> #ifdef HAVE_LINUX_MODULE_H #include <linux/module.h> #endif #ifndef MODULE_INIT_IGNORE_MODVERSIONS # define MODULE_INIT_IGNORE_MODVERSIONS 1 #endif #ifndef MODULE_INIT_IGNORE_VERMAGIC # define MODULE_INIT_IGNORE_VERMAGIC 2 #endif #ifndef MODULE_INIT_COMPRESSED_FILE # define MODULE_INIT_COMPRESSED_FILE 4 #endif #ifndef __NR_finit_module # define __NR_finit_module -1 #endif #ifndef HAVE_FINIT_MODULE #include <errno.h> static inline int finit_module(int fd, const char *uargs, int flags) { if (__NR_finit_module == -1) { errno = ENOSYS; return -1; } return syscall(__NR_finit_module, fd, uargs, flags); } #endif #if !HAVE_DECL_STRNDUPA #include <string.h> #define strndupa(s, n) \ ({ \ const char *__old = (s); \ size_t __len = strnlen(__old, (n)); \ char *__new = alloca(__len + 1); \ __new[__len] = '\0'; \ memcpy(__new, __old, __len); \ }) #endif #if !HAVE_DECL_BASENAME #include <string.h> static inline const char *basename(const char *s) { const char *p = strrchr(s, '/'); return p ? p + 1 : s; } #endif #if !HAVE_DECL_BE32TOH #include <endian.h> #include <byteswap.h> #if __BYTE_ORDER == __LITTLE_ENDIAN #define be32toh(x) bswap_32 (x) #else #define be32toh(x) (x) #endif #endif