View | Details | Raw Unified | Return to bug 181077
Collapse All | Expand All

(-)sbin/pkg_replace/pkg_replace.sh (-16 / +140 lines)
Lines 125-138 Link Here
125
	: ${PACKAGEROOT="ftp://ftp.NetBSD.org"}
125
	: ${PACKAGEROOT="ftp://ftp.NetBSD.org"}
126
	: ${PKG_SUFX=".tgz"}
126
	: ${PKG_SUFX=".tgz"}
127
#else
127
#else
128
	: ${use_pkgng="`/usr/bin/make -f/usr/share/mk/bsd.port.mk -V WITH_PKGNG`"}
129
	if [ "x${use_pkgng}" = "xdevel" ]; then
130
		use_pkgng="yes"
131
	fi
128
	: ${PORTSDIR="/usr/ports"}
132
	: ${PORTSDIR="/usr/ports"}
133
	if is_yes ${use_pkgng}; then
134
	: ${PKGREPOSITORY="/var/cache/pkg/All"}
135
	else
129
	: ${PKGREPOSITORY="${PORTSDIR}/packages/All"}
136
	: ${PKGREPOSITORY="${PORTSDIR}/packages/All"}
137
	fi
130
#ifdef WITH_OPENBSD
138
#ifdef WITH_OPENBSD
131
	: ${PACKAGEROOT="ftp://ftp.OpenBSD.org"}
139
	: ${PACKAGEROOT="ftp://ftp.OpenBSD.org"}
132
	: ${PKG_SUFX=".tgz"}
140
	: ${PKG_SUFX=".tgz"}
133
#else
141
#else
142
	if is_yes ${use_pkgng}; then
143
	: ${PACKAGEROOT="http://pkgbeta.FreeBSD.org"}
144
	: ${PKG_SUFX=".txz"}
145
	else
134
	: ${PACKAGEROOT="ftp://ftp.FreeBSD.org"}
146
	: ${PACKAGEROOT="ftp://ftp.FreeBSD.org"}
135
	: ${PKG_SUFX=".tbz"}
147
	: ${PKG_SUFX=".tbz"}
148
	fi
136
#endif
149
#endif
137
#endif
150
#endif
138
	: ${PKG_BACKUP_DIR=${PKGREPOSITORY}}
151
	: ${PKG_BACKUP_DIR=${PKGREPOSITORY}}
Lines 152-161 Link Here
152
}
165
}
153
166
154
init_pkgtools() {
167
init_pkgtools() {
168
	if is_yes ${use_pkgng}; then
169
	PKG_ADD="pkg add"
170
	PKG_CREATE="pkg create"
171
	PKG_DELETE="pkg delete"
172
	PKG_INFO="pkg info"
173
	PKG_SET="pkg set"
174
	else
155
	PKG_ADD="pkg_add"
175
	PKG_ADD="pkg_add"
156
	PKG_CREATE="pkg_create"
176
	PKG_CREATE="pkg_create"
157
	PKG_DELETE="pkg_delete"
177
	PKG_DELETE="pkg_delete"
158
	PKG_INFO="pkg_info"
178
	PKG_INFO="pkg_info"
179
	fi
159
	MAKE="@MAKE@"
180
	MAKE="@MAKE@"
160
}
181
}
161
182
Lines 213-219 Link Here
213
			expand_path 'file' "${p##*=}"
234
			expand_path 'file' "${p##*=}"
214
			file_exist "${file}" || continue
235
			file_exist "${file}" || continue
215
			p=${p%=*} ;;
236
			p=${p%=*} ;;
216
		*.t[bg]z)
237
		*.t[bgx]z)
217
			expand_path 'file' "$p"
238
			expand_path 'file' "$p"
218
			get_pkgname_for_binary 'p' "${file}" || continue
239
			get_pkgname_for_binary 'p' "${file}" || continue
219
			p=${p%-*} ;;
240
			p=${p%-*} ;;
Lines 423-428 Link Here
423
	file_exist "$2" || return 1
444
	file_exist "$2" || return 1
424
445
425
	case $2 in
446
	case $2 in
447
	*.txz)	_opt=J ;;
426
	*.tbz)	_opt=j ;;
448
	*.tbz)	_opt=j ;;
427
	*.tgz)	_opt=z ;;
449
	*.tgz)	_opt=z ;;
