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); }