diff -Nur rpm-4.0.2.orig/build/files.c rpm-4.0.2/build/files.c --- rpm-4.0.2.orig/build/files.c Fri Jan 19 02:47:25 2001 +++ rpm-4.0.2/build/files.c Tue Dec 25 21:17:42 2001 @@ -911,6 +911,37 @@ ilp = fl->fileList + i; ilp->flags &= ~RPMFILE_SPECFILE; } + + /* try to fix lang marks for lang-marked dirs that contain lang-marked + * hardlinks */ + for (i = 0; i < fl->fileListRecsUsed; i++) { + char *te; + + ilp = fl->fileList + i; + if(!S_ISDIR(ilp->fl_mode) || !ilp->langs[0]) + continue; + te = nlangs; + *te = '\0'; + for (j = i + 1; j < fl->fileListRecsUsed; j++) { + jlp = fl->fileList + j; + if (!S_ISREG(jlp->fl_mode) || jlp->fl_nlink <= 1) + continue; + if (strncmp(jlp->fileURL, ilp->fileURL, strlen(ilp->fileURL))) + continue; + if (!strcmp(ilp->langs, jlp->langs)) + continue; + if (te == nlangs) + te = stpcpy(te, ilp->langs); + *te++ = '|'; + te = stpcpy(te, jlp->langs); + } + + if (te == nlangs) + continue; + + free((void *)ilp->langs); + ilp->langs = xstrdup(nlangs); + } } /** diff -Nur rpm-4.0.2.orig/lib/cpio.c rpm-4.0.2/lib/cpio.c --- rpm-4.0.2.orig/lib/cpio.c Wed Jan 3 20:29:11 2001 +++ rpm-4.0.2/lib/cpio.c Tue Dec 25 20:52:41 2001 @@ -670,7 +670,7 @@ static int createLinks(struct hardLink * li, /*@out@*/ const char ** failedFile) /*@modifies fileSystem, *failedFile, li->files, li->linksLeft @*/ { - int i; + int i,rc; struct stat sb; for (i = 0; i < li->nlink; i++) { @@ -685,6 +685,13 @@ } } + rc = checkDirectory(li->files[i]); + if (rc) { + if (failedFile) + *failedFile = xstrdup(li->files[i]); + return rc; + } + if (link(li->files[li->createdPath], li->files[i])) { if (failedFile) *failedFile = xstrdup(li->files[i]);