428
	*)	return 1 ;;
450
	*)	return 1 ;;
Lines 434-439 Link Here
434
#ifdef WITH_OPENBSD
456
#ifdef WITH_OPENBSD
435
	X=`@TAR@ x${_opt}f "$2" -O "+CONTENTS" |
457
	X=`@TAR@ x${_opt}f "$2" -O "+CONTENTS" |
436
#else
458
#else
459
	is_yes ${use_pkgng} && X=`${PKG_INFO} -F "$2"` ||
437
	X=`@TAR@ x${_opt}f "$2" -O --fast-read "+CONTENTS" |
460
	X=`@TAR@ x${_opt}f "$2" -O --fast-read "+CONTENTS" |
438
#endif
461
#endif
439
#endif
462
#endif
Lines 467-472 Link Here
467
		done < "${PKG_DBDIR}/$2/+BUILD_INFO"
490
		done < "${PKG_DBDIR}/$2/+BUILD_INFO"
468
	fi
491
	fi
469
#else
492
#else
493
	if is_yes ${use_pkgng}; then
494
		X=`${PKG_INFO} -qo $2`
495
		eval $1=\$X
496
		return 0
497
	fi
470
	if [ -r "${PKG_DBDIR}/$2/+CONTENTS" ]; then
498
	if [ -r "${PKG_DBDIR}/$2/+CONTENTS" ]; then
471
		while read X; do
499
		while read X; do
472
			case $X in
500
			case $X in
Lines 488-494 Link Here
488
}
516
}
489
517
490
set_pkg_vars() {
518
set_pkg_vars() {
519
	if is_yes ${use_pkgng}; then
520
	${PKG_INFO} -e $1 || return 1
521
	else
491
	[ -d "${PKG_DBDIR}/$1" ] || return 1
522
	[ -d "${PKG_DBDIR}/$1" ] || return 1
523
	fi
492
524
493
	pkg_name=$1
525
	pkg_name=$1
494
	pkg_pkgdir=${PKG_DBDIR}/$1
526
	pkg_pkgdir=${PKG_DBDIR}/$1
Lines 526-535 Link Here
526
558
527
	for _arg in ${1+"$@"}; do
559
	for _arg in ${1+"$@"}; do
528
		_pattern=${_arg#${PKG_DBDIR}/}
560
		_pattern=${_arg#${PKG_DBDIR}/}
561
		if is_yes ${use_pkgng}; then
562
			for p in `${PKG_INFO} -g "${_pattern}" 2>/dev/null`; do
563
				if is_yes ${opt_depends}; then
564
					pkg_depends '_deps' "$p"
565
					eval ${_var}=\"\$${_var} \${_deps}\"
566
				fi
567
568
				eval ${_var}=\"\$${_var} \$p\"
529
569
570
				if is_yes ${opt_required_by}; then
571
					pkg_required_by '_req_by' "$p"
572
					eval ${_var}=\"\$${_var} \${_req_by}\"
573
				fi
574
			done
575
			if [ -z "${pkgs}" ]; then
576
				warn "No such installed package: ${_arg}"
577
			fi
578
		else
530
		case ${_pattern} in
579
		case ${_pattern} in
531
		*\**|*-pl[0-9]*|*-[0-9]*[0-9.][a-z]|*-[0-9]*[0-9]) ;;
580
		*\**|*-[0-9]*|*-[brv.][0-9]*|*-a.[0-9]*|*-pl[0-9]*|*-b.r[0-9]*|*-cr.[a-z]*) ;;
532
		*)		_pattern="${_pattern}-[0-9]*[0-9a-z]" ;;
581
		*)		_pattern="${_pattern}-[0-9]*[0-9a-zA-Z]" ;;
533
		esac
582
		esac
534
583
535
		for p in ${PKG_DBDIR}/${_pattern}/+CONTENTS; do
584
		for p in ${PKG_DBDIR}/${_pattern}/+CONTENTS; do
Lines 552-557 Link Here
552
				warn "No such installed package: ${_arg}"
601
				warn "No such installed package: ${_arg}"
553
			fi
602
			fi
554
		done
603
		done
604
		fi
555
	done
605
	done
556
606
557
	set -f
607
	set -f
Lines 568-573 Link Here
568
		done < "${PKG_DBDIR}/$2/+REQUIRING"
