Ejercicio_4/src/core/parser.c
/**
 * @brief   Verifica que la extension del archivo sea valida.
 * @param  *raw_data: Puntero a un arreglo de caracteres que contiene el nombre del archivo.
 * @param  *ppm_bmp: Puntero a un entero donde se almacenara el tipo de archivo.
 * @retval bool: True si la extension es valida, False en caso contrario.
 */
@brief   Verifica que la extension del archivo sea valida.
@param  *raw_data: Puntero a un arreglo de caracteres que contiene el nombre del archivo.
@param  *ppm_bmp: Puntero a un entero donde se almacenara el tipo de archivo.
@retval bool: True si la extension es valida, False en caso contrario.
@brief Verifica que la extension del archivo sea valida . @param * raw_data : Puntero a un arreglo de caracteres que contiene el nombre del archivo . @param * ppm_bmp : Puntero a un entero donde se almacenara el tipo de archivo . @retval bool : True si la extension es valida False en caso contrario .
static bool __is_a_valid_extension(const char *raw_data, int *ppm_bmp) {
	if (raw_data[0] == '.') {
		__print_usage_help();
		fprintf(stderr, "\nError: El nombre de archivo no puede iniciar con un punto\n");
		return 0;
	}
	size_t dot_pos = 0;
	size_t dot_cnt = 0;
	for (size_t i = 0; raw_data[i] && dot_cnt < 2; i++) {
		if (raw_data[i] == '.') {
			dot_cnt++;
			dot_pos = i;
		}
		if (!isalnum(raw_data[i]) && raw_data[i] != '.') {
			__print_usage_help();
			fprintf(stderr, "\nError: El nombre de archivo no puede contener caracteres especiales\n");
			return 0;
		}
	}
	if (dot_cnt != 1) {
		__print_usage_help();
		fprintf(stderr, "\nError: El nombre de archivo debe contener un unico punto\n");
		return 0;
	}
	char ext_aux[4];
	for (size_t i = dot_pos + 1; raw_data[i]; i++) {    
		if (i - dot_pos > 3) {
			__print_usage_help();
			fprintf(stderr, "\nError: La extension es demasiado larga. Solo se admite .ppm o .bmp\n");
			return 0;
		}
		ext_aux[i - dot_pos - 1] = raw_data[i];
	}
	ext_aux[3] = '\0';
	if (strcmp(ext_aux, "ppm") == 0) {
		*ppm_bmp = FT_PPM;
		return 1;
	}
	if (strcmp(ext_aux, "bmp") == 0) {
		*ppm_bmp = FT_BMP;
		return 1;
	}
	__print_usage_help();
	fprintf(stderr, "\nError: La extension es invalida. Solo se admite .ppm o .bmp\n");
	return 0;
}
static bool __is_a_valid_extension ( const char * raw_data , int * ppm_bmp ) { if ( raw_data [ 0 ] == ' ' ) { __print_usage_help ( ) ; fprintf ( stderr , " \n \n " ) ; return 0 ; } size_t dot_pos = 0 ; size_t dot_cnt = 0 ; for ( size_t i = 0 ; raw_data [ i ] && dot_cnt < 2 ; i ++ ) { if ( raw_data [ i ] == ' ' ) { dot_cnt ++ ; dot_pos = i ; } if ( ! isalnum ( raw_data [ i ] ) && raw_data [ i ] != ' ' ) { __print_usage_help ( ) ; fprintf ( stderr , " \n \n " ) ; return 0 ; } } if ( dot_cnt != 1 ) { __print_usage_help ( ) ; fprintf ( stderr , " \n \n " ) ; return 0 ; } char ext_aux [ 4 ] ; for ( size_t i = dot_pos + 1 ; raw_data [ i ] ; i ++ ) { if ( i - dot_pos > 3 ) { __print_usage_help ( ) ; fprintf ( stderr , " \n \n " ) ; return 0 ; } ext_aux [ i - dot_pos - 1 ] = raw_data [ i ] ; } ext_aux [ 3 ] = ' \0 ' ; if ( strcmp ( ext_aux , " " ) == 0 ) { * ppm_bmp = FT_PPM ; return 1 ; } if ( strcmp ( ext_aux , " " ) == 0 ) { * ppm_bmp = FT_BMP ; return 1 ; } __print_usage_help ( ) ; fprintf ( stderr , " \n \n " ) ; return 0 ; }
@brief   Verifica que la extension del archivo sea valida.
@brief Verifica que la extension del archivo sea valida .
// dot_pos + 1 -> Siguiente caracter al .