Esempio n. 1
0
/* 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);
}
Esempio n. 2
0
/*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;

}
Esempio n. 3
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;

}
Esempio n. 4
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();
	}
}
Esempio n. 5
0
/* 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);
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
/* 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);
}