X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=tables.c;fp=tables.c;h=0e75ea51e69579c2bf744e1df9cccd0a1c38bed5;hb=8f168ea31fb75e6dd2540c77a64224e538aa7083;hp=e428051c3dadcedb46fa8f7ce442618b3805daa2;hpb=3a2c49c9d8beafc53c5eaece425d9eae1e65fd33;p=debian%2Fpax diff --git a/tables.c b/tables.c index e428051..0e75ea5 100644 --- a/tables.c +++ b/tables.c @@ -55,6 +55,7 @@ static const char rcsid[] = "$OpenBSD: tables.c,v 1.25 2007/09/02 15:19:08 deraa #include "pax.h" #include "tables.h" #include "extern.h" +#include "features.h" /* * Routines for controlling the contents of all the different databases pax @@ -1126,13 +1127,21 @@ void add_dir(char *name, struct stat *psb, int frc_mode) { DIRDATA *dblk; +#if (_POSIX_C_SOURCE - 0) >= 200809L + char *rp = NULL; +#else char realname[MAXPATHLEN], *rp; +#endif if (dirp == NULL) return; if (havechd && *name != '/') { +#if (_POSIX_C_SOURCE - 0) >= 200809L + if ((rp = realpath(name, NULL)) == NULL) { +#else if ((rp = realpath(name, realname)) == NULL) { +#endif paxwarn(1, "Cannot canonicalize %s", name); return; } @@ -1143,6 +1152,9 @@ add_dir(char *name, struct stat *psb, int frc_mode) if (dblk == NULL) { paxwarn(1, "Unable to store mode and times for created" " directory: %s", name); +#if (_POSIX_C_SOURCE - 0) >= 200809L + free(rp); +#endif return; } dirp = dblk; @@ -1152,6 +1164,9 @@ add_dir(char *name, struct stat *psb, int frc_mode) if ((dblk->name = strdup(name)) == NULL) { paxwarn(1, "Unable to store mode and times for created" " directory: %s", name); +#if (_POSIX_C_SOURCE - 0) >= 200809L + free(rp); +#endif return; } dblk->mode = psb->st_mode & 0xffff; @@ -1159,6 +1174,9 @@ add_dir(char *name, struct stat *psb, int frc_mode) dblk->atime = psb->st_atime; dblk->frc_mode = frc_mode; ++dircnt; +#if (_POSIX_C_SOURCE - 0) >= 200809L + free(rp); +#endif } /*