DBD-MaxDB
view release on metacpan or search on metacpan
}
static char *
get_dbowner (char *datadir, char *dbname) {
char subdirname[] = "config";
char extention[] = "upc";
char *upcfilename;
char *dbowner;
Stat_t statbuff[1];
struct passwd *pwd;
int rc;
/* no file found yet */
rc = -1;
/* first look in <sapdbdata>/config if <sapdbdata> is known */
if (datadir != 0 && datadir[0] != '\0') {
New(101, upcfilename, strlen (datadir) + 1 +
strlen (subdirname) + 1 + strlen (dbname) + 1 +
strlen (extention) + 1, char);
if (upcfilename == 0)
return 0;
strcpy (upcfilename, datadir);
strcat (upcfilename, "/");
strcat (upcfilename, subdirname);
strcat (upcfilename, "/");
strcat (upcfilename, dbname);
strcat (upcfilename, ".");
strcat (upcfilename, extention);
rc = stat (upcfilename, statbuff);
Safefree (upcfilename);
}
/* look in /usr/spool/sql/config, maybe DBROOT installation */
if (rc != 0 && errno == ENOENT) {
New(101, upcfilename, strlen (sapdb_keyname) + 1 +
strlen (subdirname) + 1 + strlen (dbname) + 1 +
strlen (extention) + 1,char);
if (upcfilename == 0)
return 0;
strcpy (upcfilename, sapdb_keyname);
strcat (upcfilename, "/");
strcat (upcfilename, subdirname);
strcat (upcfilename, "/");
strcat (upcfilename, dbname);
strcat (upcfilename, ".");
strcat (upcfilename, extention);
rc = stat (upcfilename, statbuff);
Safefree (upcfilename);
}
if (rc != 0)
return 0;
pwd = getpwuid (statbuff->st_uid);
if (pwd == 0)
return 0;
New (101, dbowner, strlen (pwd->pw_name) + 1, char);
if (dbowner == 0)
return 0;
strcpy (dbowner, pwd->pw_name);
return (dbowner);
}
static info_t *
get_instinfo (char *dbname) {
int fd;
struct stat sb[1];
char *filename;
char *datadir;
info_t *info;
info_t *curr;
char *val;
/*
* first try to find 75 style globals
*/
New (101, filename, strlen (sapdb_globals_filename) + 1,char);
if (filename == 0)
return 0;
strcpy (filename, sapdb_globals_filename);
if (stat (filename, sb) != 0) {
/*
* then try 72, 73 and 74 style globals
*/
Safefree (filename);
New (101, filename, strlen (sapdb_keyname) + 1 + strlen (sapdb_ininame) + 1,char);
if (filename == 0)
return 0;
strcpy (filename, sapdb_keyname);
strcat (filename, "/");
strcat (filename, sapdb_ininame);
}
info = 0;
fd = open (filename , O_RDONLY);
Safefree (filename);
if (fd < 0)
return 0;
datadir = get_value (fd, "Globals", "IndepData");
info = infoadd (info, "datadir", datadir);
info =
infoadd (info, "progdir", get_value (fd, "Globals", "IndepPrograms"));
val = get_value (fd, "Globals", "SdbOwner");
if (val != 0)
infoadd (info, "user", val);
( run in 1.993 second using v1.01-cache-2.11-cpan-39bf76dae61 )