Enlève la dépendance à unac pour getRidOfAccents

This commit is contained in:
Yann Caumartin 2017-02-12 16:33:49 +01:00
parent 1f1aa8283a
commit 8e77ed2977
6 changed files with 32 additions and 19 deletions

@ -3,7 +3,7 @@ before_install:
- mkdir ./{Dep,Donnees}
- mkdir ./{Modele,Vue,Controleur}/Dep
- sudo apt-get update -qq
- sudo apt-get install libsfml-dev libcsfml-dev libcurl4-gnutls-dev libjansson-dev libunac1-dev
- sudo apt-get install libsfml-dev libcsfml-dev libcurl4-gnutls-dev libjansson-dev
language: c

@ -1,6 +1,6 @@
CC=gcc
CFLAGS=-std=c99 -Werror -Wall -Wextra -pedantic -Wshadow -Wno-missing-field-initializers -Wstrict-overflow
LDFLAGS=-std=c99 -Werror -Wall -Wextra -Wpedantic -Wshadow -Wno-missing-field-initializers -Wstrict-overflow -lm -lcurl -ljansson -lunac
LDFLAGS=-std=c99 -Werror -Wall -Wextra -Wpedantic -Wshadow -Wno-missing-field-initializers -Wstrict-overflow -lm -lcurl -ljansson
GFLAGS=-lcsfml-graphics -lcsfml-window -lcsfml-system
DEPFLAGS=-MMD -MF
OUTPUT=bin/Release/GINPA

@ -1,5 +1,5 @@
CC=gcc
CFLAGS=-std=c99 -Werror -Wall -Wextra -pedantic -Wshadow -Wno-missing-field-initializers -Wstrict-overflow -ljansson -lunac
CFLAGS=-std=c99 -Werror -Wall -Wextra -pedantic -Wshadow -Wno-missing-field-initializers -Wstrict-overflow -ljansson
DEPFLAGS=-MMD -MF
OUTPUT=../bin/Release/GINPA
OBJ=../obj/Release

@ -126,24 +126,39 @@ char** conversionDates(Point *tabInitial, uint32_t nbElements)
char* getRidOfAccents(char *const input)
{
ssize_t input_length = strlen(input);
char* output = NULL;
size_t output_length = 0;
// On tente une conversion de la chaîne pour virer les accents
if(unac_string("UTF-8", input, input_length, &output, &output_length) == -1)
char * accent = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
char * noAccent = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy";
char * output = calloc(strlen(input), sizeof(char));
if(output == NULL)
{
fprintf(stderr, "Un problème est survenu durant la conversion de la chaîne: \"%s\". Code de retour: %s.\n", input, strerror(errno));
if(output != NULL)
free(output);
fprintf(stderr, "getRidOfAccents -> Allocation mémoire impossilbe : %s\n", strerror(errno));
return NULL;
}
uint32_t nbAccent = 0;
// On peut maintenant libérer l'ancienne chaîne
free(input);
/*Pour comprendre le code qui suit : les accents
* sont codés sur deux cases d'une chaîne de caractères.
* Par exemple si une chaine s commence par 'é', s[0]
* et s[1] correspondraient au caractère 'é'.*/
for(uint32_t i=0; input[i] != '\0';i++)
{
bool filled = false;
for(uint8_t j=0;accent[j] != '\0' ;j+=2)
{
if (input[i] == accent[j] && input[i+1] == accent[j+1])
{
output[i - nbAccent] = noAccent[j/2];
i++;
nbAccent++;
filled = true;
}
}
if(filled == false)
{
output[i - nbAccent] = input[i];
}
}
// Et renvoyer la nouvelle !
return output;
}

@ -1,7 +1,6 @@
#pragma once
#include <stdlib.h>
#include <unac.h>
#include "../Controleur/controleur.h"

@ -9,9 +9,8 @@
* CSFML >= 2.1
* libcurl >= 7.38.0-4
* libjansson >= 2.7
* libunac1 = 1.8.0-6
`# aptitude install git gcc libsfml-dev libcsfml-dev libcurl4-gnutls-dev libjansson-dev libunac1-dev`
`# aptitude install git gcc libsfml-dev libcsfml-dev libcurl4-gnutls-dev libjansson-dev`
## How to get, build and run the project ?