diff options
author | Ulrich Müller <ulm@gentoo.org> | 2009-10-08 07:51:54 +0000 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2009-10-08 07:51:54 +0000 |
commit | dadfb95679b1722f5721ea8992a35e332e80e1f4 (patch) | |
tree | 8d72cf6f7c0943c938310f600b3ed4a97214931e /modules/news.eselect | |
parent | Really remove leading zeros in numeric month. (diff) | |
download | eselect-dadfb95679b1722f5721ea8992a35e332e80e1f4.tar.gz eselect-dadfb95679b1722f5721ea8992a35e332e80e1f4.tar.bz2 eselect-dadfb95679b1722f5721ea8992a35e332e80e1f4.zip |
Improve handling of removed news items.
svn path=/trunk/; revision=685
Diffstat (limited to 'modules/news.eselect')
-rw-r--r-- | modules/news.eselect | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/modules/news.eselect b/modules/news.eselect index 069c042..98787b5 100644 --- a/modules/news.eselect +++ b/modules/news.eselect @@ -176,10 +176,12 @@ do_list() { stat=${item%%/*}; item=${item#*/} repo=${item%%/*}; item=${item#*/} find_repo_dir "${repo}" - header=$(read_item "${dir}" "${item}" header) - IFS=$'\n' title="(${item} - no title)" - posted="(no date) " + posted=${item:0:10} + [[ ${posted} == +([0-9])-+([0-9])-+([0-9]) ]] || posted="(no date) " + header=$(read_item "${dir}" "${item}" header) \ + || title="(${item} - removed?)" + IFS=$'\n' for line in ${header}; do case "${line%%:*}" in Title) title=${line##*([^:]):*([[:space:]])} ;; @@ -270,31 +272,31 @@ do_read() { repo=${item%%/*}; item=${item#*/} find_repo_dir "${repo}" case ${format} in - raw) - read_item "${dir}" "${item}" - ;; - cooked) - write_list_start "${item}" - header=$(read_item "${dir}" "${item}" header) - IFS=$'\n' - for line in ${header}; do - case "${line%%:*}" in - Title) - write_kv_list_entry "${line%%:*}" \ - "$(highlight "${line##*([^:]):*([[:space:]])}")" - ;; - Author|Translator|Posted|Revision) - write_kv_list_entry "${line%%:*}" \ - "${line##*([^:]):*([[:space:]])}" - ;; - esac - done - IFS=${ifs_save} - echo - read_item "${dir}" "${item}" body - ;; - mbox) - header=$(read_item "${dir}" "${item}" header) + raw) + read_item "${dir}" "${item}" + ;; + cooked) + write_list_start "${item}" + header=$(read_item "${dir}" "${item}" header) + IFS=$'\n' + for line in ${header}; do + case "${line%%:*}" in + Title) + write_kv_list_entry "${line%%:*}" \ + "$(highlight "${line##*([^:]):*([[:space:]])}")" + ;; + Author|Translator|Posted|Revision) + write_kv_list_entry "${line%%:*}" \ + "${line##*([^:]):*([[:space:]])}" + ;; + esac + done + IFS=${ifs_save} + echo + read_item "${dir}" "${item}" body + ;; + mbox) + if header=$(read_item "${dir}" "${item}" header); then author=""; title=""; posted="" IFS=$'\n' for line in ${header}; do @@ -315,9 +317,13 @@ do_read() { IFS=${ifs_save} echo read_item "${dir}" "${item}" body | sed 's/^>*From />&/;$q' - ;; + else + false + fi + ;; esac - [[ $? -ne 0 ]] && write_error_msg "Error reading item \"${item}\"" + [[ $? -ne 0 ]] \ + && write_warning_msg "News item \"${item}\" no longer exists" echo [[ ${stat} = unread ]] || continue |