コード例 #1
0
ファイル: db_mysql.c プロジェクト: LiberatorUSA/GUCEF
static int
Exists(void *obj, const AG_Dbt *key)
{
	AG_DbMySQL *db = obj;
	char *ks, *q;

	ks = EncodeKey(key);
	Asprintf(&q, AG_GetStringP(db,"get-cmd"), ks);
	Free(ks);
	if (mysql_query(db->my, q) != 0) {
		AG_SetError("Get: %s", mysql_error(db->my));
		return (-1);
	}
	Free(q);
	return (mysql_field_count(db->my) > 0) ? 1 : 0;
}
コード例 #2
0
ファイル: db_mysql.c プロジェクト: LiberatorUSA/GUCEF
static int
Open(void *obj, const char *path, Uint flags)
{
	char dbName[128];
	AG_DbMySQL *db = obj;
	MYSQL *my;
	unsigned long myFlags = CLIENT_REMEMBER_OPTIONS;
	char *s;
	Uint i;
	my_bool b = 1;
	
	if ((my = mysql_init(NULL)) == NULL) {
		AG_SetError("mysql_init failed");
		return (-1);
	}
	if (path != NULL) {
		Strlcpy(dbName, path, sizeof(dbName));
	} else {
		AG_GetString(db, "database", dbName, sizeof(dbName));
	}
	if (AG_GetInt(db,"compress") == 1)	{ myFlags |= CLIENT_COMPRESS; }
	if (AG_GetInt(db,"local-files") == 1)	{ myFlags |= CLIENT_LOCAL_FILES; }
	if (AG_GetInt(db,"ssl") == 1)		{ myFlags |= CLIENT_SSL; }

	if (AG_GetUint(db,"ssl-verify-cert") == 1)	 { mysql_options(my, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, &b); }
	if (AG_GetUint(db,"secure-auth") == 1)		 { mysql_options(my, MYSQL_SECURE_AUTH, &b); }
	if ((s = AG_GetStringP(db,"init-cmd")) != NULL)	 { mysql_options(my, MYSQL_INIT_COMMAND, s); }
	if ((s = AG_GetStringP(db,"cnf-file")) != NULL)	 { mysql_options(my, MYSQL_READ_DEFAULT_FILE, s); }
	if ((s = AG_GetStringP(db,"cnf-group")) != NULL) { mysql_options(my, MYSQL_READ_DEFAULT_GROUP, s); }

	if ((s = AG_GetStringP(db,"protocol")) != NULL) {
		switch (tolower(s[0])) {
		case 't':	i = MYSQL_PROTOCOL_TCP;		break;
		case 's':	i = MYSQL_PROTOCOL_SOCKET;	break;
		case 'p':	i = MYSQL_PROTOCOL_PIPE;	break;
		case 'm':	i = MYSQL_PROTOCOL_MEMORY;	break;
		default:	i = MYSQL_PROTOCOL_DEFAULT;	break;
		}
		mysql_options(my, MYSQL_OPT_PROTOCOL, (const char *)&i);
	}
	if ((i = AG_GetUint(db,"read-timeout")) != 0)	 { mysql_options(my, MYSQL_OPT_READ_TIMEOUT, (const char *)&i); }
	if ((i = AG_GetUint(db,"write-timeout")) != 0)	 { mysql_options(my, MYSQL_OPT_WRITE_TIMEOUT, (const char *)&i); }
	if (AG_GetUint(db,"reconnect") == 1)		 { mysql_options(my, MYSQL_OPT_RECONNECT, (const char *)&b); }

	if ((s = AG_GetStringP(db,"charset")) != NULL)	 { mysql_options(my, MYSQL_SET_CHARSET_NAME, s); }
	if ((s = AG_GetStringP(db,"charset-dir")) != NULL) { mysql_options(my, MYSQL_SET_CHARSET_DIR, s); }

	db->my = mysql_real_connect(my,
	    AG_GetStringP(my,"host"),
	    AG_GetStringP(my,"user"),
	    AG_GetStringP(my,"pass"),
	    dbName,
	    AG_GetInt(my,"port"),
	    AG_GetStringP(my,"unix-socket"),
	    myFlags);
	if (db->my == NULL) {
		AG_SetError("MySQL: %s", mysql_error(my));
		mysql_close(my);
		return (-1);
	}
	return (0);
}
コード例 #3
0
ファイル: drv_sdlgl.c プロジェクト: varialus/agar
static int
SDLGL_OpenVideo(void *obj, Uint w, Uint h, int depth, Uint flags)
{
	char buf[256];
	AG_Driver *drv = obj;
	AG_DriverSw *dsw = obj;
	AG_DriverSDLGL *sgl = obj;
	Uint32 sFlags = SDL_OPENGL;
	int newDepth;

	/* Set the requested display options. */
	if (flags & AG_VIDEO_RESIZABLE) { sFlags |= SDL_RESIZABLE; }
	if (flags & AG_VIDEO_ANYFORMAT) { sFlags |= SDL_ANYFORMAT; }
	if (flags & AG_VIDEO_HWPALETTE) { sFlags |= SDL_HWPALETTE; }
	if (flags & AG_VIDEO_DOUBLEBUF) { sFlags |= SDL_DOUBLEBUF; }
	if (flags & AG_VIDEO_FULLSCREEN) { sFlags |= SDL_FULLSCREEN; }
	if (flags & AG_VIDEO_NOFRAME) { sFlags |= SDL_NOFRAME; }
	
	if (flags & AG_VIDEO_OVERLAY)
		dsw->flags |= AG_DRIVER_SW_OVERLAY;
	if (flags & AG_VIDEO_BGPOPUPMENU)
		dsw->flags |= AG_DRIVER_SW_BGPOPUP;

	/* Apply the output capture settings. */
	if (AG_Defined(drv, "out")) {
		char *ext;

		AG_GetString(drv, "out", buf, sizeof(buf));
		if ((ext = strrchr(buf, '.')) != NULL &&
		    ext[1] != '\0') {
			if (Strcasecmp(&ext[1], "jpeg") == 0 ||
			    Strcasecmp(&ext[1], "jpg") == 0) {
				sgl->outMode = AG_SDLGL_OUT_JPEG;
				if ((sgl->outPath = TryStrdup(buf)) == NULL)
					return (-1);
			} else if (Strcasecmp(&ext[1], "png") == 0) {
				sgl->outMode = AG_SDLGL_OUT_PNG;
				if ((sgl->outPath = TryStrdup(buf)) == NULL)
					return (-1);
			} else {
				AG_SetError("Invalid out= argument: `%s'", buf);
				return (-1);
			}
			if (AG_Defined(drv, "outFirst")) {
				AG_GetString(drv, "outFirst", buf, sizeof(buf));
				sgl->outFrame = atoi(buf);
			} else {
				sgl->outFrame = 0;
			}
			if (AG_Defined(drv, "outLast")) {
				AG_GetString(drv, "outLast", buf, sizeof(buf));
				sgl->outLast = atoi(buf);
			}
		}
	}
	
	/* Set the video mode. Force hardware palette in 8bpp. */
	AG_SDL_GetPrefDisplaySettings(drv, &w, &h, &depth);
	Verbose(_("SDLGL: Setting mode %ux%u (%d bpp)\n"), w, h, depth);
	newDepth = SDL_VideoModeOK(w, h, depth, sFlags);
	if (newDepth == 8) {
		Verbose(_("Enabling hardware palette"));
		sFlags |= SDL_HWPALETTE;
	}
	if ((sgl->s = SDL_SetVideoMode((int)w, (int)h, newDepth, sFlags))
	    == NULL) {
		AG_SetError("Setting %dx%dx%d mode: %s", w, h, newDepth,
		    SDL_GetError());
		return (-1);
	}
	SDL_EnableUNICODE(1);

	if ((drv->videoFmt = AG_SDL_GetPixelFormat(sgl->s)) == NULL) {
		goto fail;
	}
	dsw->w = sgl->s->w;
	dsw->h = sgl->s->h;
	dsw->depth = (Uint)drv->videoFmt->BitsPerPixel;

	Verbose(_("SDLGL: New display (%dbpp)\n"),
	     (int)drv->videoFmt->BitsPerPixel);
	
	/* Create the cursors. */
	if (AG_SDL_InitDefaultCursor(sgl) == -1 ||
	    AG_InitStockCursors(drv) == -1)
		goto fail;
	
	/* Set background color. */
	dsw->bgColor = AG_ColorFromString(AG_GetStringP(drv,"bgColor"), NULL);

	/* Initialize our OpenGL context and viewport. */
	if (AG_GL_InitContext(sgl, &sgl->gl) == -1) {
		goto fail;
	}
	AG_GL_SetViewport(&sgl->gl, AG_RECT(0, 0, dsw->w, dsw->h));

	if (!(dsw->flags & AG_DRIVER_SW_OVERLAY))
		ClearBackground(dsw);

	/* Initialize the output capture buffer. */
	Free(sgl->outBuf);
	if ((sgl->outBuf = AG_TryMalloc(dsw->w*dsw->h*4)) == NULL) {
		AG_Verbose("Out of memory for buffer; disabling capture\n");
		sgl->outMode = AG_SDLGL_OUT_NONE;
	}
	
	if (flags & AG_VIDEO_FULLSCREEN) {
		if (SDL_WM_ToggleFullScreen(sgl->s))
			dsw->flags |= AG_DRIVER_SW_FULLSCREEN;
	}
	return (0);
fail:
	if (drv->videoFmt) {
		AG_PixelFormatFree(drv->videoFmt);
		drv->videoFmt = NULL;
	}
	return (-1);
}