#!/usr/bin/perl
#
# $Header: //sapdb/V76/c_00/b_37/sys/src/install/perl/packages/odbc/instodbc#1 $
# $DateTime: 2007/04/16 17:59:45 $
# $Change: 149747 $
#
# Desc:

import SAPDB::Install::StdIO;
import SAPDB::Install::System;
import SAPDB::Install::Registry;
import SAPDB::Install::Misc;
import SAPDB::Install::Tools;
import SAPDB::Install::SetUser;
import SAPDB::Install::Cwd;
import SAPDB::Install::Values;

$path{'name'} = 'odbc path';

$path{'mode'}=0775;
$path{'opt'}='odbc_path=s';
$path{'list'} = 'odbc.lst';
$path{'update'}=0;
	
$usage= " [-odbc_path <instpath>]";
$usage_desc = "\t-odbc_path <instpath>\todbc installation directory\n";
                  


@paths = (\%path);
$main_path=\%path;
$skip=0;
@opts=();


sub preinstall{
	if($SAPDB::Install::StartInstall::opt_odbc_path){
		$path{'value'}=$SAPDB::Install::StartInstall::opt_odbc_path;
	}
	else{
		my ($data,$prog)=readIndepPath();
		$prog =~ /\S/ or $prog = $SAPDB::Install::Values::indep_prog_path;
		$data =~ /\S/ or $data = $SAPDB::Install::Values::indep_data_path;
		$prog =~ /\S/ or print2stderr("independent program path not found\n") and diesoft($SAPDB::Install::Values::diemsg);
		$path{'default'} = $prog;
		$path{'value'}=$prog unless ($SAPDB::Install::StartInstall::opt_relocate);  
	}
	return 1;
}
 

sub postprepare{
	return 1;
}


sub postinstall{
	unless ($^O =~ /mswin/i){
		eval{
			checkIniLock ('/etc/odbc.ini_lock');
		};
	}
	return 1;    
}



sub registerWin{
	
	my $path = $path{'value'};
	setPathInEnv("$path/pgm");
	$path =~ s/\//\\/g;
	my $odbc_test = sub {
						my ($text) = @_;	
						my $rc = 0;
						$text =~ /successfully\s+registered/ and $rc = 1;
						return $rc;
					};

	callsystem("\"$path\\pgm\\odbcreg.exe\" \"SAP DB\" -i -p \"".$path."\\pgm\"",$odbc_test);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"SAP DB (Unicode)\" -i -p \"".$path."\\pgm\" -d sqlod32w.dll",$odbc_test);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"SAP DB 7.4\" -i -p \"".$path."\\pgm\"",$odbc_test);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"MaxDB\" -i -p \"".$path."\\pgm\"",$odbc_test);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"MaxDB (Unicode)\" -i -p \"".$path."\\pgm\" -d sqlod32w.dll",$odbc_test);
	return 1;

}
	

sub registerUX{
	return 1;
}


*register =           $^O =~ /^MsWin/i ? \&registerWin :
        \&registerUX;

sub unregisterWin{
	my $path = $regpackobj->Path;
	setPathInEnv("$path/pgm");
	$path =~ s/\//\\/g;	
		
	my $odbc_test = sub {
						my ($text) = @_;	
						my $rc = 0;
						$text =~ /successfully\s+removed/ and $rc = 1;
						return $rc;
	};
	
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"SAP DB\" -r -p \"".$path."\\pgm\"",$odbc_test,1);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"SAP DB (Unicode)\" -r -p \"".$path."\\pgm\" -d sqlod32w.dll",$odbc_test,1);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"SAP DB 7.4\" -r -p \"".$path."\\pgm\"",$odbc_test,1);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"MaxDB\" -r -p \"".$path."\\pgm\"",$odbc_test,1);
	callsystem("\"$path\\pgm\\odbcreg.exe\" \"MaxDB (Unicode)\" -r -p \"".$path."\\pgm\" -d sqlod32w.dll",$odbc_test,1);

	return 1;
}

sub unregisterUX{
	rename($web_ini,$web_ini.'.last');
	return 1;
}


*unregister =           $^O =~ /^MsWin/i ? \&unregisterWin :
        \&unregisterUX;

if (exists $SAPDB::Install::Config{'SDB_PORTABLE_ROOT'}){
	*register = sub {return 1};
	*unregister = \&register;
}



sub preuninstall{
	return 1;
}

sub postuninstall{
	return 1;	
}

1;
                                                                                                         
