/* * Listen for framebuffer clients. * * Usage: * procname listen port * * Returns the port number actually used. * */ HIDDEN int fbo_listen_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) { struct fb_obj *fbop = (struct fb_obj *)clientData; struct bu_vls vls; bu_vls_init(&vls); if (fbop->fbo_fbs.fbs_fbp == FBIO_NULL) { bu_vls_printf(&vls, "%s listen: framebuffer not open!\n", argv[0]); Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); return TCL_ERROR; } /* return the port number */ if (argc == 2) { bu_vls_printf(&vls, "%d", fbop->fbo_fbs.fbs_listener.fbsl_port); Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); return TCL_OK; } if (argc == 3) { int port; if (sscanf(argv[2], "%d", &port) != 1) { Tcl_AppendResult(interp, "listen: bad value - ", argv[2], "\n", (char *)NULL); return TCL_ERROR; } if (port >= 0) fbs_open(interp, &fbop->fbo_fbs, port); else { fbs_close(interp, &fbop->fbo_fbs); } bu_vls_printf(&vls, "%d", fbop->fbo_fbs.fbs_listener.fbsl_port); Tcl_AppendResult(interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); return TCL_OK; } bu_vls_printf(&vls, "helplib fb_listen"); Tcl_Eval(interp, bu_vls_addr(&vls)); bu_vls_free(&vls); return TCL_ERROR; }
/* * Listen for framebuffer clients. * * Usage: * procname listen port * * Returns the port number actually used. * */ HIDDEN int fbo_listen_tcl(void *clientData, int argc, const char **argv) { struct fb_obj *fbop = (struct fb_obj *)clientData; struct bu_vls vls = BU_VLS_INIT_ZERO; if (fbop->fbo_fbs.fbs_fbp == FBIO_NULL) { bu_log("%s listen: framebuffer not open!\n", argv[0]); return BRLCAD_ERROR; } if (argc != 2 && argc != 3) { bu_log("ERROR: expecting only two or three arguments\n"); return BRLCAD_ERROR; } if (argc == 3) { int port; if (sscanf(argv[2], "%d", &port) != 1) { bu_log("listen: bad value - %s\n", argv[2]); return BRLCAD_ERROR; } if (port >= 0) fbs_open(&fbop->fbo_fbs, port); else { fbs_close(&fbop->fbo_fbs); } bu_vls_printf(&vls, "%d", fbop->fbo_fbs.fbs_listener.fbsl_port); Tcl_AppendResult(fbop->fbo_interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); return BRLCAD_OK; } /* return the port number */ /* argc == 2 */ bu_vls_printf(&vls, "%d", fbop->fbo_fbs.fbs_listener.fbsl_port); Tcl_AppendResult(fbop->fbo_interp, bu_vls_addr(&vls), (char *)NULL); bu_vls_free(&vls); return BRLCAD_OK; }