}
static JSValue js_file_puts(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
{
	const char *string;
	FILE *f = JS_GetOpaque(this_val, file_class_id);
	if (!f || !argc) return GF_JS_EXCEPTION(ctx);

	string = JS_ToCString(ctx, argv[0]);
	if (!string) return GF_JS_EXCEPTION(ctx);
	gf_fputs(string, f);
	JS_FreeCString(ctx, string);
	return JS_UNDEFINED;
}
static JSValue js_file_puts(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
{
	const char *string;
	FILE *f = JS_GetOpaque(this_val, file_class_id);
	if (!f || !argc) return GF_JS_EXCEPTION(ctx);

	string = JS_ToCString(ctx, argv[0]);
	if (!string) return GF_JS_EXCEPTION(ctx);
	gf_fputs(string, f);
	JS_FreeCString(ctx, string);
	return JS_UNDEFINED;