/** * locate a pixbuf resource * * Pixbuf resources can be compiled inline * * \param respath A string vector containing the valid resource search paths * \param resource A resource entry to initialise */ static nserror init_pixbuf_resource(char **respath, struct nsgtk_resource_s *resource) { #ifdef WITH_BUILTIN_PIXBUF if (strncmp(resource->name, "menu_cursor.png", resource->len) == 0) { resource->path = (char *)&menu_cursor_pixdata[0]; resource->type = NSGTK_RESOURCE_INLINE; LOG("Found builtin for %s", resource->name); return NSERROR_OK; } if (strncmp(resource->name, "netsurf.xpm", resource->len) == 0) { resource->path = (char *)&netsurf_pixdata[0]; resource->type = NSGTK_RESOURCE_INLINE; LOG("Found builtin for %s", resource->name); return NSERROR_OK; } if (strncmp(resource->name, "favicon.png", resource->len) == 0) { resource->path = (char *)&favicon_pixdata[0]; resource->type = NSGTK_RESOURCE_INLINE; LOG("Found builtin for %s", resource->name); return NSERROR_OK; } #endif return init_resource(respath, resource); }
int main(int argc, char **argv) { struct sockaddr_in src, dst; struct thread_resource threads[THREAD_NUM]; pthread_t tid; int ports[MAX_PORT_NUM + 1] = {0}; pcap_if_t *dev; char filter[256] = {0}; int i; int len = sizeof(i); if (argc != 2) { fprintf(stderr, "Usage: sniff target_ip\n"); exit(1); } if (-1 == (dst_sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW))) errquit("socket"); if (NULL == (pair = (struct socket_pair *) malloc(sizeof(struct socket_pair)))) errquit("malloc"); pair->src = &src; pair->dst = &dst; printf("running...\n"); configure_remote_addr(argv[1], pair->dst); snprintf(filter, 256, "tcp port %d", LOCAL_PORT); // host 115.155.60.3 and dst port %d", LOCAL_PORT); dev = configure_local_addr(pair->src); pair->src->sin_port = htons(LOCAL_PORT); #ifndef NNDEBUG printf("remote addr: %s\n", inet_ntoa(pair->dst->sin_addr)); printf("local addr: %s\n", inet_ntoa(pair->src->sin_addr)); #endif init_resource(threads, THREAD_NUM, dst_sock, dev, filter, ports); for (i = 0; i < THREAD_NUM; ++i) { if (-1 == pthread_create(&threads[i].tid, NULL, capture, (void*)&threads[i])) errquit("pthread_create"); pthread_detach(threads[i].tid); } sleep(1); if (-1 == pthread_create(&tid, NULL, detect, (void*)pair) ) errquit("pthread_create"); pthread_detach(tid); sleep(8); for (i = 0; i < THREAD_NUM; ++i) cancel_capture(&threads[i]); printf("The following ports send SYN and ACK back:\n"); for (i = 1; i < MAX_PORT_NUM + 1; ++i) if (0 != ports[i]) printf("%d ", i); printf("\nDone!\n"); free(pair); return(0); }
/** * locate a ui resource * * UI resources need their resource name changing to account for gtk versions * * \param respath A string vector containing the valid resource search paths * \param ui_res A resource entry to initialise */ static nserror init_ui_resource(char **respath, struct nsgtk_resource_s *ui_res) { #if GTK_CHECK_VERSION(3,0,0) int gtkv = 3; #else int gtkv = 2; #endif int resnamelen; char *resname; struct nsgtk_resource_s resource; nserror res; resnamelen = ui_res->len + 10; /* allow for the expanded ui name */ resname = malloc(resnamelen); if (resname == NULL) { return NSERROR_NOMEM; } snprintf(resname, resnamelen, "%s.gtk%d.ui", ui_res->name, gtkv); resource.name = resname; resource.len = ui_res->len; resource.path = NULL; res = init_resource(respath, &resource); ui_res->path = resource.path; ui_res->type = resource.type; free(resname); return res; }
/* Consumes file name */ struct resource * make_pid_file_resource(struct lsh_string *file) { const char *cname = lsh_get_cstring(file); int fd; assert (cname); /* Try to open the file atomically. This provides sufficient locking * on normal (non-NFS) file systems. */ fd = open(cname, O_WRONLY | O_CREAT | O_EXCL, 0644); if (fd < 0) { if (errno != EEXIST) werror("Failed to open pid file '%S': %e.\n", file, errno); else /* FIXME: We could try to detect and ignore stale pid files. */ werror("Pid file '%S' already exists.\n", file); lsh_string_length(file); return NULL; } else { struct lsh_string *pid = ssh_format("%di", getpid()); if (!write_raw(fd, STRING_LD(pid))) { werror("Writing pidfile `%S' failed: %e\n", file, errno); /* Attempt unlinking file */ if (unlink(cname) < 0) werror("Unlinking pid file '%S' failed: %e.\n", file, errno); close(fd); lsh_string_free(pid); lsh_string_free(file); return NULL; } else { NEW(pid_file_resource, self); init_resource(&self->super, do_kill_pid_file); self->file = file; lsh_string_free(pid); close(fd); return &self->super; } } }
void main(int argc, char *argv[]) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; if ( argc > 1 ) { // 如果命令列參數指定用OpenGL, 就改用OpenGL. if ( stricmp(argv[1], "opengl")==0 ) { device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; } // 如果命令列參數指定用DX10, 就改用DX10. else if ( stricmp(argv[1], "dx10")==0 ) { #ifdef _ENABLE_DX10_ device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; #endif // _ENABLE_DX10_ } } // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
/** * locate and setup a direct resource * * Direct resources have general type of NSGTK_RESOURCE_GLIB but have * g_resources_lookup_data() applied and the result stored so the data * can be directly accessed without additional processing. * * \param respath A string vector containing the valid resource search paths * \param resource A resource entry to initialise */ static nserror init_direct_resource(char **respath, struct nsgtk_resource_s *resource) { nserror res; res = init_resource(respath, resource); #ifdef WITH_GRESOURCE if ((res == NSERROR_OK) && (resource->type == NSGTK_RESOURCE_GLIB)) { /* found gresource we can convert */ GBytes *data; data = g_resources_lookup_data(resource->path, G_RESOURCE_LOOKUP_FLAGS_NONE, NULL); if (data != NULL) { resource->type = NSGTK_RESOURCE_DIRECT; resource->path = (char *)data; } } #endif return res; }
static struct resource * make_client_tty_resource(struct interact *tty, struct terminal_attributes *attr) { NEW(client_tty_resource, self); init_resource(&self->super, do_kill_client_tty_resource); self->tty = tty; self->attr = attr; return &self->super; }
void init(void) { init_video(); init_mm(); init_trap(); init_irq(); init_8259a(); init_keyboard(); init_timer(); init_harddisk(); init_mouse(); io_sti(); init_resource(); do_test(); }
static int create_ftp_network_resource() { init_resource(&ftp_network_resource); ftp_network_resource.parent=NULL; ftp_network_resource.group=RESOURCE_GROUP_FTP; ftp_network_resource.type=FTP_TYPE_NETWORK; ftp_network_resource.primary=1; ftp_network_resource.data=(void *) &ftp_network; ftp_network.detect_time.tv_sec=0; ftp_network.detect_time.tv_nsec=0; ftp_network.refresh_time.tv_sec=0; ftp_network.refresh_time.tv_nsec=0; }
int main (int argc, char **argv) { //初始化必要的资源 if( init_resource() < 0 ){ debug(LOG_ERR, " init_resource fail !"); return -1; } parse_commandline(argc, argv); /* Init the signals to catch chld/quit/etc */ init_signals(); if( do_process() < 0 ) { debug(LOG_ERR, " do_process fail !"); exit(-1); } debug(LOG_ERR, "%s : QUIT do_process()",__FUNCTION__); return 0; }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; #ifdef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #endif int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; case '3': #ifdef _ENABLE_DX10_ device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; #endif break; } GutResizeFunc( resize_func ); // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } float texel = 1.0f/(float)shadowmap_size; int index = 0; for ( int y=-PCF_sample_span; y<=PCF_sample_span; y++ ) { for ( int x=-PCF_sample_span; x<=PCF_sample_span; x++ ) { g_vTexOffset[index++].Set(x*texel, y*texel, 0.0f, 0.0f); } } index = 0; for ( int y=-1; y<=2; y++ ) { for ( int x=-1; x<=2; x++ ) { g_vTexOffset2[index++].Set(x*texel, y*texel, 0.0f, 0.0f); } } GutInputInit(); GutRegisterKeyDown(GUTKEY_1, KeyDown_1); GutRegisterKeyDown(GUTKEY_2, KeyDown_2); GutRegisterKeyPressed(GUTKEY_ADD, KeyPressed_ADD); GutRegisterKeyPressed(GUTKEY_SUBTRACT, KeyPressed_MINUS); g_Control.SetCamera(Vector4(5.0f, 0.0f, 5.0f), Vector4(0.0f), Vector4(0.0f, 1.0f, 0.0f) ); g_Model.SetTexturePath("../../textures/"); if ( !g_Model.Load_ASCII("../../models/altar.gma") ) { exit(0); } // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { GetUserInput(); render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
Resource *resource_manager<Derived, Traits>::new_resource(Args&&... args) { Resource r; init_resource(r, std::forward(args)...); return r; }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; #ifdef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #endif int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; #ifdef _ENABLE_DX10_ case '3': device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; break; #endif } printf("\nSelected %s device for rendering.\n", device); GutResizeFunc( resize_func ); // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } // GutInputInit(); GutRegisterKeyDown(GUTKEY_1, KeyDown_1); GutRegisterKeyDown(GUTKEY_2, KeyDown_2); GutRegisterKeyDown(GUTKEY_3, KeyDown_3); GutRegisterKeyDown(GUTKEY_4, KeyDown_4); GutRegisterKeyDown(GUTKEY_5, KeyDown_5); GutRegisterKeyDown(GUTKEY_6, KeyDown_6); GutRegisterKeyPressed(GUTKEY_EQUALS, KeyPressed_ADD); GutRegisterKeyPressed(GUTKEY_MINUS, KeyPressed_MINUS); GutRegisterKeyPressed(GUTKEY_ADD, KeyPressed_ADD); GutRegisterKeyPressed(GUTKEY_SUBTRACT, KeyPressed_MINUS); g_Control.SetCamera(Vector4(0.0f, 3.0f, 1.0f), Vector4(0.0f, 0.0f, 1.0f), Vector4(0.0f, 0.0f, 1.0f) ); g_Control.SetMoveSpeed(5.0f); // g_emitter.m_fEmitRate = 300; g_emitter.m_fEmitTheta = FastMath::DegToRad(15.0f); g_emitter.m_fParticleInitSpeed[0] = 1.0f; g_emitter.m_fParticleInitSpeed[1] = 2.0f; g_emitter.m_fParticleLife[0] = 1.5f; g_emitter.m_fParticleLife[1] = 2.0f; g_emitter.m_fParticleSize[0] = 0.05f; g_emitter.m_fParticleSize[1] = 0.10f; g_Particle.SetEmitter(g_emitter); g_Particle.SetForce(Vector4(0.0f, 0.0f, -1.0f)); // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } g_Timer.Restart(); // 主回圈 while( GutProcessMessage() ) { GetUserInput(); // framemove(); // 畫出矩形 render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
bool CONFIG::parse_config() { LEX *lc = NULL; int token, i, pass; int res_type = 0; enum parse_state state = p_none; RES_ITEM *items = NULL; int level = 0; static bool first = true; int errstat; const char *cf = m_cf; LEX_ERROR_HANDLER *scan_error = m_scan_error; int err_type = m_err_type; if (first && (errstat=rwl_init(&res_lock)) != 0) { berrno be; Jmsg1(NULL, M_ABORT, 0, _("Unable to initialize resource lock. ERR=%s\n"), be.bstrerror(errstat)); } first = false; char *full_path = (char *)alloca(MAX_PATH + 1); if (!find_config_file(cf, full_path, MAX_PATH +1)) { Jmsg0(NULL, M_ABORT, 0, _("Config filename too long.\n")); } cf = full_path; /* Make two passes. The first builds the name symbol table, * and the second picks up the items. */ Dmsg0(900, "Enter parse_config()\n"); for (pass=1; pass <= 2; pass++) { Dmsg1(900, "parse_config pass %d\n", pass); if ((lc = lex_open_file(lc, cf, scan_error)) == NULL) { berrno be; /* We must create a lex packet to print the error */ lc = (LEX *)malloc(sizeof(LEX)); memset(lc, 0, sizeof(LEX)); if (scan_error) { lc->scan_error = scan_error; } else { lex_set_default_error_handler(lc); } lex_set_error_handler_error_type(lc, err_type) ; bstrncpy(lc->str, cf, sizeof(lc->str)); lc->fname = lc->str; scan_err2(lc, _("Cannot open config file \"%s\": %s\n"), lc->str, be.bstrerror()); free(lc); return 0; } lex_set_error_handler_error_type(lc, err_type) ; while ((token=lex_get_token(lc, T_ALL)) != T_EOF) { Dmsg3(900, "parse state=%d pass=%d got token=%s\n", state, pass, lex_tok_to_str(token)); switch (state) { case p_none: if (token == T_EOL) { break; } else if (token == T_UTF8_BOM) { /* We can assume the file is UTF-8 as we have seen a UTF-8 BOM */ break; } else if (token == T_UTF16_BOM) { scan_err0(lc, _("Currently we cannot handle UTF-16 source files. " "Please convert the conf file to UTF-8\n")); return 0; } else if (token != T_IDENTIFIER) { scan_err1(lc, _("Expected a Resource name identifier, got: %s"), lc->str); return 0; } for (i=0; resources[i].name; i++) { if (strcasecmp(resources[i].name, lc->str) == 0) { items = resources[i].items; if (!items) { break; } state = p_resource; res_type = resources[i].rcode; init_resource(this, res_type, items, pass); break; } } if (state == p_none) { scan_err1(lc, _("expected resource name, got: %s"), lc->str); return 0; } break; case p_resource: switch (token) { case T_BOB: level++; break; case T_IDENTIFIER: if (level != 1) { scan_err1(lc, _("not in resource definition: %s"), lc->str); return 0; } for (i=0; items[i].name; i++) { if (strcasecmp(items[i].name, lc->str) == 0) { /* If the ITEM_NO_EQUALS flag is set we do NOT * scan for = after the keyword */ if (!(items[i].flags & ITEM_NO_EQUALS)) { token = lex_get_token(lc, T_SKIP_EOL); Dmsg1 (900, "in T_IDENT got token=%s\n", lex_tok_to_str(token)); if (token != T_EQUALS) { scan_err1(lc, _("expected an equals, got: %s"), lc->str); return 0; } } Dmsg1(800, "calling handler for %s\n", items[i].name); /* Call item handler */ items[i].handler(lc, &items[i], i, pass); i = -1; break; } } if (i >= 0) { Dmsg2(900, "level=%d id=%s\n", level, lc->str); Dmsg1(900, "Keyword = %s\n", lc->str); scan_err1(lc, _("Keyword \"%s\" not permitted in this resource.\n" "Perhaps you left the trailing brace off of the previous resource."), lc->str); return 0; } break; case T_EOB: level--; state = p_none; Dmsg0(900, "T_EOB => define new resource\n"); if (res_all.hdr.name == NULL) { scan_err0(lc, _("Name not specified for resource")); return 0; } save_resource(res_type, items, pass); /* save resource */ break; case T_EOL: break; default: scan_err2(lc, _("unexpected token %d %s in resource definition"), token, lex_tok_to_str(token)); return 0; } break; default: scan_err1(lc, _("Unknown parser state %d\n"), state); return 0; } } if (state != p_none) { scan_err0(lc, _("End of conf file reached with unclosed resource.")); return 0; } if (debug_level >= 900 && pass == 2) { int i; for (i=m_r_first; i<=m_r_last; i++) { dump_resource(i, m_res_head[i-m_r_first], prtmsg, NULL); } } lc = lex_close_file(lc); } Dmsg0(900, "Leave parse_config()\n"); return 1; }
int read_resource_config(char *recordpath, struct resource_struct *resource) { int len=strlen(recordpath); FILE *fp; char configfile[len+8]; /* 2 + strlen("config") = 8 */ char line[512]; char *sep, *option, *value; struct resource_group_struct *group=NULL; int found=0; init_resource(resource); /* append the /config to the record path */ memcpy(configfile, recordpath, len); *(configfile+len)='/'; len++; memcpy(configfile+len, "config", 6); len+=6; *(configfile+len)='\0'; fp=fopen(configfile, "r"); if (! fp) goto error; while( ! feof(fp)) { if ( ! fgets(line, 512, fp)) continue; sep=strchr(line, '\n'); if (sep) *sep='\0'; sep=strchr(line, '='); if (!sep) continue; *sep='\0'; option=line; value=sep+1; if (strcmp(option, "RECORD_type")==0) { /* determine the resource_group this record is for, and if found, init the resource */ if (! group ) { group=get_next_resource_group(NULL); while(group) { if (group->group_calls) { if (group->group_calls->readrecord) { if ( (* group->group_calls->readrecord) (NULL, option, value, NULL)==1) break; } } group=get_next_resource_group(group); } if ( ! group ) { logoutput("read_resource_config: RECORD_type %s not supported: no group found", value); found=-1; } else { /* call again, now with resource and no option to init */ (* group->group_calls->readrecord) (resource, NULL, value, recordpath); resource->resource_group=group; } } else { logoutput("read_resource_config: type %s double, group already assigned"); } } else if (group) { (* group->group_calls->readrecord) (resource, option, value, recordpath); } } out: if (fp) fclose(fp); return found; error: return -1; }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; #ifndef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #endif int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; case '3': #ifdef _ENABLE_DX10_ device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; #endif break; } GutResizeFunc( resize_func ); // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } GutInputInit(); g_Control.SetCamera(Vector4(5.0f, 0.0f, 5.0f), Vector4(0.0f), Vector4(0.0f, 1.0f, 0.0f) ); g_Model.Load_ASCII("../../models/teapot_set.gma"); g_SpotLightModel.Load_ASCII("../../models/spotlight.gma"); // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { GetUserInput(); render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
bool CONFIG::parse_config_file(const char *cf, void *caller_ctx, LEX_ERROR_HANDLER *scan_error, LEX_WARNING_HANDLER *scan_warning, int32_t err_type) { bool result = true; LEX *lc = NULL; int token, i, pass; int res_type = 0; enum parse_state state = p_none; RES_TABLE *res_table = NULL; RES_ITEM *items = NULL; RES_ITEM *item = NULL; int level = 0; /* * Make two passes. The first builds the name symbol table, * and the second picks up the items. */ Dmsg0(900, "Enter parse_config()\n"); for (pass = 1; pass <= 2; pass++) { Dmsg1(900, "parse_config pass %d\n", pass); if ((lc = lex_open_file(lc, cf, scan_error, scan_warning)) == NULL) { berrno be; /* * We must create a lex packet to print the error */ lc = (LEX *)malloc(sizeof(LEX)); memset(lc, 0, sizeof(LEX)); if (scan_error) { lc->scan_error = scan_error; } else { lex_set_default_error_handler(lc); } if (scan_warning) { lc->scan_warning = scan_warning; } else { lex_set_default_warning_handler(lc); } lex_set_error_handler_error_type(lc, err_type) ; scan_err2(lc, _("Cannot open config file \"%s\": %s\n"), cf, be.bstrerror()); free(lc); return 0; } lex_set_error_handler_error_type(lc, err_type); lc->error_counter = 0; lc->caller_ctx = caller_ctx; while ((token=lex_get_token(lc, T_ALL)) != T_EOF) { Dmsg3(900, "parse state=%d pass=%d got token=%s\n", state, pass, lex_tok_to_str(token)); switch (state) { case p_none: if (token == T_EOL) { break; } else if (token == T_UTF8_BOM) { /* * We can assume the file is UTF-8 as we have seen a UTF-8 BOM */ break; } else if (token == T_UTF16_BOM) { scan_err0(lc, _("Currently we cannot handle UTF-16 source files. " "Please convert the conf file to UTF-8\n")); goto bail_out; } else if (token != T_IDENTIFIER) { scan_err1(lc, _("Expected a Resource name identifier, got: %s"), lc->str); goto bail_out; } res_table = get_resource_table(lc->str); if(res_table && res_table->items) { items = res_table->items; state = p_resource; res_type = res_table->rcode; init_resource(res_type, items, pass); } if (state == p_none) { scan_err1(lc, _("expected resource name, got: %s"), lc->str); goto bail_out; } break; case p_resource: switch (token) { case T_BOB: level++; break; case T_IDENTIFIER: if (level != 1) { scan_err1(lc, _("not in resource definition: %s"), lc->str); goto bail_out; } i = get_resource_item_index(items, lc->str); if (i>=0) { item = &items[i]; /* * If the CFG_ITEM_NO_EQUALS flag is set we do NOT * scan for = after the keyword */ if (!(item->flags & CFG_ITEM_NO_EQUALS)) { token = lex_get_token(lc, T_SKIP_EOL); Dmsg1 (900, "in T_IDENT got token=%s\n", lex_tok_to_str(token)); if (token != T_EQUALS) { scan_err1(lc, _("expected an equals, got: %s"), lc->str); goto bail_out; } } /* * See if we are processing a deprecated keyword if so warn the user about it. */ if (item->flags & CFG_ITEM_DEPRECATED) { scan_warn2(lc, _("using deprecated keyword %s on line %d"), item->name, lc->line_no); /* * As we only want to warn we continue parsing the config. So no goto bail_out here. */ } Dmsg1(800, "calling handler for %s\n", item->name); /* * Call item handler */ if (!store_resource(item->type, lc, item, i, pass)) { /* * None of the generic types fired if there is a registered callback call that now. */ if (m_store_res) { m_store_res(lc, item, i, pass); } } } else { Dmsg2(900, "level=%d id=%s\n", level, lc->str); Dmsg1(900, "Keyword = %s\n", lc->str); scan_err1(lc, _("Keyword \"%s\" not permitted in this resource.\n" "Perhaps you left the trailing brace off of the previous resource."), lc->str); goto bail_out; } break; case T_EOB: level--; state = p_none; Dmsg0(900, "T_EOB => define new resource\n"); if (((URES *)m_res_all)->hdr.name == NULL) { scan_err0(lc, _("Name not specified for resource")); goto bail_out; } /* save resource */ if (!save_resource(res_type, items, pass)) { scan_err0(lc, _("save_resource failed")); goto bail_out; }; break; case T_EOL: break; default: scan_err2(lc, _("unexpected token %d %s in resource definition"), token, lex_tok_to_str(token)); goto bail_out; } break; default: scan_err1(lc, _("Unknown parser state %d\n"), state); goto bail_out; } } if (state != p_none) { scan_err0(lc, _("End of conf file reached with unclosed resource.")); goto bail_out; } if (debug_level >= 900 && pass == 2) { int i; for (i = m_r_first; i <= m_r_last; i++) { dump_resource(i, m_res_head[i-m_r_first], prtmsg, NULL, false); } } if (lc->error_counter > 0) { result = false; } lc = lex_close_file(lc); } Dmsg0(900, "Leave parse_config_file()\n"); return result; bail_out: if (lc) { lc = lex_close_file(lc); } return false; }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; /* #ifdef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #endif */ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; /* #ifdef _ENABLE_DX10_ case '3': device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; break; #endif */ } printf("\nSelected %s device for rendering.\n", device); GutResizeFunc( resize_func ); // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } // GutInputInit(); GutRegisterKeyDown(GUTKEY_1, KeyDown_1); g_Control.SetCamera(Vector4(0.0f, 0.0f, 5.0f), Vector4(0.0f, 1.0f, 5.0f), Vector4(0.0f, 0.0f, 1.0f) ); g_Control.SetMoveSpeed(20.0f); // 設定方向光 g_Lights[0].m_Direction.Set(0.0f, 1.0f, 1.0f, 0.0f); g_Lights[0].m_Direction.Normalize(); g_Lights[0].m_Diffuse.Set(0.6f, 0.6f, 0.6f, 1.0f); g_Lights[0].m_Specular.Set(1.0f, 1.0f, 1.0f, 1.0f); // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { GetUserInput(); // 畫出矩形 render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; #ifdef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #endif int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; case '3': #ifdef _ENABLE_DX10_ device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; #endif break; } GutResizeFunc( resize_func ); // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } g_view_matrix.Identity(); g_world_matrix.Identity(); g_scale_matrix.Identity(); GutInputInit(); //g_Control.SetCamera(Vector4(0.0f, 10.0f, 0.0f), Vector4(0.0f, 0.0f, 0.0f), Vector4(0.0f, 0.0f, 1.0f) ); g_Control.SetCamera(Vector4(0.0f, 0.0f, 10.0f), Vector4(0.0f, 0.0f, 0.0f), Vector4(0.0f, 1.0f, 0.0f) ); CGutModel::SetTexturePath("../../textures/"); g_Models[0].Load_ASCII("../../models/sun_darker.gma"); g_Models[1].Load_ASCII("../../models/earth.gma"); g_Models[2].Load_ASCII("../../models/moon.gma"); g_Models[3].Load_ASCII("../../models/mars.gma"); // 載入shader & textures if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { GetUserInput(); frame_move(); render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; } GutResizeFunc( resize_func ); // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } // 設定方向光 g_Light.m_Position.Set(-3.0f, 0.0f, 5.0f); g_Light.m_Direction.Set(0.0f, 1.0f, 1.0f, 0.0f); g_Light.m_Direction.Normalize(); g_Light.m_Diffuse.Set(0.6f, 0.6f, 0.6f, 1.0f); //g_Light.m_Specular.Set(1.0f, 1.0f, 1.0f, 1.0f); g_Light.m_Specular.Set(0.0f, 0.0f, 0.0f, 1.0f); g_light_pos_x = g_Light.m_Position[0]; GutInputInit(); g_Control.SetCamera(Vector4(0.0f, 0.0f, 10.0f), Vector4(0.0f, 0.0f, 0.0f), Vector4(0.0f, 1.0f, 0.0f) ); g_Model.Load_ASCII("..\\..\\models\\teapot.gma"); // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { GetUserInput(); FrameMove(); render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; #ifdef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #endif int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; #ifdef _ENABLE_DX10_ case '3': device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; break; #endif } printf("\nSelected %s device for rendering.\n", device); GutInputInit(); GutRegisterKeyDown(GUTKEY_ESCAPE, KeyDown_ESCAPE); GutResizeFunc( resize_func ); // 切換成全螢幕模式 if ( !GutFullScreen(800, 600) ) { GutFullScreen(600, 800); } // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } GutInputInit(); // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { render(); GutReadKeyboard(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; #ifdef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #endif int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; #ifdef _ENABLE_DX10_ case '3': device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; break; #endif } printf("\nSelected %s device for rendering.\n", device); GutResizeFunc( resize_func ); // 在(100,100)的位置開啟一個大小為(512x512)的視窗 GutCreateWindow(100, 100, 512, 512, device); // 做OpenGL或DirectX初始化 if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } g_view_matrix.Identity(); g_world_matrix.Identity(); GutInputInit(); // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { GetUserInput(); // 畫出矩形 render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }
void main(void) { // 內定使用DirectX 9來繪圖 char *device = "dx9"; void (*render)(void) = RenderFrameDX9; bool (*init_resource)(void) = InitResourceDX9; bool (*release_resource)(void) = ReleaseResourceDX9; void (*resize_func)(int width, int height) = ResizeWindowDX9; #ifdef _ENABLE_DX10_ printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n(3) for Direct3D10\n"); #else printf("Press\n(1) for Direct3D9\n(2) for OpenGL\n"); #endif int c = getche(); switch(c) { default: case '1': render = RenderFrameDX9; init_resource = InitResourceDX9; release_resource = ReleaseResourceDX9; resize_func = ResizeWindowDX9; break; case '2': device = "opengl"; init_resource = InitResourceOpenGL; release_resource = ReleaseResourceOpenGL; render = RenderFrameOpenGL; resize_func = ResizeWindowOpenGL; break; case '3': #ifdef _ENABLE_DX10_ device = "dx10"; init_resource = InitResourceDX10; release_resource = ReleaseResourceDX10; render = RenderFrameDX10; resize_func = ResizeWindowDX10; #endif break; } GutResizeFunc( resize_func ); GutCreateWindow(100, 100, 512, 512, device); if ( !GutInitGraphicsDevice(device) ) { printf("Failed to initialize %s device\n", device); exit(0); } // ambient g_Lights[0].m_vPosition.Set(0.0f, 0.0f, 0.0f, 1.0f); g_Lights[0].m_vDiffuse.Set(0.0f); g_Lights[0].m_vAmbient.Set(0.3f); GutInputInit(); GutRegisterKeyDown(GUTKEY_1, KeyDown_1); GutRegisterKeyDown(GUTKEY_2, KeyDown_2); GutRegisterKeyDown(GUTKEY_3, KeyDown_3); GutRegisterKeyDown(GUTKEY_SPACE, KeyDown_Space); g_Control.SetCamera( Vector4(0.0f, 3.0f, 0.0f), Vector4(0.0f, 0.0f, 0.0f), Vector4(0.0f, 0.0f, 1.0f) ); g_Model.Load_ASCII("..\\..\\models\\earth_normalmapped.gma"); g_Sphere.Load_ASCII("..\\..\\models\\sphere_simple.gma"); // 載入shader if ( !init_resource() ) { release_resource(); printf("Failed to load resources\n"); exit(0); } // 主回圈 while( GutProcessMessage() ) { GetUserInput(); frame_move(); render(); } // 卸載shader release_resource(); // 關閉OpenGL/DirectX繪圖裝置 GutReleaseGraphicsDevice(); }