Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/pkgsrc/pkgtools/pkg_install/files/create/pl.c,v rcsdiff: /ftp/cvs/cvsroot/pkgsrc/pkgtools/pkg_install/files/create/pl.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- pkgsrc/pkgtools/pkg_install/files/create/pl.c 2003/10/29 23:00:28 1.6 +++ pkgsrc/pkgtools/pkg_install/files/create/pl.c 2004/02/07 10:37:52 1.7 @@ -1,4 +1,4 @@ -/* $NetBSD: pl.c,v 1.6 2003/10/29 23:00:28 jlam Exp $ */ +/* $NetBSD: pl.c,v 1.7 2004/02/07 10:37:52 grant Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -11,7 +11,7 @@ #if 0 static const char *rcsid = "from FreeBSD Id: pl.c,v 1.11 1997/10/08 07:46:35 charnier Exp"; #else -__RCSID("$NetBSD: pl.c,v 1.6 2003/10/29 23:00:28 jlam Exp $"); +__RCSID("$NetBSD: pl.c,v 1.7 2004/02/07 10:37:52 grant Exp $"); #endif #endif @@ -123,11 +123,13 @@ check_list(char *home, package_t *pkg, c struct stat st; plist_t *tmp; plist_t *p; - char name[FILENAME_MAX]; char buf[ChecksumHeaderLen + LegibleChecksumLen]; + char target[FILENAME_MAX + SymlinkHeaderLen]; + char name[FILENAME_MAX]; char *cwd = home; char *srcdir = NULL; int dirc; + int cc; /* Open Package Database for writing */ if (update_pkgdb && !pkgdb_open(ReadWrite)) { @@ -203,6 +205,24 @@ check_list(char *home, package_t *pkg, c if (RelativeLinks) { CheckSymlink(name, cwd, strlen(cwd)); } + (void) strlcpy(target, SYMLINK_HEADER, + sizeof(target)); + if ((cc = readlink(name, &target[SymlinkHeaderLen], + sizeof(target) - SymlinkHeaderLen)) < 0) { + warnx("can't readlink `%s'", name); + continue; + } + target[SymlinkHeaderLen + cc] = 0x0; + tmp = new_plist_entry(); + tmp->name = strdup(target); + tmp->type = PLIST_COMMENT; + tmp->next = p->next; + tmp->prev = p; + if (p == pkg->tail) { + pkg->tail = tmp; + } + p->next = tmp; + p = tmp; break; case S_IFCHR: warnx("Warning - char special device `%s' in PLIST", name);