pascal OSStatus driverchooser_ok_clicked (EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData) { TDRIVERCHOOSER *choose_t = (TDRIVERCHOOSER *) inUserData; DataBrowserItemID first, last; OSStatus err; if (choose_t) { /* Get the selection */ if ((err = GetDataBrowserSelectionAnchor (choose_t->driverlist, &first, &last)) == noErr) { if (first > DBITEM_ID && first <= DBITEM_ID + Drivers_nrows) { /* Get the driver name */ choose_t->driver = convert_CFString_to_wchar(Drivers_array[0][first - DBITEM_ID - 1]); } else choose_t->driver = NULL; } else choose_t->driver = NULL; DisposeWindow (choose_t->mainwnd); choose_t->mainwnd = NULL; choose_t->driverlist = NULL; Drivers_nrows = 0; } return noErr; }
char* convert_CFString_to_char(const CFStringRef str) { wchar_t *prov = convert_CFString_to_wchar (str); char *buffer = NULL; if (prov) { buffer = dm_SQL_W2A (prov, SQL_NTS); free(prov); } return buffer; }