| # Copyright 1999 Jean-Louis Thirot |
| # |
| # This library is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU Lesser General Public |
| # License as published by the Free Software Foundation; either |
| # version 2.1 of the License, or (at your option) any later version. |
| # |
| # This library 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 |
| # Lesser General Public License for more details. |
| # |
| # You should have received a copy of the GNU Lesser General Public |
| # License along with this library; if not, write to the Free Software |
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| # |
| |
| proc TkW:autoconf {outfile} { |
| |
| # This files scans the fstab, then creates a wine.conf file |
| # parsed to wineconf for further editings.... |
| |
| # MS DOS drives are sorted following the rules explained in tools/wineconf |
| |
| global PATH |
| global TMPLetter WINLetter SYSLetter |
| |
| global OUTF |
| set OUTF [open $outfile w] |
| |
| TkW:InitNewConfig |
| set err [TkW:readFStab] |
| |
| TkW:SortDosDrives |
| TkW:addRootDrives |
| |
| set TMP [TkW:SearchTmp] |
| TkW:ShowDrives |
| |
| |
| set Windows [TkW:FindWindows] |
| set System "$Windows/system" |
| set Windows [TkW:Unix2Dos $Windows] |
| set System [TkW:Unix2Dos $System] |
| TkW:MiscEndConf $TMP |
| puts $OUTF "\[Wine\]\nwindows=$Windows" |
| puts $OUTF "system=$System" |
| puts $OUTF "Temp=[TkW:Unix2Dos $TMP]" |
| puts $OUTF "Path= $Windows\;$System\;$PATH" |
| |
| #Quick and dirty... I'm tired now! |
| #puts $OUTF "SymbolTableFile=[exec find / -name wine.sym -print]" |
| puts $OUTF "printer=on" |
| puts $OUTF "" |
| |
| puts $OUTF "\[DllDefaults\]" |
| puts $OUTF "\;EXTRA_LD_LIBRARY_PATH=\$\{HOME\}/wine/cvs/lib" |
| puts $OUTF "" |
| puts $OUTF "\[DllPairs\]" |
| puts $OUTF "kernel = kernel32" |
| puts $OUTF "gdi = gdi32" |
| puts $OUTF "user = user32" |
| puts $OUTF "commdlg = comdlg32" |
| puts $OUTF "commctrl= comctl32" |
| puts $OUTF "ver = version" |
| puts $OUTF "shell = shell32" |
| puts $OUTF "lzexpand= lz32" |
| puts $OUTF "mmsystem= winmm" |
| puts $OUTF "msvideo = msvfw32" |
| puts $OUTF "winsock = wsock32" |
| puts $OUTF "" |
| |
| puts $OUTF "\[DllOverrides\]" |
| puts $OUTF "kernel32, gdi32, user32 = builtin" |
| puts $OUTF "kernel, gdi, user = builtin" |
| puts $OUTF "toolhelp = builtin" |
| puts $OUTF "comdlg32, commdlg = elfdll, builtin, native" |
| puts $OUTF "version, ver = elfdll, builtin, native" |
| puts $OUTF "shell32, shell = builtin, native" |
| puts $OUTF "lz32, lzexpand = builtin, native" |
| puts $OUTF "commctrl, comctl32 = builtin, native" |
| puts $OUTF "sock32, winsock = builtin" |
| puts $OUTF "advapi32, crtdll, ntdll = builtin, native" |
| puts $OUTF "mpr, winspool = builtin, native" |
| puts $OUTF "ddraw, dinput, dsound = builtin, native" |
| puts $OUTF "winmm, mmsystem = builtin" |
| puts $OUTF "msvideo, msvfw32 = builtin, native" |
| puts $OUTF "w32skrnl = builtin" |
| puts $OUTF "wnaspi32, wow32 = builtin" |
| puts $OUTF "system, display, wprocs = builtin" |
| puts $OUTF "wineps = builtin" |
| puts $OUTF "" |
| |
| puts $OUTF "\[options\]" |
| puts $OUTF "AllocSystemColors=100" |
| puts $OUTF "" |
| |
| puts $OUTF "\[fonts\]" |
| puts $OUTF "Resolution = 96 " |
| puts $OUTF "Default = -adobe-times-" |
| puts $OUTF "" |
| |
| puts $OUTF "\[serialports\]" |
| puts $OUTF "Com1=/dev/ttyS0" |
| puts $OUTF "Com2=/dev/ttyS1" |
| puts $OUTF "Com3=/dev/modem,38400" |
| puts $OUTF "Com4=/dev/modem" |
| puts $OUTF "" |
| |
| puts $OUTF "\[parallelports\]" |
| puts $OUTF "Lpt1=/dev/lp0" |
| puts $OUTF "" |
| |
| puts $OUTF "\[spooler\]" |
| puts $OUTF "LPT1:=|lpr" |
| puts $OUTF "LPT2:=|gs -sDEVICE=bj200 -sOutputFile=/tmp/fred -q -" |
| puts $OUTF "LPT3:=/dev/lp3" |
| puts $OUTF "" |
| |
| puts $OUTF "\[ports\]" |
| puts $OUTF "\;read=0x779,0x379,0x280-0x2a0" |
| puts $OUTF "\;write=0x779,0x379,0x280-0x2a0" |
| puts $OUTF "" |
| |
| puts $OUTF "\[spy\]" |
| puts $OUTF "Exclude=WM_SIZE" |
| puts $OUTF ";WM_TIMER" |
| puts $OUTF "" |
| |
| puts $OUTF "\[Tweak.Layout\]" |
| puts $OUTF ";WineLook=xxx (supported styles are \'Win31\'(default)," |
| puts $OUTF ";\'Win95\', \'Win98\')" |
| puts $OUTF "WineLook=Win31" |
| puts $OUTF "" |
| |
| puts $OUTF "\[programs\]" |
| puts $OUTF "Default=]" |
| puts $OUTF "Startup=" |
| |
| close $OUTF |
| } |
| |
| proc TkW:readFStab {} { |
| |
| global AlternateFstab OK CANCEL |
| |
| if {![file exist /etc/fstab]} { |
| TkW:GetFileName $AlternateFstab $OK $CANCEL File |
| TkW:FStabError 1 |
| return 1 |
| } else { |
| set FSTAB "/etc/fstab" |
| } |
| if {![file readable $FSTAB]} {TkW:FStabError 2;return 1} |
| |
| set FStab [open /etc/fstab] |
| while {![eof $FStab]} { |
| |
| gets $FStab line |
| set line [string trim $line] |
| if {[string range $line 0 0] != "#" && $line != ""} { |
| #we have an entry |
| switch [lindex $line 2] { |
| |
| swap {} |
| proc {} |
| minix {TkW:addUnixDrive $line} |
| ext2 {TkW:addUnixDrive $line} |
| xiafs {TkW:addUnixDrive $line} |
| vfat {TkW:addDosDrive $line} |
| msdos {TkW:addDosDrive msdos} |
| hpfs {TkW:addDosDrive $line} |
| iso9660 {TkW:addCdRomDrive $line} |
| nfs {TkW:addNetDrive $line} |
| auto {TkW:addAutoDrive $line} |
| default {TkW:unknownDeviceType $line} |
| |
| } |
| } |
| } |
| } |
| |
| proc TkW:addRootDrives {} { |
| |
| global RootDrives1 RootDrives2 OK CANCEL WAIT lineroot ADD REMOVE |
| global NunixDrives UnixPath UnixDevice UnixLabel UnixType UnixSerial UnixFS |
| global exclude All |
| |
| set drivelist "" |
| set drivelist "$drivelist [glob -nocomplain /*]" |
| set List "" |
| set excludes "$exclude /boot /lost+found /lib /etc /var /sbin /initrd\ |
| /cdrom /floppy /include /man /dev /proc /bin /mnt /tmp" |
| set n 0 |
| foreach i $drivelist { |
| if {[file isdir $i]} { |
| set skip 0 |
| |
| foreach k $excludes { |
| if {$k == $i} { |
| set skip 1 |
| } |
| } |
| if {$skip == 0} {set List "$List$i "} |
| } |
| } |
| set List [lsort $List] |
| set n 0 |
| foreach i $List { |
| set All($n) $i;set n [expr $n + 1] |
| } |
| set dev [lindex $lineroot 0] |
| toplevel .rootDr -background #ffffff |
| wm title .rootDr "Wine Autoconfigurator" |
| label .rootDr.banner -backgr #0000ff -foregr #ffffff \ |
| -text "$RootDrives1$dev $RootDrives2" \ |
| -wraplength 300 |
| pack .rootDr.banner -fill x |
| frame .rootDr.lists -backgr #ffffff |
| pack .rootDr.lists -padx 10 -pady 10 |
| listbox .rootDr.lists.left -width 20 -height 10 |
| pack .rootDr.lists.left -padx 10 -pady 0 -side left |
| |
| frame .rootDr.lists.buttons -backgr #ffffff |
| pack .rootDr.lists.buttons -padx 10 -pady 0 -side left |
| |
| button .rootDr.lists.buttons.add -text "$ADD >>" -width 8\ |
| -command {TkW:AddRootDrInList [.rootDr.lists.left cursel]} |
| pack .rootDr.lists.buttons.add -padx 10 -pady 0 -side top |
| |
| button .rootDr.lists.buttons.space -text "" -backgr #ffffff \ |
| -border 0 -highlightb #ffffff -relief flat -width 8 -state disabled |
| pack .rootDr.lists.buttons.space -padx 10 -pady 0 -side top |
| |
| button .rootDr.lists.buttons.rem -text "<< $REMOVE" -width 8\ |
| -command {TkW:RemRootDrInList [.rootDr.lists.right cursel]} |
| pack .rootDr.lists.buttons.rem -padx 10 -pady 0 -side top |
| |
| listbox .rootDr.lists.right -width 20 -height 10 |
| pack .rootDr.lists.right -padx 10 -pady 0 |
| |
| frame .rootDr.cmd -background #ffffff |
| pack .rootDr.cmd -side bottom -anchor c -pady 5 |
| |
| button .rootDr.cmd.ok -text OK -width 8 \ |
| -command {destroy .rootDr;set WAIT 0} |
| pack .rootDr.cmd.ok -side left |
| |
| foreach i $List { |
| .rootDr.lists.left insert end $i |
| } |
| |
| global ToAddList;set ToAddList "" |
| |
| bind .rootDr.lists.left <Double-ButtonPress-1> { |
| TkW:AddRootDrInList [.rootDr.lists.left nearest %y]} |
| bind .rootDr.lists.right <Double-ButtonPress-1> { |
| TkW:RemRootDrInList [.rootDr.lists.right nearest %y]} |
| set WAIT wait |
| while {$WAIT == "wait" } {update} |
| foreach i $ToAddList { |
| set NunixDrives [expr $NunixDrives + 1] |
| set UnixPath($NunixDrives) $i |
| set exclude "$exclude$UnixPath($NunixDrives) " |
| set UnixLabel($NunixDrives) $i |
| set UnixType($NunixDrives) hd |
| set UnixFS($NunixDrives) win95 |
| } |
| } |
| |
| proc TkW:AddRootDrInList {N} { |
| |
| global All ToAddList Nadd Add |
| if {![info exists All($N)]} {return} |
| foreach i $ToAddList { |
| if {$i == $All($N)} {return} |
| } |
| set ToAddList [lsort "$ToAddList $All($N)"] |
| .rootDr.lists.right delete 0 end |
| set Nadd 0 |
| foreach i $ToAddList { |
| .rootDr.lists.right insert end $i |
| set Add($Nadd) $i |
| set Nadd [expr $Nadd + 1] |
| } |
| } |
| proc TkW:RemRootDrInList {N} { |
| global All ToAddList Nadd Add |
| if {![info exists Add($N)]} {return} |
| set NewList "" |
| foreach i $ToAddList { |
| if {$i != $Add($N)} {set NewList "$NewList$i "} |
| } |
| set ToAddList $NewList |
| set Nadd 0 |
| .rootDr.lists.right delete 0 end |
| foreach i $ToAddList { |
| .rootDr.lists.right insert end $i |
| set Add($Nadd) $i |
| set Nadd [expr $Nadd + 1] |
| } |
| } |
| proc TkW:addUnixDrive {line} { |
| global lineroot |
| #pre-processing for the case of the root: |
| if {![file exists [lindex $line 1]]} {return} |
| if {[lindex $line 1] != "/"} { TkW:addUnixDriveOK $line} {set lineroot $line} |
| } |
| proc TkW:addUnixDriveOK {line} { |
| |
| # for now, I'll consider any unix file as ext2... |
| # may be this should improve a bit! |
| |
| global NunixDrives UnixPath UnixDevice UnixLabel UnixType UnixSerial UnixFS |
| |
| global TMPDRIVE HOMEDRIVE exclude |
| |
| set NunixDrives [expr $NunixDrives +1] |
| |
| set UnixDevice($NunixDrives) [lindex $line 0] |
| set UnixType($NunixDrives) "hd" |
| set UnixPath($NunixDrives) [lindex $line 1] |
| set exclude "$exclude$UnixPath($NunixDrives) " |
| set UnixLabel($NunixDrives) "UNIX $NunixDrives" |
| if {[string first "/tmp" $UnixPath($NunixDrives)] > 0 && $TMPDRIVE == 0} { |
| set UnixLabel($NunixDrives) "TEMP" |
| } |
| if {[string first "/home" $UnixDevice($NunixDrives)] > 0 && $HOMEDRIVE == 0} { |
| set UnixLabel($NunixDrives) "HOME" |
| } |
| set UnixDevice($NunixDrives) "" |
| set UnixSerial($NunixDrives) "" |
| set UnixFS($NunixDrives) "win95" |
| set UnixType($NunixDrives) "hd" |
| } |
| proc TkW:addDosDrive {line} { |
| |
| # for now, I'll consider any dos file as ext2... |
| # may be this should improve a bit! |
| |
| global NdosDrives DosPath DosDevice DosLabel DosType DosSerial DosFS |
| |
| global TMPDRIVE HOMEDRIVE exclude |
| |
| if {![file exists [lindex $line 1]]} {return} |
| |
| if { [string first "/dev/fd" [lindex $line 0]] == 0 } { |
| TkW:addFloppy $line |
| return |
| } |
| |
| set NdosDrives [expr $NdosDrives +1] |
| |
| set DosDevice($NdosDrives) [lindex $line 0] |
| set DosPath($NdosDrives) [lindex $line 1] |
| set exclude "$exclude$DosPath($NdosDrives) " |
| set DosLabel($NdosDrives) "" |
| set DosType($NdosDrives) "win95" |
| if {[lindex $line 2] == "msods"} { |
| set DosFS($NdosDrives) |
| } else { |
| set DosFS($NdosDrives) "win95" |
| } |
| set DosSerial($NdosDrives) "" |
| } |
| |
| proc TkW:unknownDeviceType {line} { |
| |
| TkW:message "Error\n\ |
| [lindex $line 0] (mounted on [lindex $line 1]) : Unknown device type. Please, mail thirot@univ-brest.fr for me to add this filesystem to the list of detected FS.\n\ |
| \n Thank you.\ |
| \n Jean-Louis Thirot" |
| global WAIT |
| set WAIT wait |
| while {$WAIT == "wait"} {update} |
| |
| } |
| |
| proc TkW:InitNewConfig {} { |
| |
| global NunixDrives UnixPath UnixDevice UnixLabel UnixType UnixSerial UnixFS |
| global NdosDrives DosPath DosDevice DosLabel DosType DosSerial DosFS |
| global Ncdroms CDPath CDDevice CDLabel CDType CDSerial CDFS |
| global Nfloppys FLOPPYPath FLOPPYDevice FLOPPYLabel FLOPPYType FLOPPYSerial FLOPPYFS |
| global NnetDrives |
| global TMPDRIVE HOMEDRIVE |
| global exclude; set exclude "" |
| |
| set TMPDRIVE 0 |
| set HOMEDRIVE 0 |
| |
| set NunixDrives 0 |
| set NdosDrives 0 |
| set Ncdroms 0 |
| set Nfloppys 0 |
| set NnetDrives 0 |
| } |
| |
| proc TkW:ShowDrives {} { |
| |
| global NunixDrives UnixPath UnixDevice UnixLabel UnixType UnixSerial UnixFS |
| global NdosDrives DosPath DosDevice DosLabel DosType DosSerial DosFS |
| global Ncdroms CDPath CDDevice CDLabel CDType CDSerial CDFS |
| global NnetDrives NetPath NetLabel |
| global Nfloppys FLOPPYPath |
| global DriveRank DRIVEUNIXPATH DRIVEDOSPATH NDRIVES |
| global OUTF |
| |
| set NDRIVES 0 |
| set letters {let: C D E F G H I J K L M N O P Q R S T U V W X Y Z} |
| set lettersF {let: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} |
| for {set i 1} {$i <= $NdosDrives} {set i [expr $i + 1]} { |
| set NDRIVES [expr $NDRIVES + 1] |
| set rank $DriveRank($i) |
| puts $OUTF "\[Drive [lindex $letters $i]\]" |
| set Letter($NDRIVES) [lindex $letters $i] |
| set DRIVEUNIXPATH($NDRIVES) $DosPath($rank) |
| set DRIVEDOSPATH($NDRIVES) "[lindex $letters $i]:\\" |
| puts $OUTF "Path=$DosPath($rank)" |
| puts $OUTF "Type=hd" |
| puts $OUTF "Label=MS-DOS $rank" |
| puts $OUTF "Filesystem=$DosFS($rank)" |
| puts $OUTF "" |
| } |
| for {set i 1} {$i <= $Nfloppys} {set i [expr $i + 1]} { |
| if {$i > 2} { |
| set NDRIVES [expr $NDRIVES + 1] |
| set NLet $NDRIVES |
| set DRIVEDOSPATH($NDRIVES) "[lindex $lettersF $NLet]:\\" |
| set DRIVEUNIXPATH($NDRIVES) $FLOPPYPath($i) |
| } else { |
| set NLet $i |
| #set DRIVEDOSPATH($i) "[lindex $lettersF $NLet]:\\" |
| #set DRIVEUNIXPATH($i) $FLOPPYPath($i) |
| } |
| puts $OUTF "\[Drive [lindex $lettersF $NLet]\]" |
| puts $OUTF "Path=$FLOPPYPath($i)" |
| puts $OUTF "Type=floppy" |
| puts $OUTF "Label=Floppy $i" |
| puts $OUTF "Serial=87654321" |
| puts $OUTF "" |
| } |
| for {set i 1} {$i <= $Ncdroms} {set i [expr $i + 1]} { |
| set NDRIVES [expr $NDRIVES + 1] |
| puts $OUTF "\[Drive [lindex $letters $NDRIVES]\]" |
| puts $OUTF "Path=$CDPath($i)" |
| set DRIVEDOSPATH($NDRIVES) "[lindex $letters $NDRIVES]:\\" |
| set DRIVEUNIXPATH($NDRIVES) $CDPath($i) |
| puts $OUTF "Type=cdrom" |
| puts $OUTF "Label=CDROM $i" |
| puts $OUTF "Filesystem=$UnixFS($i)" |
| if {$CDDevice($i) != ""} {puts $OUTF "Device=$CDDevice($i)"} |
| puts $OUTF "" |
| } |
| for {set i 1} {$i <= $NunixDrives} {set i [expr $i + 1]} { |
| set NDRIVES [expr $NDRIVES + 1] |
| puts $OUTF "\[Drive [lindex $letters $NDRIVES]\]" |
| set DRIVEDOSPATH($NDRIVES) "[lindex $letters $NDRIVES]:\\" |
| set DRIVEUNIXPATH($NDRIVES) $UnixPath($i) |
| puts $OUTF "Path=$UnixPath($i)" |
| puts $OUTF "Type=hd" |
| puts $OUTF "Label=$UnixLabel($i)" |
| puts $OUTF "Filesystem=$UnixFS($i)" |
| puts $OUTF "" |
| } |
| for {set i 1} {$i <= $NnetDrives} {set i [expr $i + 1]} { |
| set NDRIVES [expr $NDRIVES + 1] |
| puts $OUTF "\[Drive [lindex $letters $NDRIVES]\]" |
| set DRIVEDOSPATH($NDRIVES) "[lindex $letters $NDRIVES]:\\" |
| set DRIVEUNIXPATH($NDRIVES) $NetPath($i) |
| puts $OUTF "Path=$NetPath($i)" |
| puts $OUTF "Type=network" |
| puts $OUTF "Label=$NetLabel($i)" |
| puts $OUTF "Filesystem=win95" |
| puts $OUTF "" |
| } |
| } |
| |
| proc TkW:MiscEndConf {temp} { |
| |
| #Create an acceptable PATH variable, and |
| # gets the TMP WINDOWS and SYSTEM drive letters: |
| global PATH NDRIVES Letter DRIVEPATH |
| global TMPLetter |
| set PATH "" |
| for {set i 1} {$i<= $NDRIVES} {set i [expr $i + 1]} { |
| if {[info exists Letter($i)]} { |
| if {[info exists DRIVEPATH($i)]} { |
| if {$DRIVEPATH($i) == $temp} { |
| set TMPLetter $Letter($i) |
| } |
| set PATH "$PATH\;$Letter($i):\\" |
| } |
| } |
| } |
| return |
| } |
| |
| proc TkW:Unix2Dos {unixpath} { |
| |
| global NDRIVES DRIVEDOSPATH DRIVEUNIXPATH |
| |
| set dospath "" |
| |
| # First, search the corresponding drive: |
| |
| for {set i 1} {$i<=$NDRIVES} {set i [expr $i + 1]} { |
| set n [string first $DRIVEUNIXPATH($i) $unixpath] |
| if {$n == 0} { |
| set dospath $DRIVEDOSPATH($i) |
| set N [expr [string length $DRIVEUNIXPATH($i)] + 1] |
| break |
| } |
| } |
| |
| # Now, add the remaining part of the path |
| |
| for {set i $N} {$i <= [string length $unixpath]} {set i [expr $i + 1]} { |
| |
| set newchar [string range $unixpath $i $i] |
| if {$newchar != "/"} { |
| set dospath "$dospath$newchar" |
| } else { |
| set dospath "$dospath\\" |
| } |
| } |
| return $dospath |
| } |
| |
| proc TkW:addCdRomDrive {line} { |
| global Ncdroms CDPath CDDevice CDLabel CDType CDSerial CDFS |
| |
| global IsCDwrite YES NO WAIT |
| |
| if {![file exists [lindex $line 1]]} {return} |
| set Ncdroms [expr $Ncdroms + 1] |
| set CDFS($Ncdroms) "iso9660" |
| set CDPath($Ncdroms) [lindex $line 1] |
| set dev [lindex $line 0] |
| TkW:message2 "Device $dev $IsCDwrite" $YES $NO |
| set WAIT wait |
| while {$WAIT == "wait"} {update} |
| if {$WAIT == "opt1"} {set CDDevice($Ncdroms) $dev} {set CDDevice($Ncdroms) ""} |
| set CDLabel($Ncdroms) "CDrom" |
| } |
| proc TkW:addNetDrive {line} { |
| global NnetDrives NetPath NetLabel |
| set NnetDrives [expr $NnetDrives + 1] |
| set NetPath($NnetDrives) [lindex $line 1] |
| set NetLabel($NnetDrives) [file tail $NetPath($NnetDrives)] |
| } |
| proc TkW:addFloppy {line} { |
| global Nfloppys FLOPPYPath FLOPPYDevice FLOPPYLabel FLOPPYType FLOPPYSerial FLOPPYFS |
| if {![file exists [lindex $line 1]]} {return} |
| set Nfloppys [expr $Nfloppys + 1] |
| set FLOPPYPath($Nfloppys) [lindex $line 1] |
| set FLOPPYDevice($Nfloppys) [lindex $line 0] |
| } |
| |
| proc TkW:SortDosDrives {} { |
| global NdosDrives DosDevice DriveRank |
| |
| set devlist "" |
| for {set i 1} {$i <= $NdosDrives} {set i [expr $i + 1]} { |
| set devlist "$devlist $DosDevice($i):TKW:$i" |
| } |
| set devlist [lsort $devlist] |
| |
| set i 1 |
| foreach dev $devlist { |
| set n1 [expr [string first ":TKW:" $dev] + 5] |
| set n2 [string length $dev] |
| set DriveRank([string range $dev $n1 $n2]) $i |
| set i [expr $i + 1] |
| } |
| } |
| |
| proc TkW:SearchTmp {} { |
| global exclude |
| global NunixDrives UnixPath UnixLabel UnixType UnixFS |
| global NdosDrives DosPath DosLabel DosType DosFS |
| global WAITfilename GetFileName NDRIVES DRIVEUNIXPATH DRIVEDOSPATH |
| global WhereTmp OK CANCEL |
| |
| # Check if it /tmp is alreaddy mounted (when it has it's own partition) |
| foreach i $exclude { |
| if {$i == "/tmp"} {return /tmp} |
| } |
| # check that we have a /tmp: |
| if {[file exists /tmp] } { |
| set NunixDrives [expr $NunixDrives + 1] |
| set UnixPath($NunixDrives) /tmp |
| set exclude "$exclude$UnixPath($NunixDrives) " |
| set UnixLabel($NunixDrives) "TEMP" |
| set UnixType($NunixDrives) hd |
| set UnixFS($NunixDrives) win95 |
| return /tmp |
| } else { |
| #Could add here a search for c:\TEMP or c:|windows\temp |
| set WAITfilename wait |
| TkW:GetFileName $WhereTmp $OK $CANCEL Folder |
| |
| # check if this folder is on a drive that has an entry in |
| # wineconf (Must be a unix or dos drive) |
| for {set i 1} {$i<=$NdosDrives} {set i [expr $i +1]} { |
| if {[string first $DosPath($i) $GetFileName] == 0} { |
| return $GetFileName |
| } |
| } |
| for {set i 1} {$i<=$NunixDrives} {set i [expr $i +1]} { |
| if {[string first $UnixPath($i) $GetFileName] == 0} { |
| return $GetFileName |
| } |
| } |
| # I'll consider this new one as unix, althought if it's win fs that's ok |
| set NunixDrives [expr $NunixDrives + 1] |
| set UnixPath($NunixDrives) $GetFileName |
| set exclude "$exclude$UnixPath($NunixDrives) " |
| set UnixLabel($NunixDrives) "TEMP" |
| set UnixType($NunixDrives) hd |
| set UnixFS($NunixDrives) win95 |
| return $GetFileName |
| } |
| } |
| |
| proc TkW:FindWindows {} { |
| |
| global NdosDrives DosPath WINLetter SYSLetter Letter |
| |
| #first attempt: C:\windows (would avoid to search) |
| |
| if {[file exist $DosPath(1)/windows]} { |
| return "$DosPath(1)/windows" |
| } |
| |
| for {set i 1} {$i<=$NdosDrives} {set i [expr $i + 1]} { |
| set searchWin [open "| find $DosPath($i) -name win.ini -print" r+] |
| while {![eof $searchWin]} { |
| gets $searchWin Found |
| close $searchWin |
| set Found [file dirname $Found] |
| return $Found |
| } |
| } |
| close $searchWin |
| |
| } |