/**
 * call-seq:
 *     open( file_name, mode ) -> db
 *
 * Open the named database file. Returns the opaque handle.
 */
static VALUE
static_api_open( VALUE module, VALUE file_name, VALUE mode )
{
  char   *s_file_name;
  char   *errmsg;
  int     i_mode;
  sqlite *db;

  Check_Type( file_name, T_STRING );
  Check_Type( mode,      T_FIXNUM );

  s_file_name = STR2CSTR( file_name );
  i_mode      = FIX2INT( mode );

  db = sqlite_open( s_file_name, i_mode, &errmsg );
  if( db == NULL )
  {
    static_raise_db_error2( -1, &errmsg );
    /* "raise" does not return */
  }

  return Data_Wrap_Struct( rb_cData, NULL, sqlite_close, db );
}