From bcd31ddf23f4c33d4b34a48a6026c1a77a317d3b Mon Sep 17 00:00:00 2001 From: Pascal Terjan Date: Thu, 23 Aug 2012 19:42:57 +0000 Subject: Add an alias to Pkg_files to only list doc files. This avoids pushing more than 50k strings on the stack to check if texmf has a README.urpmi --- NEWS | 3 +++ URPM.xs | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index dbb4e28..31eb38c 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,6 @@ +- add an alias to Pkg_files to only list doc files. This avoids pushing more + than 50k strings on the stack to check if texmf has a README.urpmi + Version 4.12 - 11 August 2012 - do not try to parse current pointer when the line is invalid or diff --git a/URPM.xs b/URPM.xs index b7a6462..fccb009 100644 --- a/URPM.xs +++ b/URPM.xs @@ -97,6 +97,7 @@ typedef struct s_Package* URPM__Package; #define FILTER_MODE_ALL_FILES 0 +#define FILTER_MODE_DOC_FILES 1 #define FILTER_MODE_CONF_FILES 2 static ssize_t write_nocheck(int fd, const void *buf, size_t count) { @@ -643,6 +644,7 @@ return_files(const Header header, int filter_mode) { if (filter_mode) { if ((filter_mode & FILTER_MODE_CONF_FILES) && flags && (flags[i] & RPMFILE_CONFIG) == 0) continue; + if ((filter_mode & FILTER_MODE_DOC_FILES) && flags && (flags[i] & RPMFILE_DOC) == 0) continue; } mXPUSHs(newSVpv(s, len)); @@ -1972,10 +1974,11 @@ void Pkg_files(pkg) URPM::Package pkg ALIAS: - conf_files = 1 + conf_files = FILTER_MODE_CONF_FILES + doc_files = FILTER_MODE_DOC_FILES PPCODE: PUTBACK; - return_files(pkg->h, ix == 0 ? 0 : FILTER_MODE_CONF_FILES); + return_files(pkg->h, ix); SPAGAIN; void -- cgit v1.2.1