Skip to content
Snippets Groups Projects
Commit 24bc95ab authored by Man hing Ling's avatar Man hing Ling
Browse files

ajout de la fonction append à la commande TYPE

parent ae5a82ec
Branches
No related tags found
No related merge requests found
...@@ -254,7 +254,7 @@ void TYPE(SD_info *sd, char *filename, char *data) { ...@@ -254,7 +254,7 @@ void TYPE(SD_info *sd, char *filename, char *data) {
int block_counter = 1; //compteur de blocs utilisés int block_counter = 1; //compteur de blocs utilisés
int index_in_descrBlock = 0; int index_in_descrBlock = 0;
int offset; int offset;
int append_command = -1;
if (sizeFilename > MAX_FILENAME_LENGTH) { if (sizeFilename > MAX_FILENAME_LENGTH) {
printf("\nImpossible de créer le fichier, nom trop long\n"); printf("\nImpossible de créer le fichier, nom trop long\n");
...@@ -265,7 +265,19 @@ void TYPE(SD_info *sd, char *filename, char *data) { ...@@ -265,7 +265,19 @@ void TYPE(SD_info *sd, char *filename, char *data) {
for (int blockNum = 0; blockNum < MAX_BLOCKS_IN_SUPERBLOCK; blockNum += 16) { for (int blockNum = 0; blockNum < MAX_BLOCKS_IN_SUPERBLOCK; blockNum += 16) {
readBlock(sd,blockNum, 0, buffer, MAX_FILENAME_LENGTH); readBlock(sd,blockNum, 0, buffer, MAX_FILENAME_LENGTH);
// Vérifier si le bloc est vide (pas de nom de fichier) // Vérifier si le bloc est vide (pas de nom de fichier)
if (buffer[0] == 0) { if (strncmp(buffer,filename,strlen(filename))==0) //si même nom de fichier alors on concatenne les data
{
append_command = 1;
char append_description_buffer[CHUNK_SIZE]; // récupère le numéro du bloc dans la description
char append_buffer[CHUNK_SIZE]; //récupère les données finales à écrire dans le bloc de donnée
readBlock(sd, blockNum+1, 0, append_description_buffer, 2);
int dataBlockNum = reconstituteNumber(append_description_buffer);
readBlock(sd, dataBlockNum, 0, append_buffer, CHUNK_SIZE);
strcat(append_buffer, data); //former les données finales
writeBlock(sd, dataBlockNum, 0, append_buffer, CHUNK_SIZE); // écrire dans bloc de donnée, rien à fiare dans description
break;
}
else if (buffer[0] == 0) {
// Écrire le nom du fichier dans l'emplacement vide du superbloc // Écrire le nom du fichier dans l'emplacement vide du superbloc
if (sizeFilename < MAX_FILENAME_LENGTH) { if (sizeFilename < MAX_FILENAME_LENGTH) {
sizeFilename += 1; // Ajouter '\0' s'il y a de la place sizeFilename += 1; // Ajouter '\0' s'il y a de la place
...@@ -336,7 +348,8 @@ void TYPE(SD_info *sd, char *filename, char *data) { ...@@ -336,7 +348,8 @@ void TYPE(SD_info *sd, char *filename, char *data) {
if (placeFound != -1) { if (placeFound != -1) {
printf("Le fichier \"%s\" a été créé avec succès.\n", filename); printf("Le fichier \"%s\" a été créé avec succès.\n", filename);
} else { } else {
printf("Plus de place dans le système de fichier pour créer ce fichier.\n"); if(append_command == 1) printf("Les données ont été concaténées dans le fichier %s\n",filename);
else printf("Plus de place dans le système de fichier pour créer ce fichier.\n");
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment