9511_project01

project 1 for algorithms & programming I (9511) prof. Cardozo
Index Commits Files Refs README
arguments.c (1944B)
   1 #include "arguments.h"
   2 
   3 //    Valida que los argumentos esten correctos y guarda los nombres de los 
   4 //    archivos de entrada y salida en src y dest respectivamente;
   5 status_t validate_arguments(int argc, char * argv[], char * src, char * dest)
   6 {
   7     if(argc < EXPECTED_CMD_ARGUMENTS || argc > EXPECTED_CMD_ARGUMENTS)
   8         return ERROR_INVOCATING_PROGRAM;
   9     else if(argv == NULL)
  10         return ERROR_NULL_POINTER;
  11 
  12     if((strcmp(argv[1], INPUT_ARGUMENT)) && (strcmp(argv[3], OUTPUT_ARGUMENT)))
  13         if((strcmp(argv[1], OUTPUT_ARGUMENT)) && (strcmp(argv[3], INPUT_ARGUMENT)))
  14             return ERROR_INVOCATING_PROGRAM;
  15 
  16     status_t inputFile, outputFile;
  17     inputFile = outputFile = IO_FILE_NOT_FOUND;
  18 
  19     size_t i;
  20     for(i = 1; i < argc; i++) {
  21 //        Comprueba que el primer argumento sea INPUT_ARGUMENT ('-in');
  22         if(!strcmp(argv[i], INPUT_ARGUMENT)) {
  23 
  24 //            Si el argumento que sigue es OUTPUT_ARGUMENT entonces hay un error
  25 //            en la invocacion de el programa, y si el que le sigue a ese no es
  26 //            OUTPUT_ARGUMENT estamos ante un problema de orden de argumentos;
  27             if(!strcmp(argv[i + 1], OUTPUT_ARGUMENT))
  28                 return ERROR_INVOCATING_PROGRAM;
  29 
  30 //            Si el primer argumento esta bien y el siguiente es una cadena entonces
  31 //            guarda en src la cadena e imprime dicha cadena;
  32             strcpy(src, argv[++i]);
  33 
  34             printf(INPUT_ARGUMENT_FOUND_MSG);
  35             printf(INPUT_FILE_NAME_MSG"'%s'\n", src);
  36 
  37 //            Marca el archivo de entrada como encontrado;
  38             inputFile = OK;
  39 
  40 //        Procede de la misma forma pero para OUTPUT_ARGUMENT ('-out');
  41         } else if(!strcmp(argv[i], OUTPUT_ARGUMENT)) {
  42 
  43             if(!strcmp(argv[i + 1], INPUT_ARGUMENT))
  44                 return ERROR_INVOCATING_PROGRAM;
  45 
  46             strcpy(dest, argv[++i]);
  47 
  48             printf(OUTPUT_ARGUMENT_FOUND_MSG);
  49             printf(OUTPUT_FILE_NAME_MSG"'%s'\n", dest);
  50 
  51             outputFile = OK;
  52         }
  53     }
  54 
  55 //    Si uno o ambos de los argumentos no se encontro entonces imprime un codigo 
  56 //    de error;
  57     if((inputFile && outputFile) != OK)
  58         return ERROR_INVOCATING_PROGRAM;
  59 
  60     return OK;
  61 }
  62 
  63