618
		done < "${PKG_DBDIR}/$2/+REQUIRING"
569
	fi
619
	fi
570
#else
620
#else
621
	if is_yes ${use_pkgng}; then
622
		X=`${PKG_INFO} -qd $2`
623
		eval $1=\"\${X}\"
624
		return 0
625
	fi
626
571
	if [ -r "${PKG_DBDIR}/$2/+CONTENTS" ]; then
627
	if [ -r "${PKG_DBDIR}/$2/+CONTENTS" ]; then
572
		while read X; do
628
		while read X; do
573
			case $X in
629
			case $X in
Lines 588-593 Link Here
588
pkg_required_by() {
644
pkg_required_by() {
589
	local X
645
	local X
590
646
647
	if is_yes ${use_pkgng}; then
648
		X=`${PKG_INFO} -qr $2`
649
		eval $1=\"\$X\"
650
		return 0
651
	fi
652
591
	eval $1=
653
	eval $1=
592
	if [ -r "${PKG_DBDIR}/$2/+REQUIRED_BY" ]; then
654
	if [ -r "${PKG_DBDIR}/$2/+REQUIRED_BY" ]; then
593
		while read X; do
655
		while read X; do
Lines 597-603 Link Here
597
}
659
}
598
660
599
pkg_sort() {
661
pkg_sort() {
600
	local p _var _sorted _unsorted _arg _deps
662
	local p _var _sorted _unsorted _arg _deps _deplist
601
663
602
	_var=$1; shift
664
	_var=$1; shift
603
	_sorted=
665
	_sorted=
Lines 612-618 Link Here
612
		*" ${_arg} "*)	continue ;;
674
		*" ${_arg} "*)	continue ;;
613
		esac
675
		esac
614
676
615
		if [ -s "${PKG_DBDIR}/${_arg}/+REQUIRED_BY" ]; then
677
		_deplist=
678
		if is_yes ${use_pkgng}; then
679
			_deplist=`${PKG_INFO} -qr ${_arg}`
680
		else
681
			_deplist="${PKG_DBDIR}/${_arg}/+REQUIRED_BY"
682
		fi
683
		if [ -s "${_deplist}" ]; then
616
			pkg_depends '_deps' "${_arg}"
684
			pkg_depends '_deps' "${_arg}"
617
685
618
			for p in ${_deps}; do
686
			for p in ${_deps}; do
Lines 757-765 Link Here
757
	info "Installing '$1'"
825
	info "Installing '$1'"
758
826
759
	case $1 in
827
	case $1 in
760
	*.t[bg]z)
828
	*.t[bgx]z)
761
		is_yes ${opt_force} && install_args="-f"
829
		is_yes ${opt_force} && install_args="-f"
830
		if ! is_yes ${use_pkgng}; then
762
		is_yes ${opt_verbose} && install_args="${install_args} -v"
831
		is_yes ${opt_verbose} && install_args="${install_args} -v"
832
		fi
763
833
764
		xtry "${2-}" ${PKG_ADD} ${install_args} "$1" || return 1
834
		xtry "${2-}" ${PKG_ADD} ${install_args} "$1" || return 1
765
		;;
835
		;;
Lines 795-801 Link Here
795
865
796
	deinstall_args=
866
	deinstall_args=
797
	is_yes ${opt_force} && deinstall_args="-f"
867
	is_yes ${opt_force} && deinstall_args="-f"
868
	if is_yes ${use_pkgng}; then
869
	deinstall_args="${deinstall_args} -y"
870
	else
798
	is_yes ${opt_verbose} && deinstall_args="${deinstall_args} -v"
871
	is_yes ${opt_verbose} && deinstall_args="${deinstall_args} -v"
872
	fi
799
873
800
#ifdef WITH_PKGSRC
874
#ifdef WITH_PKGSRC
801
	if [ -e "${PKG_DBDIR}/$1/+PRESERVE" ]; then
875
	if [ -e "${PKG_DBDIR}/$1/+PRESERVE" ]; then
Lines 915-921 Link Here
915
		*)		subdir="${OS_MAJOR}-stable" ;;
989
		*)		subdir="${OS_MAJOR}-stable" ;;
916
		esac
990
		esac
917
991
992
		if is_yes ${use_pkgng}; then
993
		uri_path=/freebsd-${OS_MAJOR}-${ARCH}/latest/All/
