File: read_pc_cd

package info (click to toggle)
playonlinux 4.3.4-5
  • links: PTS, VCS
  • area: contrib
  • in suites: trixie
  • size: 8,252 kB
  • sloc: sh: 5,390; python: 5,150; ansic: 72; makefile: 57; xml: 47
file content (110 lines) | stat: -rwxr-xr-x 3,998 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/usr/bin/env bash

# Copyright (C) 2007-2010 PlayOnLinux Team
# Copyright (C) 2011 Pâris Quentin

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 

# PlayOnMac CD PC reader
[ "$PLAYONLINUX" = "" ] && exit 
source "$PLAYONLINUX/lib/sources"


TITLE="$(eval_gettext 'PC CD-ROM reader')"

POL_SetupWindow_Init
if [ ! "$POL_OS" = "Mac" ]; then
	POL_SetupWindow_message "This tool is made for OSX" "$TITLE"
	POL_SetupWindow_Close
	exit 0
fi
POL_SetupWindow_free_presentation "$TITLE" "$(eval_gettext 'This tool will help your Mac to read the PC part of a CD-ROM.\n\nUse this tool ONLY if you CD-ROM is a hybride CD-ROM (Compatible with Windows and MacOS), and if you are not able to see the Windows part')"
POL_SetupWindow_menu_num "$(eval_gettext 'What do you want to do?')" "$TITLE" "$(eval_gettext 'Read a PC CD-ROM')~$(eval_gettext 'Eject a PC CD-ROM')" "~" 


if [ "$APP_ANSWER" = "0" ]; then #read
	POL_SetupWindow_message "$(eval_gettext 'Please insert your CD-ROM, and press next only when Finder has found the Mac OS part of your CD-ROM')" "$TITLE"
	POL_SetupWindow_wait "$(eval_gettext 'Please wait...')" "$TITLE"
	sleep 2
	cd "/Volumes"
	LIST_DEVICES_=""
	for device in *
	do
		if [ "$LIST_DEVICES_" ]; then
				LIST_DEVICES_+="~$device"
		else
				LIST_DEVICES_="$device"
		fi
	done
	POL_SetupWindow_menu "$(eval_gettext 'Please choose a CD-ROM')" "$TITLE" "$LIST_DEVICES_" "~" 
	CDROMc="$APP_ANSWER"
	POL_Debug_Message "Selecting $CDROMc to be mounted"
	process()
	{
	        search="$1"
	        read line
	        while [ "$line" ]; do
	                if [ "${line::5}" = "/dev/" ]; then
	                        latest_device="$line";
	                fi
	                #echo $latest_device
	                if [ ! "$(grep "${search::16}" <<< $line)" = "" ]; then
	                        echo $latest_device
	                        break
	                fi 
	                read line;
	        done
	}
	device="$(diskutil list | process "$CDROMc")"
	rdevice="${device}s1"
	POL_Debug_Message "Preparing to mount $rdevice"
	POL_SetupWindow_wait "$(eval_gettext 'Please wait...')" "$TITLE"
	mount_point="/Volumes/${CDROMc}_Windows"
	mkdir "$mount_point"
	if mount -t cd9660 "$rdevice" "$mount_point"; then
		POL_SetupWindow_message "The PC part of your cd-rom has been successfully found and mounted.\n\nWhen you have finished, don't forget to use PlayOnMac to eject the CD-ROM before removing from your computer." "$TITLE"
		POL_Open "$mount_point"
	else
		if rmdir "$mount_point"; then
			POL_SetupWindow_message "Error: Your CD-ROM does not seem to be a hybrid Mac/PC CD-ROM" "$TITLE"
		else
			POL_SetupWindow_message "Windows part of your CD-ROM seems to be already mounted" "$TITLE"
		fi
	fi
else
	cd "/Volumes"
	LIST_DEVICES_=""
	for device in *_Windows
	do
		if [ ! "$LIST_DEVICES_" = "" ]; then
				LIST_DEVICES_+="~$device"
		else
				LIST_DEVICES_="$device"
		fi
	done
	POL_SetupWindow_menu "$(eval_gettext 'Please choose a CD-ROM to eject')" "$TITLE" "$LIST_DEVICES_" "~" 
	CDROMc="$APP_ANSWER"
	POL_Debug_Message "Selecting $CDROMc to be unmounted"
	
	mount_point_1="/Volumes/${CDROMc}"
	mount_point_2="/Volumes/${CDROMc/_Windows/}"
	POL_SetupWindow_wait "$(eval_gettext 'Please wait...')" "$TITLE"
	
	umount "$mount_point_1"
	diskutil eject "$mount_point_2"
	rmdir "$mount_point_1"
fi
POL_SetupWindow_Close
exit 0