int main(int argc,char ** argv) { char string_to_search[100] = ""; char Argument[100] = ""; char File_Name[50][50]; int Arg_Number[10] = { -1 }; // Table for storing the number-A-B-C etc. ... Arg_Number [0] = Number-A ... int Number_of_line = 0; int i = 0, j = 0, size_name_file = 0, nb_line = 0, nb_file = 0; FILE* file = NULL; FILE * file_recursive; file_recursive = fopen("File_list.txt","w+"); if(arg_help(argc,argv) != 0) return -1; // Management -- help if(arg_long(argc,argv) != 0) return -1; // Management of -- and convertion for(j=1; j<argc; j++) // Loop to retrieve the data parameters sent (argument + string to search + file(s)) { if(argv[j][0]== '-') { strcat(Argument,argv[j]); if(argv[j][1] == 'A') { j++; Arg_Number[0] = atoi(argv[j]); j++; } else if(argv[j][1] == 'B') { j++; Arg_Number[1] = atoi(argv[j]); j++; } else if(argv[j][1] == 'C') { j++; Arg_Number[2] = atoi(argv[j]); j++; } else if(argv[j][1] == 'e') { j++; strcpy(string_to_search,argv[j]); } else if(argv[j][1] == 'm') { j++; Arg_Number[3] = atoi(argv[j]); j++; } } else // Recover the rest ( String to search + File list ) { strcpy(File_Name[size_name_file],argv[j]); if(size_name_file != 0) fprintf(file_recursive,"%s\n",argv[j]); size_name_file++; } } if(strcmp(string_to_search,"") == 0) { strcpy(string_to_search,File_Name[0]); //String to search i = 1; // Change the value for i to browse for the name of the files } else { i = 0; } delete_duplicates(Argument); // To delete duplicates for(j=0; j<=strlen(Argument); j++) // To delete the "-" at the beginning { Argument[j] = Argument[j+1]; } nb_file = size_name_file; // Knowing the number of file if(i == 1) // If accomodation File_Name[0] = string_to_search { nb_file = size_name_file - 1; } if(nb_file == 0) { char ** array1 = NULL; FunctionGrepWithArguments(array1,string_to_search,0,Argument,"",nb_file,Number_of_line,Arg_Number); } if(isWrong(Argument, argc) == 1) // Management of error return 0; if(strstr(Argument,"R")) // Recording in a text file { for(i; i<size_name_file; i++) { fclose(file_recursive); file_recursive = fopen("File_list.txt","w+"); list_recursively(File_Name[i],file_recursive); } nb_file = 2; } rewind(file_recursive); char chaine[TAILLE_MAX]; while(fgets(chaine, TAILLE_MAX, file_recursive) != NULL) { char chaine1[TAILLE_MAX]; int h; for(h = 0 ; h < strlen(chaine)-1; h++) { chaine1[h] = chaine[h]; } chaine1[h] = '\0'; file = fopen(chaine1, "r"); // Open file if (file != NULL) { nb_line = NbLine(file); char tableau[nb_line][TAILLE_MAX]; // Initializing a 2 dimension table containing the file RemplirTableau(file,tableau); // Fills the table FunctionGrepWithArguments(tableau,string_to_search,nb_line,Argument,chaine1,nb_file,Number_of_line,Arg_Number); } else { if(!strstr(Argument,"s")) printf("grep: %s: No such file or directory\n",chaine1); } } return 0; }
/* main */ int main( int argc, char *argv[] ) { pthread_t command_thread; pthread_t control_thread; pthread_t update_thread; int command_thread_en; int control_thread_en; int update_thread_en; Ver_t version; Param_t driver_param; int i, ret; ParametersPtr param; char paramfile[512]; int quit; hook_pre_global(); ret = arg_analyze( argc, argv ); if( option( OPTION_DAEMON ) ) { #if HAVE_FORK pid_t pid; pid = fork( ); if( pid < 0 ) { return -1; } else if( pid != 0 ) { return 0; } setsid( ); if( chdir( "/" ) < 0 ) { yprintf( OUTPUT_LV_ERROR, "Failed to chdir.\n" ); return EXIT_FAILURE; } close( STDIN_FILENO ); close( STDOUT_FILENO ); close( STDERR_FILENO ); #else yprintf( OUTPUT_LV_ERROR, "Daemon mode is not supported in your system.\n" ); return EXIT_FAILURE; #endif } if( option( OPTION_SHOW_HELP ) ) { arg_help( argc, argv ); return EXIT_SUCCESS; } if( option( OPTION_SHOW_LONGHELP ) ) { arg_longhelp( argc, argv ); return EXIT_SUCCESS; } if( option( OPTION_SHOW_PARAMHELP ) ) { param_help( ); return EXIT_SUCCESS; } if( option( OPTION_VERSION ) ) { fprintf( stderr, "YamabicoProject-Spur\n" ); fprintf( stderr, " Ver. %s\n", PACKAGE_VERSION ); return EXIT_SUCCESS; } if( !ret ) /* オプション解析に失敗したとき */ return EXIT_FAILURE; yprintf( OUTPUT_LV_PROCESS, "++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); yprintf( OUTPUT_LV_PROCESS, "YamabicoProject-Spur\n" ); yprintf( OUTPUT_LV_PROCESS, " Ver. %s\n", PACKAGE_VERSION ); yprintf( OUTPUT_LV_PROCESS, "++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); /* Ctrl-C割り込みハンドラーの登録 */ escape_road( ); g_emergency = 0; /* パラメータを読み込み、セットする */ param = get_param_ptr( ); #ifdef HAVE_SSM /* SSM初期化 */ if( !option( OPTION_WITHOUT_SSM ) ) init_ypspurSSM( param->ssm_id ); #endif /* 座標系の初期化、コマンド処理系の初期化 */ init_coordinate_systems( ); init_odometry( ); init_spur_command( ); fflush( stderr ); command_thread_en = 0; command_thread_en = 0; do { FILE *temp_paramfile = NULL; quit = 0; yprintf( OUTPUT_LV_PROCESS, "Device Information\n" ); yprintf( OUTPUT_LV_PROCESS, " Port : %s \n", param->device_name ); if( !( option( OPTION_WITHOUT_DEVICE ) ) ) { if( !serial_connect( param->device_name ) ) { // quit=0;でbreakしたら異常終了と判断される break; } if( !( option( OPTION_DO_NOT_USE_YP ) ) ) { int current, age; sscanf( YP_PROTOCOL_NAME, "YPP:%d:%d", ¤t, &age ); yprintf( OUTPUT_LV_PROCESS, " Checking device information...\r" ); for ( i = 0; i < 3; i++ ) { int device_current, device_age; // プロトコルがYPであることを確認 if( get_version( &version ) == -1 ) { continue; } if( strstr( version.protocol, "YPP:" ) != version.protocol ) { continue; } sscanf( version.protocol, "YPP:%d:%d", &device_current, &device_age ); if( device_current - device_age > current || device_current < current ) { continue; } break; } yprintf( OUTPUT_LV_PARAM, " Vender : %s\033[K\n", version.vender ); yprintf( OUTPUT_LV_PARAM, " Product : %s\n", version.product ); yprintf( OUTPUT_LV_PARAM, " Firmware: %s\n", version.firmware ); yprintf( OUTPUT_LV_PARAM, " Protcol : %s\n", version.protocol ); yprintf( OUTPUT_LV_PARAM, " Serialno: %s\n", version.serialno ); yprintf( OUTPUT_LV_PARAM, "++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); if( i == 3 ) { yprintf( OUTPUT_LV_ERROR, "Error: Device doesn't have available YP protocol version.\n" ); if( option( OPTION_RECONNECT ) && g_emergency == 0 ) { yp_usleep( 500000 ); continue; } break; // quit=0でbreakしたら異常終了と判断 } } fflush( stderr ); if( get_parameter( &driver_param ) == -1 ) { continue; } yprintf( OUTPUT_LV_PARAM, "Driver depending parameters\n" ); yprintf( OUTPUT_LV_PARAM, " Name : %s\n", driver_param.robot_name ); yprintf( OUTPUT_LV_PARAM, " PWM resolution: %s\n", driver_param.pwm_resolution ); yprintf( OUTPUT_LV_PARAM, " Motor number : %s\n", driver_param.motor_num ); yprintf( OUTPUT_LV_PARAM, "++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); if( strlen( driver_param.pwm_resolution ) <= 0 || strlen( driver_param.motor_num ) <= 0 ) { yprintf( OUTPUT_LV_ERROR, "Error: Failed to load driver parameters.\n" ); if( option( OPTION_RECONNECT ) && g_emergency == 0 ) { yp_usleep( 500000 ); continue; } break; } } if( !( option( OPTION_PARAM_FILE ) ) ) { // パラメータファイルが指定されておらず、ドライバにパラメータが内蔵されている場合 if( strcmp( driver_param.robot_name, "embedded" ) == 0 ) { char param[2048]; yprintf( OUTPUT_LV_MODULE, "Reading device embedded parameter.\n" ); temp_paramfile = tmpfile( ); if( !temp_paramfile ) { yprintf( OUTPUT_LV_ERROR, "Error: Failed to create temporary file.\n" ); return 0; } if( !get_embedded_param( param ) ) { yprintf( OUTPUT_LV_ERROR, "Error: Failed to read embedded parameters.\n" ); if( option( OPTION_RECONNECT ) && g_emergency == 0 ) { yp_usleep( 500000 ); continue; } break; } fprintf( temp_paramfile, "%s", param ); fseek( temp_paramfile, 0L, SEEK_SET ); } // パラメータファイルが指定されておらず、ドライバにロボット名が登録されている場合 else if( strlen( driver_param.robot_name ) > 0 && strcmp( driver_param.robot_name, "unknown" ) != 0 ) { strcpy( param->parameter_filename, driver_param.robot_name ); strcat( param->parameter_filename, ".param" ); } } if( temp_paramfile ) { yprintf( OUTPUT_LV_PARAM, "Embedded parameter file\n" ); if( !set_paramptr( temp_paramfile ) ) { yprintf( OUTPUT_LV_ERROR, "Error: Cannot use embedded parameter.\n" ); return 0; } } else { yprintf( OUTPUT_LV_PARAM, "Parameter file: %s\n", param->parameter_filename ); if( !set_param( param->parameter_filename, paramfile ) ) { yprintf( OUTPUT_LV_ERROR, "Error: Cannot find parameter file.\n" ); return 0; } } { int i; for ( i = 0; i < YP_PARAM_MOTOR_NUM; i++ ) { *pp( YP_PARAM_PWM_MAX, i ) = atoi( driver_param.pwm_resolution ); } } yprintf( OUTPUT_LV_PARAM, "++++++++++++++++++++++++++++++++++++++++++++++++++\n\n" ); if( !( option( OPTION_WITHOUT_DEVICE ) ) ) { // ボーレートの設定 if( param->speed ) { yprintf( OUTPUT_LV_MODULE, "Setting baudrate to %d baud.\n", param->speed ); } else { // 指定されてない場合デフォルトの値 param->speed = DEFAULT_BAUDRATE; } ret = set_baudrate( param->speed ); if( ret == 0 ) { // 設定失敗 yprintf( OUTPUT_LV_WARNING, "Error: Failed to change baudrate.\n" ); serial_close( ); quit = 0; break; // quit=0でbreakしたら異常終了と判断 } if (ret == 4) { // ボーレートの設定未対応 yprintf( OUTPUT_LV_WARNING, "Warn: Baudrate setting is not supported on this device.\n" ); } else { // 設定成功 // 正常ならば何もしない } if( param->admask ) { yprintf( OUTPUT_LV_MODULE, "Setting admask to %x.\n", param->admask ); set_admask( param->admask ); } if( option( OPTION_ENABLE_GET_DIGITAL_IO ) ) { yprintf( OUTPUT_LV_MODULE, "Enabling digital io input.\n" ); set_diomask( 1 ); } if( !( option( OPTION_PARAM_CONTROL ) ) ) { apply_robot_params( ); } /* サーボをかける */ if( state( YP_STATE_MOTOR ) && state( YP_STATE_VELOCITY ) ) { motor_servo( ); } } yprintf( OUTPUT_LV_MODULE, "YP-Spur coordinator started.\n" ); /* スレッド初期化 */ init_command_thread( &command_thread ); pthread_detach( command_thread ); command_thread_en = 1; if( !( option( OPTION_WITHOUT_DEVICE ) ) ) { init_control_thread( &control_thread ); pthread_detach( control_thread ); control_thread_en = 1; } if( option( OPTION_UPDATE_PARAM ) ) { init_param_update_thread( &update_thread, paramfile ); pthread_detach( update_thread ); update_thread_en = 1; } // オドメトリ受信ループ #if HAVE_SIGLONGJMP if( sigsetjmp( ctrlc_capture, 1 ) != 0 ) { quit = 1; } else #elif HAVE_LONGJMP if( setjmp( ctrlc_capture ) != 0 ) { quit = 1; } else #endif { if( !( option( OPTION_WITHOUT_DEVICE ) ) ) { odometry_receive_loop( ); } else { while( 1 ) yp_usleep( 1000000 ); } yprintf( OUTPUT_LV_MODULE, "Connection to %s was closed.\n", param->device_name ); } /* 終了処理 */ if( !( option( OPTION_WITHOUT_DEVICE ) ) ) { serial_close( ); } if( update_thread_en ) { pthread_cancel( update_thread ); pthread_join( update_thread, NULL ); update_thread_en = 0; } if( control_thread_en ) { pthread_cancel( control_thread ); pthread_join( control_thread, NULL ); control_thread_en = 0; } if( command_thread_en ) { pthread_cancel( command_thread ); pthread_join( command_thread, NULL ); command_thread_en = 0; } if( option( OPTION_RECONNECT ) && quit == 0 ) { init_spur_command( ); yp_usleep( 500000 ); if( !( option( OPTION_WITHOUT_DEVICE ) ) ) { while( !serial_tryconnect( param->device_name ) ) { yp_usleep( 200000 ); } } yprintf( OUTPUT_LV_MODULE, "++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); yp_usleep( 500000 ); continue; } break; } while( 1 ); #ifdef HAVE_SSM /* SSM終了処理 */ if( !option( OPTION_WITHOUT_SSM ) ) end_ypspurSSM( ); #endif yp_usleep( 200000 ); fflush( stderr ); return ( quit ? EXIT_SUCCESS : EXIT_FAILURE ); }
int main(int argc, char *argv[]) { clock_t rdp_finish_time, rdp_start_time = clock(); int rdp_symbol_statistics = 0, /* show symbol_ table statistics flag */ rdp_line_echo_all = 0, /* make a listing on all passes flag */ rdp_filter = 0, /* filter flag */ rdp_line_echo = 0, /* make listing flag */ rdp_lexicalise = 0; /* print lexicalised output flag */ unsigned long rdp_textsize = 35000l; /* size of scanner text array */ unsigned long rdp_tabwidth = 8l; /* tab expansion width */ char* rdp_vcg_filename = NULL; /* filename for -V option */ rdp_tree_node_data* rdp_tree = (rdp_tree_node_data*) graph_insert_graph("RDP derivation tree"); /* hook for derivation tree */ rdp_tree_node_data* rdp_tree_root; arg_message("Minitree compiler V1.50 (c) Adrian Johnstone 1997\n" RDP_STAMP "\n\n""Usage: minitree [options] source[.m]"); arg_message(""); arg_boolean('f', "Filter mode (read from stdin and write to stdout)", &rdp_filter); arg_boolean('l', "Make a listing", &rdp_line_echo); arg_boolean('L', "Print lexicalised source file", &rdp_lexicalise); arg_string ('o', "Write output to filename", &rdp_outputfilename); arg_boolean('s', "Echo each scanner symbol as it is read", &rdp_symbol_echo); arg_boolean('S', "Print summary symbol table statistics", &rdp_symbol_statistics); arg_numeric('t', "Tab expansion width (default 8)", &rdp_tabwidth); arg_numeric('T', "Text buffer size in bytes for scanner (default 20000)", &rdp_textsize); arg_boolean('v', "Set verbose mode", &rdp_verbose); arg_string ('V', "Write derivation tree to filename in VCG format", &rdp_vcg_filename); rdp_sourcefilenames = arg_process(argc, argv); /* Fix up filetypes */ for (rdp_sourcefilenumber = 0; rdp_sourcefilenames[rdp_sourcefilenumber] != NULL; rdp_sourcefilenumber++) rdp_sourcefilenames[rdp_sourcefilenumber] = text_default_filetype(rdp_sourcefilenames[rdp_sourcefilenumber], "m"); if (rdp_filter) { rdp_sourcefilenames[0] = "-"; rdp_outputfilename = "-"; rdp_sourcefilenames[1] = NULL; /* make sure no further filenames are taken from the array */ } if ((rdp_sourcefilename = rdp_sourcefilenames[0]) == NULL) arg_help("no source files specified"); if (rdp_sourcefilenames[1] != NULL) text_message(TEXT_FATAL, "multiple source files not allowed\n"); text_init(rdp_textsize, 25, 100, (int) rdp_tabwidth); scan_init(0, 0, 0, rdp_symbol_echo, rdp_tokens); if (rdp_lexicalise) scan_lexicalise(); mini = symbol_new_table("mini", 101, 31, symbol_compare_string, symbol_hash_string, symbol_print_string); rdp_set_initialise(); rdp_load_keywords(); if (rdp_verbose) text_printf("\nMinitree compiler V1.50 (c) Adrian Johnstone 1997\n" RDP_STAMP "\n\n"); for (rdp_pass = 1; rdp_pass <= RDP_PASSES; rdp_pass++) { rdp_tree_update = rdp_pass == RDP_PASSES; text_echo(rdp_line_echo_all || (rdp_line_echo && rdp_pass == RDP_PASSES)); for (rdp_sourcefilenumber = 0; (rdp_sourcefilename = rdp_sourcefilenames[rdp_sourcefilenumber]) != NULL; rdp_sourcefilenumber++) { if (text_open(rdp_sourcefilename) == NULL) arg_help("unable to open source file"); text_get_char(); scan_(); program(rdp_tree_root = rdp_add_node("program", rdp_tree)); /* call parser at top level */ if (text_total_errors() != 0) text_message(TEXT_FATAL, "error%s detected in source file ''\n", text_total_errors() == 1 ? "" : "s", rdp_sourcefilename); /* crash quietly */ graph_epsilon_prune_rdp_tree(rdp_tree_root, sizeof(rdp_tree_edge_data)); } } rdp_sourcefilename = rdp_sourcefilenames[0]; /* Reset filename to first file in the list */ graph_set_root(rdp_tree, rdp_tree_root); if (rdp_vcg_filename != NULL) { FILE *rdp_vcg_file; if (*rdp_vcg_filename == '\0') /* No filename supplied */ rdp_vcg_filename = "rdparser"; rdp_vcg_file = fopen((rdp_vcg_filename = text_default_filetype(rdp_vcg_filename, "vcg")), "w"); if (rdp_vcg_file == NULL) text_message(TEXT_FATAL, "unable to open VCG file '%s' for write\n", rdp_vcg_filename); if (rdp_verbose) text_message(TEXT_INFO, "Dumping derivation tree to VCG file '%s'\n", rdp_vcg_filename); text_redirect(rdp_vcg_file); graph_vcg(rdp_tree, NULL, scan_vcg_print_node, scan_vcg_print_edge); text_redirect(stdout); fclose(rdp_vcg_file); } code_generate(rdp_sourcefilename, rdp_outputfilename, rdp_tree); if (rdp_symbol_statistics) { symbol_print_all_table_statistics(11); symbol_print_all_table(); } text_print_total_errors(); if (rdp_verbose) { rdp_finish_time = clock(); text_message(TEXT_INFO, "%.3f CPU seconds used\n", ((double) (rdp_finish_time-rdp_start_time)) / CLOCKS_PER_SEC); } return rdp_error_return; }
int main(int argc, char *argv[]) { clock_t rdp_finish_time, rdp_start_time = clock(); int rdp_symbol_statistics = 0, /* show symbol_ table statistics flag */ rdp_line_echo_all = 0, /* make a listing on all passes flag */ rdp_filter = 0, /* filter flag */ rdp_line_echo = 0, /* make listing flag */ rdp_lexicalise = 0; /* print lexicalised output flag */ unsigned long rdp_textsize = 35000l; /* size of scanner text array */ unsigned long rdp_tabwidth = 8l; /* tab expansion width */ char* rdp_vcg_filename = NULL; /* filename for -V option */ arg_message("rdparser\n" RDP_STAMP "\n\n""Usage: regex [options] source"); arg_message(""); arg_boolean('f', "Filter mode (read from stdin and write to stdout)", &rdp_filter); arg_boolean('l', "Make a listing", &rdp_line_echo); arg_boolean('L', "Print lexicalised source file", &rdp_lexicalise); arg_string ('o', "Write output to filename", &rdp_outputfilename); arg_boolean('s', "Echo each scanner symbol as it is read", &rdp_symbol_echo); arg_boolean('S', "Print summary symbol table statistics", &rdp_symbol_statistics); arg_numeric('t', "Tab expansion width (default 8)", &rdp_tabwidth); arg_numeric('T', "Text buffer size in bytes for scanner (default 20000)", &rdp_textsize); arg_boolean('v', "Set verbose mode", &rdp_verbose); arg_string ('V', "Write derivation tree to filename in VCG format", &rdp_vcg_filename); rdp_sourcefilenames = arg_process(argc, argv); /* Fix up filetypes */ for (rdp_sourcefilenumber = 0; rdp_sourcefilenames[rdp_sourcefilenumber] != NULL; rdp_sourcefilenumber++) rdp_sourcefilenames[rdp_sourcefilenumber] = text_default_filetype(rdp_sourcefilenames[rdp_sourcefilenumber], ""); if (rdp_filter) { rdp_sourcefilenames[0] = "-"; rdp_outputfilename = "-"; rdp_sourcefilenames[1] = NULL; /* make sure no further filenames are taken from the array */ } if ((rdp_sourcefilename = rdp_sourcefilenames[0]) == NULL) arg_help("no source files specified"); if (rdp_sourcefilenames[1] != NULL) text_message(TEXT_FATAL, "multiple source files not allowed\n"); text_init(rdp_textsize, 25, 100, (int) rdp_tabwidth); scan_init(0, 0, 0, rdp_symbol_echo, rdp_tokens); if (rdp_lexicalise) scan_lexicalise(); rdp_set_initialise(); rdp_load_keywords(); if (rdp_verbose) text_printf("\nrdparser\n" RDP_STAMP "\n\n"); for (rdp_pass = 1; rdp_pass <= RDP_PASSES; rdp_pass++) { text_echo(rdp_line_echo_all || (rdp_line_echo && rdp_pass == RDP_PASSES)); for (rdp_sourcefilenumber = 0; (rdp_sourcefilename = rdp_sourcefilenames[rdp_sourcefilenumber]) != NULL; rdp_sourcefilenumber++) { if (text_open(rdp_sourcefilename) == NULL) arg_help("unable to open source file"); text_get_char(); scan_(); reg(); /* call parser at top level */ if (text_total_errors() != 0) text_message(TEXT_FATAL, "error%s detected in source file ''\n", text_total_errors() == 1 ? "" : "s", rdp_sourcefilename); /* crash quietly */ } } rdp_sourcefilename = rdp_sourcefilenames[0]; /* Reset filename to first file in the list */ if (rdp_symbol_statistics) { symbol_print_all_table_statistics(11); symbol_print_all_table(); } text_print_total_errors(); if (rdp_verbose) { rdp_finish_time = clock(); text_message(TEXT_INFO, "%.3f CPU seconds used\n", ((double) (rdp_finish_time-rdp_start_time)) / CLOCKS_PER_SEC); } return rdp_error_return; }