OSDN Git Service

Fixed bugs caused by incomplete corrections related to function pkg_info_flavored_or...
[portsreinstall/current.git] / lib / libpkgsys.sh
index d3ec488..b75d833 100644 (file)
@@ -497,11 +497,14 @@ pkgsys_def_pkgtools ()
                }
                pkg_info_gen_pkg_origin_table ()
                {
+                       local pkgname origin
                        #       pkg query -g '%n-%v\t%o' \* 2> /dev/null > ${DBDIR}/installed_ports:pkg_vs_origin.tbl
-                       pkg info -qa 2> /dev/null | while read pkgname
+                       for pkgname in `pkg info -qa 2> /dev/null`
                        do
-                               origin=`pkg_info_flavored_origin "$pkgname"`
-                               printf '%s\t%s\n' "$pkgname" "$origin"
+                               for origin in `pkg_info_flavored_origins "$pkgname"`
+                               do
+                                       printf '%s\t%s\n' "$pkgname" "$origin"
+                               done
                        done
                }
                pkg_create_b ()
@@ -880,7 +883,7 @@ pkgsys_def_pkgtools ()
                        pkg_info -qe "$@" 2> /dev/null && echo
                        :
                }
-               pkg_info_flavored_origin ()
+               pkg_info_flavored_origins ()
                {
                        local glob_unflavored tmp_stdout
                        glob_unflavored=$1
@@ -1221,9 +1224,10 @@ pkgsys_get_my_current_pkg ()
 # ============= Get the flavored origin of this utility =============
 pkgsys_get_my_origin ()
 {
-       pkgsys_get_my_current_pkg | while read pkgname
+       local pkgname
+       for pkgname in `pkgsys_get_my_current_pkg`
        do
-               pkg_info_flavored_origin "$pkgname"
+               pkg_info_flavored_origins "$pkgname"
        done
 }
 
@@ -1232,9 +1236,9 @@ pkgsys_init_pkg_orig_by_ambiguous_matching ()
 {
        local pkg origin tmporigin ambsuffix len_pkg pkg_regexp norigins
        pkg=$1
-       origin=`pkg_info_flavored_origin "$pkg"`
-       [ -n "$origin" ] && { echo "$origin"; return; }
        tmporigin=${TMPDIR}/pkgsys_init_pkg_orig_by_ambiguous_matching::origin
+       pkg_info_flavored_origins "$pkg" > $tmporigin
+       [ `wc -l < $tmporigin` -gt 0 ] && { cat "$tmporigin"; return; }
        ambsuffix=
        norigins=0
        len_pkg=`echo -n "$pkg" | wc -c`
@@ -1390,9 +1394,9 @@ pkgsys_eval_ports_glob ()
                        glob_regexp2=`echo "$glob_regexp" | sed -E 's/\$*$//' 2>&1 || :`'[[:space:]]'
                        env LANG=C grep -E "$glob_regexp2" "${DBDIR}/installed_ports:pkg_vs_origin.tbl" 2> /dev/null \
                                | cut -f 2 || :
-                       pkg_info_Ex "$glob_regexp" | while read pkgname
+                       for pkgname in `pkg_info_Ex "$glob_regexp"`
                        do
-                               pkg_info_flavored_origin "$pkgname"
+                               pkg_info_flavored_origins "$pkgname"
                        done
                fi
        done | sort -u
@@ -1406,45 +1410,47 @@ pkgsys_create_backup_pkg ()
        dstdir=$2
        rm -rf "${TMPDIR}"/package.tmp
        mkdir "${TMPDIR}"/package.tmp
-       origin=`pkg_info_flavored_origin "$pkgname"`
-       if backup_pkg_old=`pkgsys_get_backup_pkg "$origin"` && \
-               [ ! -e "${DBDIR}/requires/$origin/installed_timestamp" -o \
-                       "$backup_pkg_old" -nt "${DBDIR}/requires/$origin/installed_timestamp" ]
-       then
-               echo "$backup_pkg_old"
-               return
-       fi
-       if ( cd "${TMPDIR}"/package.tmp && pkg_create_b "$pkgname" > /dev/null )
-       then
-               pkgname_ptn=`str_escape_regexp "$pkgname"`
-               backup_pkg=`ls "${TMPDIR}"/package.tmp | \
-                       env LANG=C grep -m 1 -E "^${pkgname_ptn}\.(txz|tbz|tgz|tar|pkg)$"` || :
-       fi
-       if [ -z "$backup_pkg" ]
-       then
-               message_echo "WARNING: Failed to create backup package for $pkgname." >&2
-               return 1
-       fi
-       dbpath=${DBDIR}/backup/$origin
-       mkdir -p "$dbpath"
-       pkg_info_qL "$pkgname" > $dbpath/previously_installed_files
-       mkdir -p "$dstdir"
-       mv "${TMPDIR}/package.tmp/$backup_pkg" "$dstdir"
-       pkgpath=$dstdir/$backup_pkg
-       cat "${DBDIR}/backup_pkgarcs.lst" 2> /dev/null | \
-               while read origin_cur pkgpath_cur
-               do
-                       [ "$pkgpath_cur" = "$pkgpath" ] && continue
-                       if [ "$origin_cur" = "$origin" ]
-                       then
-                               rm -f "$pkgpath_cur"
-                       else
-                               printf '%s\t%s\n' "$origin_cur" "$pkgpath_cur"
-                       fi
-               done > ${DBDIR}/backup_pkgarcs.lst.tmp
-       printf '%s\t%s\n' "$origin" "$pkgpath" >> ${DBDIR}/backup_pkgarcs.lst.tmp
-       mv "${DBDIR}/backup_pkgarcs.lst.tmp" "${DBDIR}/backup_pkgarcs.lst"
-       echo "$pkgpath"
+       for origin in `pkg_info_flavored_origins "$pkgname"`
+       do
+               if backup_pkg_old=`pkgsys_get_backup_pkg "$origin"` && \
+                       [ ! -e "${DBDIR}/requires/$origin/installed_timestamp" -o \
+                               "$backup_pkg_old" -nt "${DBDIR}/requires/$origin/installed_timestamp" ]
+               then
+                       echo "$backup_pkg_old"
+                       return
+               fi
+               if ( cd "${TMPDIR}"/package.tmp && pkg_create_b "$pkgname" > /dev/null )
+               then
+                       pkgname_ptn=`str_escape_regexp "$pkgname"`
+                       backup_pkg=`ls "${TMPDIR}"/package.tmp | \
+                               env LANG=C grep -m 1 -E "^${pkgname_ptn}\.(txz|tbz|tgz|tar|pkg)$"` || :
+               fi
+               if [ -z "$backup_pkg" ]
+               then
+                       message_echo "WARNING: Failed to create backup package for $pkgname." >&2
+                       return 1
+               fi
+               dbpath=${DBDIR}/backup/$origin
+               mkdir -p "$dbpath"
+               pkg_info_qL "$pkgname" > $dbpath/previously_installed_files
+               mkdir -p "$dstdir"
+               mv "${TMPDIR}/package.tmp/$backup_pkg" "$dstdir"
+               pkgpath=$dstdir/$backup_pkg
+               cat "${DBDIR}/backup_pkgarcs.lst" 2> /dev/null | \
+                       while read origin_cur pkgpath_cur
+                       do
+                               [ "$pkgpath_cur" = "$pkgpath" ] && continue
+                               if [ "$origin_cur" = "$origin" ]
+                               then
+                                       rm -f "$pkgpath_cur"
+                               else
+                                       printf '%s\t%s\n' "$origin_cur" "$pkgpath_cur"
+                               fi
+                       done > ${DBDIR}/backup_pkgarcs.lst.tmp
+               printf '%s\t%s\n' "$origin" "$pkgpath" >> ${DBDIR}/backup_pkgarcs.lst.tmp
+               mv "${DBDIR}/backup_pkgarcs.lst.tmp" "${DBDIR}/backup_pkgarcs.lst"
+               echo "$pkgpath"
+       done
 }
 
 # ============= Delete a back-up package archive for a flavored port origin =============
@@ -1677,17 +1683,19 @@ pkgsys_sanitychk_pkgcontents ()
                fi
        done
        eval "$var_is_reinstall_encouraged=\$_is_reinstall_encouraged"
-       origin=`pkg_info_flavored_origin "$pkg"`
-       if [ $opt_batch_mode = no ]
-       then
-               message_echo "[$pkg ($origin)]"
-               sed 's/^/  /' "$tmp_sanity"
-               message_echo
-       else
-               pkg_replace=`str_escape_replaceval "$pkg"`
-               origin_replace=`str_escape_replaceval "$origin"`
-               sed "s/^/$pkg_replace\\\\$origin_replace\\\\$_is_reinstall_encouraged\\\\/" "$tmp_sanity" | tr '\\' '\t'
-       fi
+       for origin in `pkg_info_flavored_origins "$pkg"`
+       do
+               if [ $opt_batch_mode = no ]
+               then
+                       message_echo "[$pkg ($origin)]"
+                       sed 's/^/  /' "$tmp_sanity"
+                       message_echo
+               else
+                       pkg_replace=`str_escape_replaceval "$pkg"`
+                       origin_replace=`str_escape_replaceval "$origin"`
+                       sed "s/^/$pkg_replace\\\\$origin_replace\\\\$_is_reinstall_encouraged\\\\/" "$tmp_sanity" | tr '\\' '\t'
+               fi
+       done
        return 1
 }