DBD-MaxDB

 view release on metacpan or  search on metacpan

MaxDB.xs  view on Meta::CPAN

}

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 )