/** * 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--; }
/* 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; }
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 }
/* * 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; }