/* parse the module arguments */ static int read_arguments( const char *args_orig ) { int verify; int errors = 0; char *ptr; char *args = strdup(args_orig); char *args_c = args; while ( (ptr = strsep( &args, " " )) != NULL ) { if(parse_args_line(mod_gm_opt, ptr, 0) != GM_OK) { errors++; break; } } verify = verify_options(mod_gm_opt); if(mod_gm_opt->debug_level >= GM_LOG_DEBUG) { dumpconfig(mod_gm_opt, GM_NEB_MODE); } /* read keyfile */ if(mod_gm_opt->keyfile != NULL && read_keyfile(mod_gm_opt) != GM_OK) { errors++; } free(args_c); if(errors > 0) { return(GM_ERROR); } return(verify); }
/*Main du programme mtail*/ int main(int argc, char* argv[]) { /*Numéro d'entrée de fichier dans la table des fichiers ouverts du système*/ int fileSrc; /*Numéro permettant de vérifier la bonne exécution de la fonction lseek*/ int returnLseek; /*Liste des options demandées par l'utilisateur*/ char* options; /*Chemin du fichier*/ char* pathname; options = NULL; /*On vérifie que le nombre d'arguments est compris entre 2 et 4, mais n'est pas égal à 3*/ assert(argc == 2 || argc == 4); /*Si l'on a 3 arguments après le nom du fichier, alors...*/ if (argc == 4) { /*On vérifie si le 1er argument commence par un tiret (option)*/ assert(argv[1][0] == '-'); options = &argv[1][1]; /*Le nombre de lignes correspond au 2ème argument, on le convertit en entier (en vérifiant que l'on peut le convertir)*/ verify_options(options, argv[2]); /*Le chemin du fichier est le 3ème argument donné par l'utilisateur*/ pathname = argv[3]; } else { /*On vérifie que l'utilisateur ne s'est pas trompé en donnant seulement une option*/ assert(argv[1][0] != '-'); /*Le nombre de lignes prises par défaut est de 10*/ nbLines = 10; /*Le chemin du fichier est le 1er argument donné par l'utilisateur*/ pathname = argv[1]; }; /*Ouverture du fichier en lecture seule*/ assert(fileSrc = open(pathname, O_RDONLY)); /*On déplace la position courante du fichier à la fin (car seule la fonction mefficace prendra en compte ce lseek)*/ returnLseek = lseek(fileSrc, 0, SEEK_END); /*Si le déplacement ne s'est pas fait correctement, on appellera la fonction 'tail utile'*/ if (returnLseek == -1) { printf("Vous utilisez la fonction 'UTILE'\n"); mutile(fileSrc, nbLines); } /*Sinon, on appellera la fonction 'tail efficace'*/ else { printf("Vous utilisez la fonction 'EFFICACE'\n"); mefficace(fileSrc, nbLines); } /*On ferme tout, le travail est fini. J'ai gagné. POINT.*/ close(fileSrc); return 0; }
/*Main du programme*/ int main(int argc, char* argv[]) { /*Les retours des fonctions 'du' et 'verify_options'*/ int retour_du, retour_options, test_to_verify; /*Chaine de caractères constituant le pathname*/ char* pathname; /*Chaine de caractères constituant la liste des options demandées par l'utilisateur*/ char* options = NULL; test_to_verify = 0; /*Si trop d'arguments -> erreur*/ if (argc>3) { perror("Utilisation: ./du_file [-abL] or [-h] [pathname]\n"); return 1; } if (argv[1][0] == '-') { test_to_verify = 1; options = &argv[1][1]; }; /*Si 2 ou 3 arguments pris en compte alors...*/ if (argc == 3) { /*On regarde s'il y a bien 3 arguments...*/ assert(argv[1][0] == '-'); pathname = argv[2]; } /*...ou alors 2*/ else { /*Si ce n'est pas une option (-h), alors le 1er argument est le chemin du fichier*/ if (test_to_verify != 1) pathname = argv[1]; }; /*Si des options ont été entrés, alors on va les vérifier une par une*/ if (test_to_verify == 1) { retour_options = verify_options(options); }; if (retour_options != 0) return 1; retour_du = du_file(pathname); printf("%d %s\n",retour_du,pathname); return 0; }
int main(int argc, char *argv[]){ struct sigaction action; action.sa_handler = sigint_handler; sigemptyset(&action.sa_mask); action.sa_flags = 0; if (sigaction(SIGINT,&action,NULL) < 0) { fprintf(stderr,"Unable to install SIGINT handler\n"); exit(1); } if (argc < 3) { printf("Wrong number of arguments! Usage: %s [options] pattern [file/dir]\n", argv[0]); } filename=argv[argc-2]; pattern= argv[argc-3]; int i; for (i=1;i<argc-2; i++){ if (strcmp(argv[i],"-i")==0){ letter_type=1; continue; } if (strcmp(argv[i],"-l")==0){ file_name=1; continue; } if (strcmp(argv[i],"-n")==0){ line_number=1; continue; } if (strcmp(argv[i],"-c")==0){ total_lines=1; continue; } if (strcmp(argv[i],"-w")==0){ word_compare=1; continue; } if (strcmp(argv[i],"-r")==0){ directory=1; continue; } verify_options(); } }
/* parse command line arguments */ int parse_arguments(int argc, char **argv) { int i; int verify; int errors = 0; mod_gm_opt = gm_malloc(sizeof(mod_gm_opt_t)); set_default_options(mod_gm_opt); /* special default: encryption disabled */ mod_gm_opt->encryption = GM_DISABLED; for(i=1;i<argc;i++) { char * arg = gm_strdup( argv[i] ); char * arg_c = arg; if ( !strcmp( arg, "version" ) || !strcmp( arg, "--version" ) || !strcmp( arg, "-V" ) ) { print_version(); } if ( !strcmp( arg, "help" ) || !strcmp( arg, "--help" ) || !strcmp( arg, "-h" ) ) { print_usage(); } if(parse_args_line(mod_gm_opt, arg, 0) != GM_OK) { errors++; free(arg_c); break; } free(arg_c); } /* verify options */ verify = verify_options(mod_gm_opt); /* read keyfile */ if(mod_gm_opt->keyfile != NULL && read_keyfile(mod_gm_opt) != GM_OK) { errors++; } if(errors > 0 || verify != GM_OK) { return(GM_ERROR); } return(GM_OK); }
int main (int argct, char *argv[]) { int rc = 0; char *save; char *tmpdir=getenv("TMPDIR"); if (tmpdir) { NTRY( save=(char*)malloc(strlen(tmpdir))); NTRY( strncpy(save,tmpdir,strlen(tmpdir))); } ITRY( setenv("TMPDIR",".",1)); ITRY (parse_options (&silo_options, argct, argv)); ITRY (verify_options (&silo_options)); if ( silo_options.testlevel > 0 ) { printf ("WARNING: silo does not modify your volume. Use -t2 to change IPL records\n"); } ITRY (do_silo (&silo_options)); if ( save ) ITRY( setenv("TMPDIR",save,1)); return rc; }
/* parse command line arguments */ int parse_arguments(int argc, char **argv) { int i; int errors = 0; int verify; mod_gm_opt_t * mod_gm_new_opt; mod_gm_new_opt = gm_malloc(sizeof(mod_gm_opt_t)); set_default_options(mod_gm_new_opt); for(i=1;i<argc;i++) { char * arg = gm_strdup( argv[i] ); char * arg_c = arg; if ( !strcmp( arg, "version" ) || !strcmp( arg, "--version" ) || !strcmp( arg, "-V" ) ) { print_version(); } if ( !strcmp( arg, "help" ) || !strcmp( arg, "--help" ) || !strcmp( arg, "-h" ) ) { print_usage(); } if(parse_args_line(mod_gm_new_opt, arg, 0) != GM_OK) { errors++; free(arg_c); break; } free(arg_c); } /* set identifier to hostname unless specified */ if(mod_gm_new_opt->identifier == NULL) { gethostname(hostname, GM_BUFFERSIZE-1); mod_gm_new_opt->identifier = gm_strdup(hostname); } /* close old logfile */ if(mod_gm_opt->logfile_fp != NULL) { fclose(mod_gm_opt->logfile_fp); mod_gm_opt->logfile_fp = NULL; } /* verify options */ verify = verify_options(mod_gm_new_opt); /* set new options */ if(errors == 0 && verify == GM_OK) { mod_gm_free_opt(mod_gm_opt); mod_gm_opt = mod_gm_new_opt; } /* open new logfile */ if ( mod_gm_new_opt->logmode == GM_LOG_MODE_AUTO && mod_gm_new_opt->logfile ) { mod_gm_opt->logmode = GM_LOG_MODE_FILE; } if(mod_gm_new_opt->logmode == GM_LOG_MODE_FILE && mod_gm_opt->logfile && mod_gm_opt->debug_level < GM_LOG_STDOUT) { mod_gm_opt->logfile_fp = fopen(mod_gm_opt->logfile, "a+"); if(mod_gm_opt->logfile_fp == NULL) { perror(mod_gm_opt->logfile); errors++; } } /* read keyfile */ if(mod_gm_opt->keyfile != NULL && read_keyfile(mod_gm_opt) != GM_OK) { errors++; } if(verify != GM_OK || errors > 0 || mod_gm_new_opt->debug_level >= GM_LOG_DEBUG) { int old_debug = mod_gm_opt->debug_level; mod_gm_opt->debug_level = GM_LOG_DEBUG; dumpconfig(mod_gm_new_opt, GM_WORKER_MODE); mod_gm_opt->debug_level = old_debug; } if(errors > 0 || verify != GM_OK) { mod_gm_free_opt(mod_gm_new_opt); return(GM_ERROR); } return(GM_OK); }