Sophie

Sophie

distrib > Mandriva > 2008.0 > x86_64 > by-pkgid > a35732d620cfac4812adc8d6b2992f07 > files > 44

rpm-4.4.8-22.1mdv2008.0.src.rpm

--- build/files.c.docdir-macros	2007-06-03 20:41:44.000000000 +0200
+++ build/files.c	2007-06-03 20:46:50.000000000 +0200
@@ -1015,11 +1015,23 @@ static int parseForSimple(/*@unused@*/Sp
 	    res = 1;
 	} else {
 	/* XXX WATCHOUT: buf is an arg */
-	    {	const char *ddir, *n, *v;
+      {    static char *_docdir_fmt= 0;
+           static int oneshot = 0;
+           const char *ddir, *fmt, *errstr;
+           if (!oneshot) {
+                _docdir_fmt = rpmExpand("%{?_docdir_fmt}", NULL);
+            if (!_docdir_fmt || !*_docdir_fmt)
+                _docdir_fmt = "%{NAME}-%{VERSION}";
+            oneshot = 1;
+        }
+        fmt = headerSprintf(pkg->header, _docdir_fmt, rpmTagTable, rpmHeaderFormats, &errstr);
+        if (!fmt) {
+            rpmError(RPMERR_BADSPEC, _("illegal _docdir_fmt: %s\n"), errstr);
+            fl->processingFailed = 1;
+            res = 1;
+        }
+        ddir = rpmGetPath("%{_docdir}/", fmt, NULL);
 
-		(void) headerNVR(pkg->header, &n, &v, NULL);
-
-		ddir = rpmGetPath("%{_docdir}/", n, "-", v, NULL);
 		strcpy(buf, ddir);
 		ddir = _free(ddir);
 	    }