| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | 
							- #!/bin/sh
 
- #
 
- # Original version 2005 by loki der quaeler
 
- # Copyright 2007-2008 Andrew Lewman
 
- # This is licensed under a Modified BSD license.
 
- ### this is the location of a file which contains all the actual package names
 
- ##	(ie "Polipo", "polipostartup", ...) the list should be new-line-delimited.
 
- PACKAGE_LIST_SRC="Polipo polipostartup"
 
- ### this is the name of the user created in the install process of Polipo
 
- POLIPO_USER=_polipo
 
- ### these should be constant across all osX installs (so leave them be)
 
- STARTUP_ITEMS_DIR=/Library/StartupItems
 
- PKG_RCPT_BASE_DIR=/Library/Receipts
 
- BOM_INTERMEDIATE_DIR=Contents/Resources
 
- INFO_INTERMEDIATE_DIR=$BOM_INTERMEDIATE_DIR/English.lproj
 
- TEMP_BOM_CONTENTS=/tmp/polipo_uninst_scratch
 
- ### make sure the script is being run as root, barf if not
 
- if [ "`whoami`" != "root" ]; then
 
- 	echo "Must be root to run the uninstall script."
 
- 	exit -1
 
- fi
 
- ### check to see if polipo is currently running, kill it if it is
 
- ##	we grep on 'Polipo/polipo ' because 'polipo' is too common (like in 'direcpolipoy')
 
- ##	-- this relies on the fact that polipo has been started with command
 
- ##	line arguments.. :-/
 
- POLIPO_PID=`ps -uax | grep 'Polipo/polipo ' | grep -v grep | awk '{print $2;}'`
 
- if [ ${#POLIPO_PID} -gt 0 ]; then
 
- 	echo ". Killing currently running polipo process, pid is $POLIPO_PID"
 
- 	kill -9 $POLIPO_PID
 
- else
 
- 	echo ". polipo process appears to already be stopped"
 
- fi
 
- ## grab each package name from the package list file
 
- while read LINE; do
 
- 	if [ ${#LINE} -gt 0 ]; then
 
- 		PACKAGE_NAME=$LINE.pkg
 
- 		PACKAGE_PATH=$PKG_RCPT_BASE_DIR/$PACKAGE_NAME
 
- 		echo ". Uninstalling $PACKAGE_NAME"
 
- 		if [ ! -d $PACKAGE_PATH ]; then
 
- 			echo "  . No receipt exists for this package -- skipping."
 
- 			continue
 
- 		fi
 
- 		
 
- 		## get rid of the startup item if it exists
 
- 		STARTUP_DIR=$STARTUP_ITEMS_DIR/$LINE
 
- 		if [ -d $STARTUP_DIR ]; then
 
- 			echo "  . Deleting startup item $STARTUP_DIR"
 
- 			rm -rf $STARTUP_DIR
 
- 		fi
 
- 		## determine the root direcpolipoy of the the relative paths specified in the bom
 
- 		DEFAULT_LOC=`grep DefaultLocation $PACKAGE_PATH/$INFO_INTERMEDIATE_DIR/$LINE.info | awk '{print $2;}'`
 
- 		if [ ${#DEFAULT_LOC} -eq 0 ]; then
 
- 			echo "!! Could not find default location for $LINE package -- skipping package."
 
- 			continue
 
- 		fi
 
- 		## examine the list of installed items desribed in the bom
 
- 		BOM_FILE=$PACKAGE_PATH/$BOM_INTERMEDIATE_DIR/$LINE.bom
 
- 		lsbom $BOM_FILE > $TEMP_BOM_CONTENTS
 
- 		while read BOM_ITEM; do
 
- 			## 3 column items describe just direcpolipoies, 5 column items describe actual files
 
- 			COL_COUNT=$(echo $BOM_ITEM | awk '{print NF;}')
 
- 			if [ "$COL_COUNT" -eq 5 ]; then
 
- 				FILE_NAME=$DEFAULT_LOC/$(echo $BOM_ITEM | awk '{print $1;}')
 
- 				echo "  . Removing $FILE_NAME"
 
- 				rm -rf $FILE_NAME
 
- 			fi
 
- 		done < $TEMP_BOM_CONTENTS
 
- 		## remove package receipt
 
- 		echo "  . Removing package receipt $PACKAGE_PATH"
 
- 		rm -rf $PACKAGE_PATH
 
- 	fi
 
- done < $PACKAGE_LIST_SRC
 
- ## nuke the user created by the install process.
 
- echo ". Removing created user $POLIPO_USER"
 
- niutil -destroy . /users/$POLIPO_USER
 
- ## clean up
 
- echo ". Cleaning up"
 
- rm -rf $TEMP_BOM_CONTENTS
 
- rm -rf /Library/Polipo/ /Library/StartupItems/Polipo/ 
 
- echo ". Finished"
 
 
  |