Oops, here it is attached in case.
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index 2941a5d..d3d0d61 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -504,7 +504,6 @@ download_sources() {
 
 generate_checksums() {
 	msg "$(gettext "Generating checksums for source files...")"
-	plain ""
 
 	if [ ! $(type -p openssl) ]; then
 		error "$(gettext "Cannot find openssl.")"
@@ -523,6 +522,7 @@ generate_checksums() {
 
 		local ct=0
 		local numsrc=${#sour...@]}
+		echo
 		echo -n "${integ}sums=("
 
 		local i=0;
@@ -557,6 +557,45 @@ generate_checksums() {
 	done
 }
 
+update_checksums() {
+	local file="$startdir/$BUILDSCRIPT"
+	local integ
+
+	# necessary override for --geninteg
+	unset INTEGRITY_CHECK
+
+	for integ in md5 sha1 sha256 sha384 sha512; do
+		grep "${integ}sums=(" $file &> /dev/null && \
+			INTEGRITY_CHECK=(${integrity_che...@]} $integ)
+	done
+
+	integ=${INTEGRITY_CHECK[0]}
+	if grep "&& ${integ}sums=(" "$file" | grep '$CARCH' &> /dev/null; then
+		error "$(gettext "Multi-arch checksum update not supported. Exiting...")"
+		exit 1
+	else
+		for integ in ${integrity_che...@]}; do
+			sed -i "/${integ}sums=(/,/)$/d" "$file"
+		done
+		
+		if grep "# vim: set" "$file" &> /dev/null; then
+			sed -i '/# vim: set/d' "$file"
+			sed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}' "$file"
+			local vimset=1
+		fi
+		
+		generate_checksums >> "$file"
+		
+		if [ $vimset -eq 1 ]; then
+			echo >> "$file"
+			echo "# vim: set ts=2 sw=2 et:" >> "$file"
+		fi
+	fi
+
+	msg "$(gettext "Updated checksums in %s")" "$BUILDSCRIPT"
+	return 0
+}
+
 check_checksums() {
 	[ ${#sour...@]} -eq 0 ] && return 0
 
@@ -1431,6 +1470,7 @@ usage() {
 	echo "$(gettext "  -e, --noextract  Do not extract source files (use existing src/ dir)")"
 	echo "$(gettext "  -f, --force      Overwrite existing package")"
 	echo "$(gettext "  -g, --geninteg   Generate integrity checks for source files")"
+	printf "$(gettext "  -G, --getinteg Update integrity checks in %s")\n" "$BUILDSCRIPT"
 	echo "$(gettext "  -h, --help       This help")"
 	echo "$(gettext "  -i, --install    Install package after successful build")"
 	echo "$(gettext "  -L, --log        Log package build process")"
@@ -1477,9 +1517,9 @@ fi
 ARGLIST=$@
 
 # Parse Command Line Options.
-OPT_SHORT="AcCdefFghiLmop:rRsV"
+OPT_SHORT="AcCdefFgGhiLmop:rRsV"
 OPT_LONG="allsource,asroot,ignorearch,clean,cleancache,nodeps"
-OPT_LONG="$OPT_LONG,noextract,force,forcever:,geninteg,help,holdver"
+OPT_LONG="$OPT_LONG,noextract,force,forcever:,geninteg,getinteg,help,holdver"
 OPT_LONG="$OPT_LONG,install,log,nocolor,nobuild,rmdeps,repackage,skipinteg"
 OPT_LONG="$OPT_LONG,source,syncdeps,version,config:"
 # Pacman Options
@@ -1512,6 +1552,7 @@ while true; do
 		--forcever)       shift; FORCE_VER=$1;;
 		-F)               INFAKEROOT=1 ;;
 		-g|--geninteg)    GENINTEG=1 ;;
+		-G| --getinteg)   GETINTEG=1 ;;
 		--holdver)        HOLDVER=1 ;;
 		-i|--install)     INSTALL=1 ;;
 		-L|--log)         LOGGING=1 ;;
@@ -1680,6 +1721,15 @@ if [ "$GENINTEG" -eq 1 ]; then
 	exit 0 # $E_OK
 fi
 
+if [ "$GETINTEG" -eq 1 ]; then
+	mkdir -p "$srcdir"
+	cd "$srcdir"
+	download_sources
+	update_checksums
+	cd "$startdir"
+	exit 0
+fi
+
 if [ "$(type -t package)" = "function" ]; then
 	PKGFUNC=1
 fi


Reply via email to