1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
// Recherche d'une place libre dans le fichier de sauvegarde
int res_placeLibre (){
int n = 0;
int p = -1;
FILE* fichier = fopen(file_url, "rb");
if (fichier != NULL){
ResType record;
while (p < 0 && !feof(fichier)){
fread(record, sizeof(record), 1, fichier);
if (record.present == false) {
p=n;
}
n++;
}
fclose (fichier);
}else{
// FILE_ERROR
}
return p;
}
// Publication des infos dans le fichier de sauvegarde
int res_postInfos (char *buffer, int index, ResType record){
bool nouveau = false;
if (index >= 0){
record.present = true;
}else{
index = res_placeLibre <ResType>();
nouveau = true;
}
bool result = false;
FILE* fichier = fopen (file_url, "wb");
if (fichier != NULL){
fseek(fichier, index * sizeof(record), SEEK_SET);
fwrite(record, sizeof(record), 1, fichier);
result = true;
fclose (fichier);
}else{
// FILE_ERROR
}
if (result){
char id_str[5];
sprintf(id_str, "%d", index+1);
strcat(buffer, "<post><success>1</success>");
if (nouveau){
strcat(buffer, "<new_id>");
strcat(buffer, id_str);
strcat(buffer, "</new_id>");
}
strcat(buffer, "</post>");
}else{
Erreur error;
strcpy(error.code, "WRITE_ERROR");
strcpy(error.titre, "L'ecriture dans le fichier a echoue pour une raison inconnue.");
pushErreur(error);
}
return index;
} |
Partager