예제 #1
0
파일: httpd-io.c 프로젝트: Oxyoptia/x3270
/**
 * Close the session associated with a particular socket.
 * Called from the HTTPD logic when a fatal error or EOF occurs.
 *
 * @param[in] session	Session
 */
static void
hio_socket_close(session_t *session)
{
    SOCK_CLOSE(session->s);
    if (session->ioid != NULL_IOID) {
	RemoveInput(session->ioid);
    }
    if (session->toid != NULL_IOID) {
	RemoveTimeOut(session->toid);
    }
#if defined(_WIN32) /*[*/
    CloseHandle(session->event);
#endif /*]*/
    vb_free(&session->pending.result);
    llist_unlink(&session->link);
    Free(session);
    n_sessions--;
}
예제 #2
0
파일: util.c 프로젝트: Oxyoptia/x3270
/* String version of fcatv. */
char *
scatv(const char *s, char *buf, size_t len)
{
    char c;
    varbuf_t r;

    vb_init(&r);
    while ((c = *s++)) {

	/* Expand this character. */
	switch (c) {
	case '\n':
	    vb_appends(&r, "\\n");
	    break;
	case '\t':
	    vb_appends(&r, "\\t");
	    break;
	case '\b':
	    vb_appends(&r, "\\b");
	    break;
	default:
	    if ((c & 0x7f) < ' ') {
		vb_appendf(&r, "\\%03o", c & 0xff);
	    } else {
		vb_append(&r, &c, 1);
	    }
	    break;
	}
    }

    /* Copy what fits. */
    (void) snprintf(buf, len, "%s", vb_buf(&r));
    vb_free(&r);

    return buf;
}
예제 #3
0
void test_initgbuf()
{

#if 1

#define MRT 0

#if MRT
	if (!shaderpdm_mrt) shaderpdm_mrt=vfs_load("shaders/pdm_mrt.c");
	rnd_tg("ttd", gbuf_color, gbuf_normal, gbuf_depth);
#else
	rnd_tg("td", gbuf_color, gbuf_depth);
//	rnd_tg(0);
#endif

	rnd_clearall();
	
	////////////////////////////////
	test_vbfmt_t verts[4];
	verts[0].co=vec(-10, -10, 30);
	verts[1].co=vec(10, -10, 30);
	verts[2].co=vec(10, 10, 30);
	verts[3].co=vec(-10, 10, 30);
	for (int i=0; i<4; i++) {
		verts[i].normal=vec(0,0,-1);
		verts[i].tangent=vec(1,0,0);
		verts[i].binormal=vec(0,1,0);
	}

	verts[0].texco[0]=0;
	verts[0].texco[1]=0;
	verts[1].texco[0]=.5;
	verts[1].texco[1]=0;
	verts[2].texco[0]=.5;
	verts[2].texco[1]=.5;
	verts[3].texco[0]=0;
	verts[3].texco[1]=.5;

#if MRT
	vfs_use(shaderpdm_mrt);
#else
	vfs_use(shaderpdm);
#endif


	samp2d("color_map", texcolor);
	samp2d("relief_map", texrelief);
	samp2d("pyramid_map", texpyramid);
	samp2d("depth_map", texdepth);
	uni3f("lightpos", 5.36f, 10.0f, 1.8f);
	int vb=vb_alloc(4, sizeof(test_vbfmt_t), verts);
	rendq("{co texco normal tangent binormal}", -1, vb);
	vb_free(vb);

#endif //0

	vfs_use(-1);
#if 1
	float tcbnd[4]={0,0,1,1};
	float qbnd[4]={-10,-10,10,10};

	glColor4f(1,1,1,1);
//	glEnable(GL_TEXTURE_2D);
//	glBindTexture(GL_TEXTURE_2D, texcolor); //texpyramid);//texrelief); //texlena);

	float z=50;
	glBegin(GL_QUADS);
	glTexCoord2f(tcbnd[0], tcbnd[1]);	glVertex3f(qbnd[0], qbnd[1], z);
	glTexCoord2f(tcbnd[2], tcbnd[1]);	glVertex3f(qbnd[2], qbnd[1], z);
	glTexCoord2f(tcbnd[2], tcbnd[3]);	glVertex3f(qbnd[2], qbnd[3], z);
	glTexCoord2f(tcbnd[0], tcbnd[3]);	glVertex3f(qbnd[0], qbnd[3], z);
	glEnd();

//	glDisable(GL_TEXTURE_2D); //TODO

#endif


	
}
예제 #4
0
파일: ft.c 프로젝트: Oxyoptia/x3270
/*
 * Start a file transfer, based on the contents of an ft_state structure.
 *
 * This function will fail if the file exists and the overwrite flag is not
 * set.
 *
 * Returns the local file pointer, or NULL if the transfer could not start.
 * If an error is detected, it will call popup_an_error() with an appropriate
 * message.
 */
