void ask_user (piece_info_t *obj) { char c; for (;;) { display_loc_u (obj->loc); /* display piece to move */ describe_obj (obj); /* describe object to be moved */ display_score (); /* show current score */ display_loc_u (obj->loc); /* reposition cursor */ c = get_chx (); /* get command from user (no echo) */ switch (c) { case 'Q': user_dir (obj, NORTHWEST); return; case 'W': user_dir (obj, NORTH); return; case 'E': user_dir (obj, NORTHEAST); return; case 'D': user_dir (obj, EAST); return; case 'C': user_dir (obj, SOUTHEAST); return; case 'X': user_dir (obj, SOUTH); return; case 'Z': user_dir (obj, SOUTHWEST); return; case 'A': user_dir (obj, WEST); return; case 'J': edit (obj->loc); reset_func (obj); return; case 'V': user_set_city_func (obj); reset_func (obj); return; case ' ': user_skip (obj); return; case 'F': user_fill (obj); return; case 'I': user_set_dir (obj); return; case 'R': user_random (obj); return; case 'S': user_sentry (obj); return; case 'L': user_land (obj); return; case 'G': user_explore (obj); return; case 'T': user_transport (obj); return; case 'U': user_repair (obj); return; case 'Y': user_armyattack (obj); return; case 'B': user_build (obj); break; case '?': help (help_user, user_lines);; break; case 'K': user_wake (obj); break; case 'O': user_cancel_auto (); break; case '\014': case 'P': redraw (); break; case '=': describe_obj (obj); break; default: alert(); } } }
/* 错误重试逻辑 */ static CURLcode _HttpClient_Perform(HttpClient *client) { //{{{ void (*reset_func) (void *context); CURLcode ret; while ((ret = _HttpClient_ResetAndPerform(client)) != CURLE_OK) { /* 调用失败重置函数 */ reset_func = client->fail_reset_callback; if (reset_func != NULL) { reset_func(client->fail_reset_context); } client->fail_times ++; if (client->fail_times >= client->retry_times) { break; } #ifdef DEBUG fprintf(stderr, "curl error %s\n", curl_easy_strerror(ret)); fprintf(stderr, "HttpClient retry after %d seconds\n", client->retry_interval); #endif sleep(client->retry_interval); } return ret; }
int test_main(struct test *start, struct test *stop, void (*reset_func)(void), int argc, char *argv[]) { const struct test *t; const char *pattern = NULL; int err, count = 0; err = sol_init(); ASSERT(!err); if (argc > 1) { pattern = argv[1]; printf("Running only tests that match '%s'\n", pattern); } for (t = start; t < stop; t++) { if (!pattern || strstr(t->name, pattern)) { printf("- %s\n", t->name); t->func(); if (reset_func) reset_func(); count++; } } if (count == 0) { printf("No tests found!\n"); return EXIT_FAILURE; } sol_shutdown(); printf("OK!\n"); return 0; }
void restart() { // Pointer to normal RESET vector SPCR &= ~(1 << SPE); reboot_func_t reset_func = (reboot_func_t)0x0000; reset_func(); }
void bsp_reset(void) { void (*reset_func)(void); reset_func = (void *)0xbfc00000; mips_set_sr( 0x00200000 ); /* all interrupts off, boot exception vectors */ /* Try to restart bootloader */ reset_func(); }
void XalanDOMString::reset(MemoryManager& theManager, const XalanDOMChar* theString) { reset_func(*this, theManager, theString); }