DBD-MaxDB

 view release on metacpan or  search on metacpan

MaxDB.xs  view on Meta::CPAN


		if (strcmp (curr0->key, "db") == 0) {
			if (curr0->val == 0)
				continue;

			if (hv1 == 0)
				hv1 = newHV ();

			hv2 = newHV ();
			for (curr1 = (info_t *)(curr0->val); curr1 != 0; curr1 = curr1->next) {
				if (curr1->key == 0)
					continue;

				if (strcmp (curr1->key, "dbname") == 0) {
				  New (101, dbname, strlen (curr1->val) + 1, char); 

					if (dbname == 0)
						break;

					strcpy (dbname, curr1->val);
				}

				if (curr1->val == 0) {
					hv_store (
					hv2, curr1->key, strlen (curr1->key),
					newSVpv ("", 0), 0);
					continue;
				}

				if (strcmp (curr1->key, "dbswdir") == 0 ||
				    strcmp (curr1->key, "paramfile") == 0) {
					char *ptr;

					for (ptr = curr1->val; *ptr != 0; ptr++)
						if (*ptr == '\\')
							*ptr = '/';
				}

				hv_store (
				hv2, curr1->key, strlen (curr1->key),
				newSVpv (curr1->val, strlen (curr1->val)), 0);
			}

			rv = newRV ((SV *) hv2);
			SvREFCNT_dec (hv2);
			hv_store (hv1, dbname, strlen (dbname), rv, 0);
			Safefree (dbname);
			continue;
		}

		if (curr0->val == 0) {
			hv_store (
			hv0, curr0->key, strlen (curr0->key),
			newSVpv ("", 0), 0);
			continue;
		}

		if (strcmp (curr0->key, "progdir") == 0 ||
		    strcmp (curr0->key, "datadir") == 0 ||
		    strcmp (curr0->key, "uid") == 0 ||
		    strcmp (curr0->key, "gid") == 0 ||
		    strcmp (curr0->key, "user") == 0 ||
		    strcmp (curr0->key, "group") == 0) {
			char *ptr;

			for (ptr = curr0->val; *ptr != 0; ptr++)
				if (*ptr == '\\')
					*ptr = '/';
		}

		hv_store (
		hv0, curr0->key, strlen (curr0->key),
		newSVpv (curr0->val, strlen (curr0->val)), 0);
	}

	if (hv1 != 0) {
		rv = newRV ((SV *) hv1);
		SvREFCNT_dec (hv1);
		hv_store (hv0, "database", 8, rv, 0);
	}

	infofree (info);

	rv = sv_2mortal (newRV ((SV *) hv0));
	SvREFCNT_dec (hv0);

	XPUSHs (rv);
	XSRETURN (1);
	
MODULE = DBD::MaxDB    PACKAGE = DBD::MaxDB

INCLUDE: MaxDB.xsi

MODULE = DBD::MaxDB    PACKAGE = DBD::MaxDB::dr

MODULE = DBD::MaxDB    PACKAGE = DBD::MaxDB::db

void
_ping(dbh)
  SV *  dbh
  CODE:
  ST(0) = dbd_maxdb_db_ping(dbh)? &sv_yes : &sv_no;

void
_isunicode(dbh)
  SV *  dbh
  CODE:
  ST(0) = dbd_maxdb_db_isunicode(dbh)? &sv_yes : &sv_no;

void
_getSQLMode(dbh)
    SV *  dbh
    CODE:
  ST(0) = dbd_maxdb_db_getSQLMode(dbh);

void
_getVersion(dbh)
    SV *  dbh
    CODE:
  ST(0) = dbd_maxdb_db_getVersion(dbh);



( run in 0.652 second using v1.01-cache-2.11-cpan-5735350b133 )