GPrivate void gcmon_souter_flush() { if (gpSouter != NULL) { so_write(gpSouter, file_get_fstat()); } }
static void test_tcp_client(void) { int sd; int re; struct sockaddr_in sa; printf("[tcp(client)] start\n"); sd = so_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); DEBUG_PRINT(("so_socket = %d(%d, %d)\n", sd, MERCD(sd), SERCD(sd))); if ( sd < 0 ) { goto error2; } bzero(&sa, sizeof sa); sa.sin_family = AF_INET; sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK); sa.sin_port = htons(12345); re = so_connect(sd, (struct sockaddr*)&sa, sizeof sa); printf("so_connect = %d(%d, %d)\n", re, MERCD(re), SERCD(re)); if ( re < 0 ) { goto error2; } re = so_write(sd, "1234", 4); DEBUG_PRINT(("so_write = %d(%d, %d)\n", re, MERCD(re), SERCD(re))); if ( re < 0 ) { goto error2; } re = so_send(sd, "a", 1, MSG_OOB); DEBUG_PRINT(("so_send = %d(%d, %d)\n", re, MERCD(re), SERCD(re))); if ( re < 0 ) { goto error2; } so_close(sd); tk_wai_sem(semid2, 1, TMO_FEVR); re = so_break(server_tskid); DEBUG_PRINT(("so_break = %d(%d, %d)\n", re, MERCD(re), SERCD(re))); if ( re < 0 ) { goto error2; } printf("[tcp(client)] OK\n"); return; error2: if ( sd > 0 ) { so_close(sd); } so_break(server_tskid); printf("[tcp(client)] FAILED\n"); }
static void route_cmd(int cmd, in_addr_t dest, in_addr_t gate, in_addr_t mask, int index, int direct) { int i = 0; int sock; int re; struct { struct rt_msghdr rtm; struct sockaddr_in addr[3]; } buf; bzero(&buf, sizeof buf); buf.rtm.rtm_version = RTM_VERSION; buf.rtm.rtm_type = cmd; buf.rtm.rtm_index = index; buf.rtm.rtm_flags = RTF_STATIC; if ( direct ) { buf.rtm.rtm_flags |= RTF_HOST; } else { buf.rtm.rtm_flags |= RTF_GATEWAY; } buf.rtm.rtm_addrs = RTA_DST | RTA_NETMASK; if ( gate != 0 ) { buf.rtm.rtm_addrs |= RTA_GATEWAY; } buf.rtm.rtm_inits = RTV_HOPCOUNT; buf.rtm.rtm_rmx.rmx_hopcount = 1; buf.rtm.rtm_seq = 1; buf.addr[i].sin_len = sizeof(struct sockaddr_in); buf.addr[i].sin_family = AF_INET; buf.addr[i].sin_addr.s_addr = dest; i++; if ( gate != 0 ) { buf.addr[i].sin_len = sizeof(struct sockaddr_in); buf.addr[i].sin_family = AF_INET; buf.addr[i].sin_addr.s_addr = gate; i++; } buf.addr[i].sin_len = sizeof(struct sockaddr_in); buf.addr[i].sin_family = AF_INET; buf.addr[i].sin_addr.s_addr = mask; i++; buf.rtm.rtm_msglen = sizeof(struct rt_msghdr) + sizeof(struct sockaddr) * i; sock = so_socket(AF_ROUTE, SOCK_RAW, 0); DEBUG_PRINT(("route_add: so_socket = %d(%d, %d)\n", sock, MERCD(sock), SERCD(sock))); so_shutdown(sock, SHUT_RD); re = so_write(sock, &buf, buf.rtm.rtm_msglen); DEBUG_PRINT(("route_add: so_write = %d(%d, %d)\n", re, MERCD(re), SERCD(re))); so_close(sock); }
int main( int argc, char **argv ) { void *dl_out = NULL; void *dl_in = NULL; char *dl_error = NULL; primitive *scene = NULL; primitive *tmp = NULL; int aa_level = 1; int shadows = 1; char *input = NULL; char *output = NULL; int (*so_write)(int,int,color***,char*); primitive* (*so_load)(char*); int width = 2048; int height = 2048; color ***img = NULL; int i,j; printf( "CRT - version 0.2.0\n" ); if( argc < 3 ) { usage(); exit( 1 ); } for( i = 1; i < argc - 2; i++ ) { if( strcmp( argv[i], "--help" ) == 0 ) { usage(); exit( 0 ); } else if( strcmp( argv[i], "--input" ) == 0 ) { if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) { fprintf( stderr, "*** crt: missing argument to \"--input\"\n" ); exit( 1 ); } else { input = argv[i+1]; } } else if( strcmp( argv[i], "--output" ) == 0 ) { if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) { fprintf( stderr,"*** crt: missing argument to \"--output\"\n" ); exit( 1 ); } else { output = argv[i+1]; } } else if( strcmp( argv[i], "--aa" ) == 0 ) { if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) { fprintf( stderr, "*** crt: missing argument to \"--aa\"\n" ); exit( 1 ); } else { aa_level = atoi( argv[i+1] ); } } else if( strcmp( argv[i], "--shadows" ) == 0 ) { if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) { fprintf(stderr, "*** crt: missing argument to \"--shadow\"\n"); exit( 1 ); } else { shadows = atoi( argv[i+1] ); } } else if( strcmp( argv[i], "--width" ) == 0 ) { if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) { fprintf( stderr, "*** crt: missing argument to \"--width\"\n" ); } else { width = atoi( argv[i+1] ); } } else if( strcmp( argv[i], "--height" ) == 0 ) { if( i == argc - 3 || (strncmp( argv[i+1], "--", 2 ) == 0) ) { fprintf( stderr,"*** crt: missing argument to \"--height\"\n" ); } else { height = atoi( argv[i+1] ); } } } /* setup the output plugin */ if( output == NULL ) { dl_out = dlopen( "./outputs/bmp.so", RTLD_LAZY ); } else { dl_out = dlopen( output, RTLD_LAZY ); } if( !dl_out ) { fprintf( stderr, "*** error: %s\n", dlerror() ); exit( 1 ); } dlerror(); /* clear error code */ so_write = (int (*)(int,int,color***,char*))dlsym( dl_out, "write_img" ); if( (dl_error = dlerror()) != NULL ) { fprintf( stderr, "*** error: %s\n", dl_error ); exit( 1 ); } /* setup the input plugin */ if( input == NULL ) { dl_in = dlopen( "./inputs/xml.so", RTLD_LAZY ); } else { dl_in = dlopen( input, RTLD_LAZY ); } if( !dl_in ) { fprintf( stderr, "*** error: %s\n", dlerror() ); exit( 1 ); } dlerror(); so_load = (primitive* (*)(char*))dlsym( dl_in, "load_scene" ); if( (dl_error = dlerror()) != NULL ) { fprintf( stderr, "*** error: %s\n", dl_error ); exit( 1 ); } /* setup the image's memory */ img = malloc( height * sizeof(color**) ); if( img == NULL ) { fprintf( stderr, "*** error: could not allocate image memory\n" ); exit( 1 ); } for( i = 0; i < height; i++ ) { img[i] = calloc( width, sizeof( color* ) ); if( img[i] == NULL ) { fprintf( stderr, "*** error: could not allocate image memory\n" ); exit( 1 ); } } scene = so_load( argv[argc-2] ); render( width, height, img, scene, aa_level, shadows ); so_write( width, height, img, argv[argc-1] ); for( i = 0; i < height; i++ ) { for( j = 0; j < width; j++ ) { /* free the color's memory */ free( img[i][j] ); } /* free the line's memory */ free( img[i] ); } /* free the image memory */ free( img ); /* free the scene object's memory */ while( scene != NULL ) { free( scene->data ); if( scene->grid != NULL ) { free( scene->grid ); } tmp = scene->next; free( scene ); scene = tmp; } dlclose( dl_out ); dlclose( dl_in ); return 0; }