commit: b4cf6bfdc8ad3908637f5ab068f6c323bb32fe6b Author: Ulrich Müller <ulm <AT> gentoo <DOT> org> AuthorDate: Mon Dec 25 09:40:26 2017 +0000 Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org> CommitDate: Mon Dec 25 09:40:26 2017 +0000 URL: https://gitweb.gentoo.org/proj/eselect.git/commit/?id=b4cf6bfd
Check for valid news item format. * modules/news.eselect (do_list): Check for valid news item format. ChangeLog | 2 ++ modules/news.eselect | 30 ++++++++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 648e874..55e5bb4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2017-12-25 Ulrich Müller <[email protected]> + * modules/news.eselect (do_list): Check for valid news item format. + * libs/core.bash.in (eval): Make it fatal again, after more than one year of transition time. diff --git a/modules/news.eselect b/modules/news.eselect index 15cf985..b0e9695 100644 --- a/modules/news.eselect +++ b/modules/news.eselect @@ -172,7 +172,7 @@ describe_list() { } do_list() { - local item stat repo dir header line title posted i=1 + local item stat repo dir header line format title posted i=1 local cols=${COLUMNS:-80} ifs_save=${IFS} local -a repos dirs @@ -185,16 +185,26 @@ do_list() { title="(${item} - no title)" posted=${item:0:10} [[ ${posted} == +([0-9])-+([0-9])-+([0-9]) ]] || posted="(no date) " - header=$(read_item "${dir}" "${item}" header) \ - || title="(${item} - removed?)" - local IFS=$'\n' - for line in ${header}; do - case "${line%%:*}" in - Title) title=${line##*([^:]):*([[:space:]])} ;; - Posted) posted=${line##*([^:]):*([[:space:]])} ;; + if header=$(read_item "${dir}" "${item}" header); then + local IFS=$'\n' + for line in ${header}; do + case "${line%%:*}" in + Title) title=${line##*([^:]):*([[:space:]])} ;; + Posted) posted=${line##*([^:]):*([[:space:]])} ;; + News-Item-Format) format=${line##*([^:]):*([[:space:]])} ;; + esac + done + IFS=${ifs_save} + case ${format} in + 1.*|2.*) ;; + *) + title="(${item} - unknown format ${format})" + posted="" + ;; esac - done - IFS=${ifs_save} + else + title="(${item} - removed?)" + fi [[ ${repo} != gentoo ]] && title="[${repo}] ${title}" line="${posted}$(space $((10 - ${#posted}))) ${title}" # truncate the line if it is too long
