commit 33ad6b3512b98db955193f36ba48eac0e2574870
parent 78b881612aabd78ffc83454879a0a53bd551f7e2
Author: klewer-martin <martin.cachari@gmail.com>
Date: Tue, 9 Feb 2021 22:52:46 -0300
Modified data type for country, date and infected variables. From
unsigned long to unsigned int;
Diffstat:
9 files changed, 31 insertions(+), 36 deletions(-)
diff --git a/arguments.c b/arguments.c
@@ -48,7 +48,8 @@ status_t validate_arguments(int argc, char * argv[], char * src, char * dest)
// Si uno o ambos de los argumentos no se encontro entonces imprime un codigo
// de error;
if((inputFile && outputFile) != OK)
- return IO_FILE_NOT_FOUND;
+ return ERROR_INVOCATING_PROGRAM;
+// return IO_FILE_NOT_FOUND;
return OK;
}
diff --git a/macros.h b/macros.h
@@ -10,6 +10,7 @@
#define INITIAL_SIZE 1000
+typedef unsigned int uint;
typedef unsigned long ulong;
#endif
diff --git a/main.c b/main.c
@@ -26,57 +26,53 @@
int main(int argc, char * argv[])
{
-// Esta variable es para guardar los codigos de error;
status_t st;
// Las siguientes variables son para guardar los nombres de los archivos de
-// entrada y salida luego de validar que los argumentos recibidos sean correctos;
+// entrada y salida luego de validar los argumentos
char src[32], dest[32];
FILE *fpi, *fpo;
- ulong country, date, infected;
- country = date = infected = 0;
+ uint country, date, infected;
+ country = date = infected = 0;
prev_month = prev_country = -1;
-
infected_monthly = 0;
-// El siguiente arreglo de dos dimensiones es donde se van a guardar los
-// codigos de los paises;
+// Arreglo de arreglos de caracteres para guardar los codigos de los paises
char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH];
+
// Valida de que los argumentos sean correctos y guarda los nombres de los
-// archivos de entrada y salida en src y dest respectivamente, de haber algun
-// error en el proceso devuelve un codigo de error de tipo status_t (definido
-// en main.h);
+// archivos de entrada y salida en src y dest respectivamente
if((st = validate_arguments(argc, argv, src, dest)) != OK) {
print_error(st);
return st;
}
// Carga los codigos de error de los paises de acuerdo al standard iso3166 en
-// el arreglo mencionado previamente 'country_codes', en caso de haber algun
-// error en el proceso devuelve dicho codigo e impreme por stderr un mensaje
-// de error;
+// el arreglo mencionado previamente 'country_codes'
if((st = load_country_codes(country_codes)) != OK) {
print_error(st);
return ERROR_LOADING_COUNTRY_CODES;
}
-// Abre el archivo de entrada en modo lectura, y el de salida en modo
-// escritura, si por algun motivo falla imprime un codigo de error;
+// Abre el archivo de entrada en modo lectura
if((fpi = fopen(src, "r")) == NULL) {
fclose(fpi);
return ERROR_READING_FILE;
}
+// Abre el archivo de salida en modo escritura
if((fpo = fopen(dest, "w")) == NULL) {
fclose(fpo);
return ERROR_READING_FILE;
}
+// Lee el archivo de entrada y va imprimiendo linea por linea en el de salida
size_t line;
- for(line = 0; (st = read_file(fpi, &country, &date, &infected)) == OK; line++) {
+ for(line = 0; (st = read_file(fpi, &country, &date, &infected)) == OK; line++)
+ {
if(line != 0) {
print_file(fpo, country_codes, &country, &date, &infected);
}
diff --git a/main.h b/main.h
@@ -26,7 +26,7 @@
extern const char formato_de_la_fecha[];
-extern ulong country, date, infected;
+extern uint country, date, infected;
extern ulong infected_monthly;
diff --git a/perrors.h b/perrors.h
@@ -3,19 +3,19 @@
#include "main.h"
-#define MSG_ERROR_NULL_POINTER "ERROR_NULL_POINTER\n"\
+#define MSG_ERROR_NULL_POINTER "ERROR_NULL_POINTER (3)\n"\
"An unexpected error has occured during the execution\n"\
"of the program"
-#define MSG_ERROR_INVOCATING_PROGRAM "\nERROR_INVOCATING_PROGRAM\n"\
+#define MSG_ERROR_INVOCATING_PROGRAM "\nERROR_INVOCATING_PROGRAM (2)\n"\
"Usage:\t$ ./main -in <input file> -out <outputfile>\n"\
"\t$ ./main -out <output file -in <input file>\n"\
"Read documentation to know more"
-#define MSG_IO_FILE_NOT_FOUND "\nIO_FILE_NOT_FOUND\n"\
+#define MSG_IO_FILE_NOT_FOUND "\nIO_FILE_NOT_FOUND (1)\n"\
"Un de los archivos de entrada o salida no se ha especificado"\
-#define MSG_ERROR_LOADING_COUNTRY_CODES "\nERROR_LOADING_COUNTRY_CODES\n"\
+#define MSG_ERROR_LOADING_COUNTRY_CODES "\nERROR_LOADING_COUNTRY_CODES (4)\n"\
"Ha ocurrido un error al cargar los codigos de los paises.\n"\
"compruebe que el archivo \""COUNTRY_CODES_FILE_NAME"\" se encuentre\n"\
"disponible en el directorio de el programa ejecutado y que\n"\
@@ -24,13 +24,14 @@
#define MSG_ERROR_PRINTING
-#define MSG_ERROR_READING_FILE "\nERROR_READING_FILE\n"\
+#define MSG_ERROR_READING_FILE "\nERROR_READING_FILE (6)\n"\
"El archivo de entrada no pudo ser leido, compruebe que el nombre este\n"\
"escrito correctamente y la existencia de el mismo"
-#define MSG_ERROR_ALLOCATING_TIME "\nstrftime(3): el formato especificado "
+#define MSG_ERROR_ALLOCATING_TIME "\nERROR_ALOCATING_TIME (7)\n"\
+ "strftime(3): el formato especificado\n"
-#define MSG_ERROR_DATA_ON_FILE_MISSING "\nERROR_DATA_ON_FILE_MISSING\n"\
+#define MSG_ERROR_DATA_ON_FILE_MISSING "\nERROR_DATA_ON_FILE_MISSING (8)\n"\
"En alguna linea de el archivo de entrada falta un dato,\n"\
"compruebe que dicho archivo no esta corrupto y ejecute\n"\
"el programa nuevamente"
diff --git a/print_file.c b/print_file.c
@@ -5,7 +5,7 @@ const char formato_de_la_fecha[] = "%d %b %Y";
int prev_month, prev_country;
ulong infected_monthly;
-status_t print_file(FILE *dest, char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH], ulong *country, ulong *date, ulong *infected) {
+status_t print_file(FILE *dest, char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH], uint *country, uint *date, uint *infected) {
int month;
char time_s[TIME_MAX_DIGITS];
@@ -68,12 +68,12 @@ status_t fprintf_date(FILE *dest, size_t date)
return OK;
}
-status_t fprintf_infected(FILE *dest, size_t infected, char newline)
+status_t fprintf_infected(FILE *dest, uint infected, char newline)
{
if(dest == NULL)
return ERROR_NULL_POINTER;
- fprintf(dest, "Infectados: %lu\n%c", infected, newline);
+ fprintf(dest, "Infectados: %u\n%c", infected, newline);
return OK;
}
diff --git a/print_file.h b/print_file.h
@@ -5,11 +5,11 @@
//extern const char formato_de_la_fecha[];
-status_t print_file(FILE *dest, char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH], ulong *country, ulong *date, ulong *infected);
+status_t print_file(FILE *dest, char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH], uint *country, uint *date, uint *infected);
status_t fprintf_country(FILE *dest, size_t country_code, char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH]);
status_t fprintf_date(FILE *dest, size_t date);
-status_t fprintf_infected(FILE *dest, size_t infected, char newline);
+status_t fprintf_infected(FILE *dest, uint infected, char newline);
void fprintf_infected_monthly(FILE *dest);
diff --git a/read_file.c b/read_file.c
@@ -2,7 +2,7 @@
#include "read_file.h"
-status_t read_file(FILE *src, ulong *country, ulong *date, ulong *infected)
+status_t read_file(FILE *src, uint *country, uint *date, uint *infected)
{
// Esta variable es para saber de que tipo de dato estamos hablando, si es un
diff --git a/read_file.h b/read_file.h
@@ -10,12 +10,8 @@ typedef enum {
INFECTED
} data_t;
-status_t read_file(FILE *src, ulong *country, ulong *date, ulong *infected);
+status_t read_file(FILE *src, uint *country, uint *date, uint *infected);
-status_t fprintf_date(FILE *dest, size_t data);
-status_t fprintf_infected(FILE *dest, size_t data, char newline);
status_t clean_buffer(char *buffer, size_t size);
-status_t time_translator(time_t unix_time, char *res, size_t size, const char *format);
-status_t fprintf_country(FILE *dest, size_t country_code, char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH]);
#endif