mirror of
https://git.freebsd.org/ports.git
synced 2025-06-12 08:10:31 -04:00
WWW: http://people.redhat.com/jakub/prelink/ PR: ports/176283 Submitted by: Damjan Jovanovic <damjan.jov@gmail.com>
81 lines
1.9 KiB
C
81 lines
1.9 KiB
C
diff -Nur src/canonicalize.c src/canonicalize.c
|
|
--- src/canonicalize.c 2013-02-19 23:54:34.000000000 +0200
|
|
+++ src/canonicalize.c 2013-02-19 23:50:31.000000000 +0200
|
|
@@ -73,7 +73,11 @@
|
|
The result is malloc'd. */
|
|
|
|
static char *
|
|
+#if __LINUX__
|
|
canon_filename (const char *name, int nested, struct stat64 *stp)
|
|
+#else
|
|
+canon_filename (const char *name, int nested, struct stat *stp)
|
|
+#endif
|
|
{
|
|
char *rpath, *dest, *extra_buf = NULL;
|
|
const char *start, *end, *rpath_limit;
|
|
@@ -145,7 +149,11 @@
|
|
if (ep != NULL)
|
|
{
|
|
char *dirname = (char *) (ep + 1);
|
|
+#if __LINUX__
|
|
struct stat64 st;
|
|
+#else
|
|
+ struct stat st;
|
|
+#endif
|
|
|
|
ep->dirname = (const char *) dirname;
|
|
ep->dirname_len = e.dirname_len;
|
|
@@ -182,7 +190,7 @@
|
|
rpath = new_rpath;
|
|
rpath_limit = rpath + new_size;
|
|
}
|
|
- dest = mempcpy (rpath, ep->canon_dirname, ep->canon_dirname_len);
|
|
+ dest = memcpy (rpath, ep->canon_dirname, ep->canon_dirname_len) + ep->canon_dirname_len;
|
|
*dest = '\0';
|
|
name = end + 1;
|
|
}
|
|
@@ -238,10 +246,14 @@
|
|
dest = rpath + dest_offset;
|
|
}
|
|
|
|
- dest = mempcpy (dest, start, end - start);
|
|
+ dest = memcpy (dest, start, end - start) + (end-start);
|
|
*dest = '\0';
|
|
|
|
+#if __LINUX__
|
|
if (lstat64 (rpath, stp) < 0)
|
|
+#else
|
|
+ if (lstat (rpath, stp) < 0)
|
|
+#endif
|
|
goto error;
|
|
|
|
stp_initialized = 1;
|
|
@@ -294,7 +306,11 @@
|
|
--dest;
|
|
*dest = '\0';
|
|
|
|
+#if __LINUX__
|
|
if (!stp_initialized && lstat64 (rpath, stp) < 0)
|
|
+#else
|
|
+ if (!stp_initialized && lstat (rpath, stp) < 0)
|
|
+#endif
|
|
goto error;
|
|
|
|
if (dest + 1 - rpath <= (rpath_limit - rpath) / 2)
|
|
@@ -312,8 +328,16 @@
|
|
}
|
|
|
|
char *
|
|
+#if __LINUX__
|
|
prelink_canonicalize (const char *name, struct stat64 *stp)
|
|
+#else
|
|
+prelink_canonicalize (const char *name, struct stat *stp)
|
|
+#endif
|
|
{
|
|
+#if __LINUX__
|
|
struct stat64 st;
|
|
+#else
|
|
+ struct stat st;
|
|
+#endif
|
|
return canon_filename (name, 0, stp ? stp : &st);
|
|
}
|