994
		else
918
		uri_path="/pub/FreeBSD/ports/${ARCH}/packages-${subdir}/All/"
995
		uri_path="/pub/FreeBSD/ports/${ARCH}/packages-${subdir}/All/"
996
		fi
919
#endif
997
#endif
920
#endif
998
#endif
921
		uri="${PACKAGEROOT}${uri_path}${pkg}"
999
		uri="${PACKAGEROOT}${uri_path}${pkg}"
Lines 987-993 Link Here
987
		return 1
1065
		return 1
988
	fi
1066
	fi
989
#else
1067
#else
1068
	if is_yes ${use_pkgng}; then
1069
	try ${PKG_CREATE} -f ${PKG_SUFX} -o "${2%/*}" "$1" || return 1
1070
	else
990
	try ${PKG_CREATE} -b "$1" "$2" || return 1
1071
	try ${PKG_CREATE} -b "$1" "$2" || return 1
1072
	fi
991
#endif
1073
#endif
992
#endif
1074
#endif
993
}
1075
}
Lines 1031-1042 Link Here
1031
}
1113
}
1032
1114
1033
preserve_libs() {
1115
preserve_libs() {
1034
	local file
1116
	local file pkg_info_opts
1035
1117
1036
	is_yes ${opt_preserve_libs} || return 0
1118
	is_yes ${opt_preserve_libs} || return 0
1037
1119
1120
	if is_yes ${use_pkgng}; then
1121
		pkg_info_opts='-ql'
1122
	else
1123
		pkg_info_opts='-qL'
1124
	fi
1038
	preserved_files=
1125
	preserved_files=
1039
	for file in $(${PKG_INFO} -qL "$1"); do
1126
	for file in $(${PKG_INFO} ${pkg_info_opts} "$1"); do
1040
		case ${file##*/} in
1127
		case ${file##*/} in
1041
		lib*.so.[0-9]*)
1128
		lib*.so.[0-9]*)
1042
			if [ -f "${file}" ]; then
1129
			if [ -f "${file}" ]; then
Lines 1080-1099 Link Here
1080
fix_dependencies() {
1167
fix_dependencies() {
1081
#ifndef WITH_PKGSRC
1168
#ifndef WITH_PKGSRC
1082
#ifndef WITH_OPENBSD
1169
#ifndef WITH_OPENBSD
1083
	local p deps newdep opt_depends opt_required_by
1170
	local p deps newdep opt_depends opt_required_by dep_installed
1084
1171
1085
	opt_depends=NO
1172
	opt_depends=NO
1086
	opt_required_by=NO
1173
	opt_required_by=NO
1087
	pkg_depends 'deps' "$1"
1174
	pkg_depends 'deps' "$1"
1088
1175
1089
	for p in ${deps}; do
1176
	for p in ${deps}; do
1090
		if [ ! -d "${PKG_DBDIR}/$p" ]; then
1177
		dep_installed=no
1178
		if is_yes ${use_pkgng}; then
1179
			${PKG_INFO} -e $p && dep_installed=yes || dep_installed=no
1180
		else
1181
			[ -d "${PKG_DBDIR}/$p" ] && dep_installed=yes || dep_installed=no
1182
		fi
1183
		if ! is_yes ${dep_installed}; then
1091
			pkg_glob 'newdep' "${p%-*}" 2>/dev/null
1184
			pkg_glob 'newdep' "${p%-*}" 2>/dev/null
1092
1185
1093
			if empty ${newdep}; then
1186
			if empty ${newdep}; then
1094
				warn "'$1' depends on '$p', but it is NOT installed!"
1187
				warn "'$1' depends on '$p', but it is NOT installed!"
1095
			else
1188
			else
1189
				if is_yes ${use_pkgng}; then
1190
				${PKG_SET} -y -o `${PKG_INFO} -qo $1`:`${PKG_INFO} -qo $p` || return 1
1191
				else
1096
				update_pkgdep "$1" "$p" "${newdep##* }" || return 1
1192
				update_pkgdep "$1" "$p" "${newdep##* }" || return 1
1193
				fi
1097
			fi
1194
			fi
1098
		fi
1195
		fi
1099
	done
1196
	done
Lines 1102-1107 Link Here
1102
}
1199
}
1103
1200
1104
update_dependencies() {
1201
update_dependencies() {
1202
	if is_yes ${use_pkgng}; then
1203
		info "Updating the dependencies"
1204
		${PKG_SET} -y -o $1:$2 || return 1
1205
		info "	$1 -> $2"
1206
	else
1105
	local p req_by
1207
	local p req_by
1106
1208
1107
	pkg_required_by 'req_by' "$2"
1209
	pkg_required_by 'req_by' "$2"
Lines 1114-1119 Link Here
1114
			update_pkgdep "$p" "$1-[^-]*" "$2" || return 1
1216
			update_pkgdep "$p" "$1-[^-]*" "$2" || return 1
1115
		done
1217
		done
1116
	fi
1218
	fi
1219
	fi
1117
}
1220
}
1118
1221
1119
have_pkgdep() {
1222
have_pkgdep() {
Lines 1122-1128 Link Here
1122
	if [ -r "${PKG_DBDIR}/$1/+CONTENTS" ]; then
1225
	if [ -r "${PKG_DBDIR}/$1/+CONTENTS" ]; then
1123
		while read X; do
1226
		while read X; do
1124
			case $X in
1227
			case $X in
1125
			@pkgdep\ $2-[0-9]*|@pkgdep\ $2-pl[0-9]*)
1228
			@pkgdep\ $2-[0-9]*|@pkgdep\ $2-[brv.][0-9]*|@pkgdep\ $2-a.[0-9]*|@pkgdep\ $2-pl[0-9]*|@pkgdep\ $2-b.r[0-9]*|@pkgdep\ $2-cr.[a-z]*)
1126
				return 0 ;;
1229
				return 0 ;;
1127
			[!@]*)	break ;;
1230
			[!@]*)	break ;;
