1 # include.pl - Include file for all the perl scripts that contains reusable functions
4 ##############################
6 ##############################
8 $dummy_uid = getpwnam('scm-gforge'); # UserID of the dummy user that will own group's files
9 $date = int(time()/3600/24); # Get the number of days since 1/1/1970 for /etc/shadow
11 chomp($sys_dbuser=`/usr/share/gforge/bin/forge_get_config database_user`);
12 chomp($sys_dbpasswd=`/usr/share/gforge/bin/forge_get_config database_password`);
13 chomp($sys_dbhost=`/usr/share/gforge/bin/forge_get_config database_host`);
14 chomp($sys_dbname=`/usr/share/gforge/bin/forge_get_config database_name`);
15 chomp($sys_dbport=`/usr/share/gforge/bin/forge_get_config database_port`);
16 chomp($file_dir=`/usr/share/gforge/bin/forge_get_config data_path`);
17 chomp($grpdir_prefix=`/usr/share/gforge/bin/forge_get_config groupdir_prefix`);
18 chomp($homedir_prefix=`/usr/share/gforge/bin/forge_get_config homedir_prefix`);
20 ##############################
21 # Database Connect Functions
22 ##############################
24 my $str = "DBI:Pg:dbname=$sys_dbname" ;
25 if ($sys_dbhost ne '') {
26 $str .= ";host=$sys_dbhost" ;
28 if ($sys_dbport ne '') {
29 $str .= ";port=$sys_dbport" ;
31 $dbh ||= DBI->connect($str,"$sys_dbuser","$sys_dbpasswd") ;
33 die "Error while connecting to database: $!" ;
37 sub db_disconnect ( ) {
42 sub db_drop_table_if_exists {
43 my ($sql, $res, $n, $tn) ;
45 $sql = "SELECT COUNT(*) FROM pg_class WHERE relname='$tn'";
46 $res = $dbh->prepare($sql);
48 ($n) = $res->fetchrow() ;
51 $sql = "DROP TABLE $tn";
52 $res = $dbh->prepare($sql);
58 ##############################
59 # File open function, spews the entire file to an array.
60 ##############################
62 my $filename = shift(@_);
64 open (FD, $filename) || die "Can't open $filename: $!.\n";
71 #############################
72 # File write function.
73 #############################
74 sub write_array_file {
75 my ($file_name, @file_array) = @_;
77 use File::Temp qw(tempfile);
78 use File::Basename qw(dirname);
80 my ($fd, $filename) = tempfile( DIR => dirname($file_name), UNLINK => 0) ;
81 return 1 unless ($fd && $filename) ;
83 foreach (@file_array) {
90 unless (rename ($filename, $file_name)) {
97 #######################
98 # Display a backtrace #
99 #######################
101 debug_print_backtrace
105 print "Call Trace:\n";
106 while ((my @call_details = (caller($i++)))) {
107 print " + " . $call_details[1] . ":" . $call_details[2] .
108 " in function " . $call_details[3] . "\n";