FILE *
ft_go(ft_conf_t *p)
{
    FILE *f;
    varbuf_t r;
    unsigned flen;

    /* Adjust the DFT buffer size. */
    p->dft_buffersize = set_dft_buffersize(p->dft_buffersize);

    /* See if the local file can be overwritten. */
    if (p->receive_flag && !p->append_flag && !p->allow_overwrite) {
	f = fopen(p->local_filename, p->ascii_flag? "r": "rb");
	if (f != NULL) {
	    (void) fclose(f);
	    popup_an_error("Transfer: File exists");
	    return NULL;
	}
    }

    /* Open the local file. */
    f = fopen(p->local_filename, ft_local_fflag(p));
    if (f == NULL) {
	popup_an_errno(errno, "Local file '%s'", p->local_filename);
	return NULL;
    }

    /* Build the ind$file command */
    vb_init(&r);
    vb_appendf(&r, "IND\\e005BFILE %s %s %s",
	    p->receive_flag? "GET": "PUT",
	    p->host_filename,
	    (p->host_type != HT_TSO)? "(": "");
    if (p->ascii_flag) {
	vb_appends(&r, "ASCII");
    } else if (p->host_type == HT_CICS) {
	vb_appends(&r, "BINARY");
    }
    if (p->ascii_flag && p->cr_flag) {
	vb_appends(&r, " CRLF");
    } else if (p->host_type == HT_CICS) {
	vb_appends(&r, " NOCRLF");
    }
    if (p->append_flag && !p->receive_flag) {
	vb_appends(&r, " APPEND");
    }
    if (!p->receive_flag) {
	if (p->host_type == HT_TSO) {
	    if (p->recfm != DEFAULT_RECFM) {
		/* RECFM Entered, process */
		vb_appends(&r, " RECFM(");
		switch (p->recfm) {
		case RECFM_FIXED:
		    vb_appends(&r, "F");
		    break;
		case RECFM_VARIABLE:
		    vb_appends(&r, "V");
		    break;
		case RECFM_UNDEFINED:
		    vb_appends(&r, "U");
		    break;
		default:
		    break;
		};
		vb_appends(&r, ")");
		if (p->lrecl) {
		    vb_appendf(&r, " LRECL(%d)", p->lrecl);
		}
		if (p->blksize) {
		    vb_appendf(&r, " BLKSIZE(%d)", p->blksize);
		}
	    }
	    if (p->units != DEFAULT_UNITS) {
		/* Space Entered, processs it */
		vb_appendf(&r, " SPACE(%d", p->primary_space);
		if (p->secondary_space) {
		    vb_appendf(&r, ",%d", p->secondary_space);
		}
		vb_appends(&r, ")");
		switch (p->units) {
		case TRACKS:
		    vb_appends(&r, " TRACKS");
		    break;
		case CYLINDERS:
		    vb_appends(&r, " CYLINDERS");
		    break;
		case AVBLOCK:
		    vb_appendf(&r, " AVBLOCK(%d)", p->avblock);
		    break;
		default:
		    break;
		}
	    }
	} else if (p->host_type == HT_VM) {
	    if (p->recfm != DEFAULT_RECFM) {
		vb_appends(&r, " RECFM ");
		switch (p->recfm) {
		case RECFM_FIXED:
		    vb_appends(&r, "F");
		    break;
		case RECFM_VARIABLE:
		    vb_appends(&r, "V");
		    break;
		default:
		    break;
		};

		if (p->lrecl) {
		    vb_appendf(&r, " LRECL %d", p->lrecl);
		}
	    }
	}
    }
    vb_appends(&r, "\\n");

    /* Erase the line and enter the command. */
    flen = kybd_prime();
    if (!flen || flen < vb_len(&r) - 1) {
	vb_free(&r);
	if (f != NULL) {
	    fclose(f);
	    if (p->receive_flag && !p->append_flag) {
		unlink(p->local_filename);
	    }
	}
	popup_an_error("%s", get_message("ftUnable"));
	return NULL;
    }
    (void) emulate_input(vb_buf(&r), vb_len(&r), false);
    vb_free(&r);

    /* Now proceed with this context. */
    ftc = p;

    /* Finish common initialization. */
    fts.last_cr = false;
    fts.is_cut = false;
    fts.last_dbcs = false;
    fts.dbcs_state = FT_DBCS_NONE;

    ft_state = FT_AWAIT_ACK;
    idle_ft_start();

    return f;
}