1128
			esac
1231
			esac
Lines 1134-1140 Link Here
1134
1237
1135
update_pkgdep() {
1238
update_pkgdep() {
1136
	update_file "${PKG_DBDIR}/$1/+CONTENTS" \
1239
	update_file "${PKG_DBDIR}/$1/+CONTENTS" \
1137
	"s/^@pkgdep $2\$/@pkgdep $3/" || return 1
1240
	"/^@pkgdep $2\$/,/^@comment DEPORIGIN:/ { s|^@pkgdep $2\$|@pkgdep $3|; s|^@comment DEPORIGIN:.*\$|@comment DEPORIGIN:${pkg_origin}|; }" || return 1
1138
}
1241
}
1139
1242
1140
delete_pkgdep() {
1243
delete_pkgdep() {
Lines 1325-1331 Link Here
1325
1428
1326
init_install() {
1429
init_install() {
1327
	case $1 in
1430
	case $1 in
1328
	*.t[bg]z)
1431
	*.t[bgx]z)
1329
		set_pkg_vars_for_binary "$1" || return 1 ;;
1432
		set_pkg_vars_for_binary "$1" || return 1 ;;
1330
	/*)	set_port_vars "$1" || return 1 ;;
1433
	/*)	set_port_vars "$1" || return 1 ;;
1331
	*)	set_port_vars "${PORTSDIR}/$1" || return 1 ;;
1434
	*)	set_port_vars "${PORTSDIR}/$1" || return 1 ;;
Lines 1351-1357 Link Here
1351
	done
1454
	done
1352
1455
1353
	case ${replace_with} in
1456
	case ${replace_with} in
1354
	*.t[bg]z)
1457
	*.t[bgx]z)
1355
		pkg_binary=${replace_with} ;;
1458
		pkg_binary=${replace_with} ;;
1356
	?*)
1459
	?*)
1357
		pkg_portdir=${replace_with}
1460
		pkg_portdir=${replace_with}
Lines 1428-1433 Link Here
1428
do_replace() {
1531
do_replace() {
1429
	local pkg_log pkg_tmpdir old_package old_required_by preserved_files
1532
	local pkg_log pkg_tmpdir old_package old_required_by preserved_files
1430
1533
1534
	if is_yes ${use_pkgng}; then
1535
		local old_origin new_origin
1536
		old_origin=
1537
		new_origin=
1538
	fi
1539
1431
	init_replace "$1" || { status=skipped; return 0; }
1540
	init_replace "$1" || { status=skipped; return 0; }
1432
1541
1433
	if [ "${cur_pkg_name}" != "${pkg_name}" ]; then
1542
	if [ "${cur_pkg_name}" != "${pkg_name}" ]; then
Lines 1482-1488 Link Here
1482
	fi
1591
	fi
1483
1592
1484
	pkg_tmpdir="${tmpdir}/${cur_pkg_name}"
1593
	pkg_tmpdir="${tmpdir}/${cur_pkg_name}"
1594
	if ! is_yes ${use_pkgng}; then
1485
	old_required_by="${pkg_tmpdir}/+REQUIRED_BY"
1595
	old_required_by="${pkg_tmpdir}/+REQUIRED_BY"
1596
	fi
1486
1597
1487
	if ! find_package 'old_package' "${cur_pkg_name}"; then
1598
	if ! find_package 'old_package' "${cur_pkg_name}"; then
1488
		old_package="${pkg_tmpdir}/${cur_pkg_name}${PKG_SUFX}"
1599
		old_package="${pkg_tmpdir}/${cur_pkg_name}${PKG_SUFX}"
Lines 1491-1497 Link Here
1491
	if ! {
1602
	if ! {
1492
		create_dir "${pkg_tmpdir}" &&
1603
		create_dir "${pkg_tmpdir}" &&
1493
		backup_package "${cur_pkg_name}" "${old_package}" &&
1604
		backup_package "${cur_pkg_name}" "${old_package}" &&
1494
		backup_file "${cur_pkg_pkgdir}/+REQUIRED_BY" "${old_required_by}" &&
1605
		if is_yes ${use_pkgng}; then
1606
			old_origin=`${PKG_INFO} -qo ${cur_pkg_name}` || return 1
1607
		else
1608
			backup_file "${cur_pkg_pkgdir}/+REQUIRED_BY" "${old_required_by}"
1609
		fi &&
1495
		preserve_libs "${cur_pkg_name}"
1610
		preserve_libs "${cur_pkg_name}"
1496
	}; then
1611
	}; then
1497
		log="backup error"
1612
		log="backup error"
Lines 1503-1508 Link Here
1503
		if install_package "${pkg_binary:-${pkg_portdir}}" "${pkg_log}"; then
1618
		if install_package "${pkg_binary:-${pkg_portdir}}" "${pkg_log}"; then
1504
			status=done
1619
			status=done
1505
			cur_pkg_pkgdir=${PKG_DBDIR}/${pkg_name}
1620
			cur_pkg_pkgdir=${PKG_DBDIR}/${pkg_name}
1621
			if is_yes ${use_pkgng}; then
1622
				new_origin=`${PKG_INFO} -qo ${pkg_name}`
1623
			fi
1506
		else
1624
		else
1507
			log="install error"
1625
			log="install error"
1508
			restore_package "${old_package}" || {
1626
			restore_package "${old_package}" || {
Lines 1515-1522 Link Here
1515
		log="deinstall error"
1633
		log="deinstall error"
1516
	fi
1634
	fi
1517
1635
1636
	if ! is_yes ${use_pkgng}; then
1518
	restore_file "${old_required_by}" "${cur_pkg_pkgdir}/+REQUIRED_BY" ||
1637
	restore_file "${old_required_by}" "${cur_pkg_pkgdir}/+REQUIRED_BY" ||
1519
		warn "Failed to restore the +REQUIRED_BY file."
1638
		warn "Failed to restore the +REQUIRED_BY file."
1639
	fi
1520
	process_package "${old_package}" ||
1640
	process_package "${old_package}" ||
1521
		warn "Failed to keep the old version."
1641
		warn "Failed to keep the old version."
1522
	clean_libs ||
1642
	clean_libs ||
Lines 1527-1533 Link Here
1527
	case ${status} in
1647
	case ${status} in
1528
	done)
1648
	done)
1529
		fix_dependencies "${pkg_name}" || return 1
1649
		fix_dependencies "${pkg_name}" || return 1
1530
		update_dependencies "${cur_pkg_name%-*}" "${pkg_name}" || return 1 ;;
1650
		if is_yes ${use_pkgng}; then
1651
		update_dependencies "${old_origin}" "${new_origin}" || return 1
1652
		else
1653
		update_dependencies "${cur_pkg_name%-*}" "${pkg_name}" || return 1
1654
		fi ;;
1531
	*)
1655
	*)
1532
		return 1 ;;
1656
		return 1 ;;
1533
	esac
1657
	esac

Return to bug 181077