0
0
mirror of https://github.com/openwrt/packages.git synced 2025-07-05 10:03:08 +00:00
Files
packages/utils/kmod/patches/010-basename.patch
Rosen Penev 686e1d0941 kmod: update to 32
Add patch to fix compilation with GCC 14.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2024-05-14 16:38:05 -07:00

92 lines
2.1 KiB
Diff

--- a/libkmod/libkmod-config.c
+++ b/libkmod/libkmod-config.c
@@ -21,6 +21,7 @@
#include <ctype.h>
#include <dirent.h>
#include <errno.h>
+#include <libgen.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
@@ -794,7 +795,9 @@ static int conf_files_insert_sorted(stru
bool is_single = false;
if (name == NULL) {
- name = basename(path);
+ char *pathc = strdup(path);
+ name = basename(pathc);
+ free(pathc);
is_single = true;
}
--- a/shared/util.c
+++ b/shared/util.c
@@ -22,6 +22,7 @@
#include <assert.h>
#include <ctype.h>
#include <errno.h>
+#include <libgen.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
@@ -173,8 +174,10 @@ char *modname_normalize(const char *modn
char *path_to_modname(const char *path, char buf[static PATH_MAX], size_t *len)
{
char *modname;
+ char *pathc = strdup(path);
- modname = basename(path);
+ modname = basename(pathc);
+ free(pathc);
if (modname == NULL || modname[0] == '\0')
return NULL;
--- a/tools/depmod.c
+++ b/tools/depmod.c
@@ -22,6 +22,7 @@
#include <dirent.h>
#include <errno.h>
#include <getopt.h>
+#include <libgen.h>
#include <limits.h>
#include <regex.h>
#include <stdio.h>
@@ -757,14 +758,17 @@ static int cfg_files_insert_sorted(struc
struct cfg_file **files, *f;
size_t i, n_files, namelen, dirlen;
void *tmp;
+ char *dirc;
dirlen = strlen(dir);
if (name != NULL)
namelen = strlen(name);
else {
- name = basename(dir);
+ dirc = strdup(dir);
+ name = basename(dirc);
namelen = strlen(name);
dirlen -= namelen + 1;
+ free(dirc);
}
n_files = *p_n_files;
@@ -2613,7 +2617,7 @@ static int depmod_output(struct depmod *
int mode = 0644;
int fd;
- snprintf(tmp, sizeof(tmp), "%s.%i.%li.%li", itr->name, getpid(),
+ snprintf(tmp, sizeof(tmp), "%s.%i.%" PRId64 ".%" PRId64, itr->name, getpid(),
tv.tv_usec, tv.tv_sec);
fd = openat(dfd, tmp, flags, mode);
if (fd < 0) {
--- a/tools/kmod.c
+++ b/tools/kmod.c
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <libgen.h>
#include <shared/util.h>