void *util_safe_malloc(int size) { void *ptr = calloc(1, size); if (!ptr) { printf("Error allocating %d bytes\n", size); util_quit("Out of memory"); } return ptr; }
int main( int argc, char **argv ) /*******************************/ { int i, ch; FILE *fh; int more_than_one; while( (ch = getopt( argc, argv, ":clmw" )) != -1 ) { switch( ch ) { case 'c': char_flag = 1; break; case 'l': line_flag = 1; break; case 'm': char_flag = 1; mult_flag = 1; break; case 'w': word_flag = 1; break; case '?': util_quit( usage_text, NULL ); } } /* Skip option arguments and argv[0] */ argc = argc - optind; argv += optind; if( !word_flag && !line_flag && !char_flag ) { word_flag = line_flag = char_flag = 1; } if( argc == 0 ) { do_wc( stdin, NULL ); } else { i = 0; more_than_one = 0; for( ;; ) { fh = fopen( argv[i], "r" ); if( fh == NULL ) { fprintf( stderr, "wc: error opening '%s' for read: %s\n", argv[i], strerror( errno ) ); return( EXIT_FAILURE ); } do_wc( fh, argv[i] ); fclose( fh ); ++i; if( i == argc ) break; more_than_one = 1; } if( more_than_one ) { print_line( total_lines, total_words, total_chars, "total" ); } } return( EXIT_SUCCESS ); }
int main( int argc, char **argv ) /*******************************/ { int i, ch; char *env_value; env_value = getenv( "PATH" ); while( (ch = getopt( argc, argv, ":ae:" )) != -1 ) { switch( ch ) { case 'a': find_all = 1; break; case 'e': if( *optarg == '=' ) { ++optarg; }; env_value = getenv( optarg ); break; case ':': util_quit( usage_text, "which: invalid argument\n" ); case '?': util_quit( usage_text, NULL ); } } /* skip option arguments */ argc = argc - optind + 1; argv += optind - 1; if( argc < 2 ) { util_quit( usage_text, "which: must specify at least 1 filename\n" ); } found_file = 0; for( i = 1; i < argc; ++i ) { work( env_value, argv[i] ); } return( found_file == 0 ); }
int main( int argc, char **argv ) /*******************************/ { int ch; int unbuff_flag = 0; int fh; setvbuf( stdin, NULL, _IONBF, 0 ); while( (ch = getopt( argc, argv, ":u" )) != -1 ) { switch( ch ) { case 'u': unbuff_flag = 1; /* currently unused */ break; case '?': util_quit( usage_text, NULL ); } } /* Skip option arguments and argv[0] */ argc = argc - optind; argv += optind; setmode( STDOUT_FILENO, O_BINARY ); if( argc == 0 ) { setmode( STDIN_FILENO, O_BINARY ); do_cat( STDIN_FILENO ); } else { while( *argv != NULL ) { fh = open( *argv, O_RDONLY | O_BINARY ); if( fh == -1 ) { fprintf( stderr, "cat: error opening '%s' for read: %s\n", *argv, strerror( errno ) ); return( EXIT_FAILURE ); } else { do_cat( fh ); close( fh ); } argv++; } } return( EXIT_SUCCESS ); }