Anuncios Google

Problemon efs

Buenas:

Estaba haciendo una cosillas y me ha surjido un super error. Es con la efslib 1.2, las añadi, pero no se como soluconar este fallo: No he modificado nada de la efslib.

In fuction 'CheckFile':

warring: array subscript has type 'char'

te pongo la linea afectada:

 ext[i] = tolower(ext[i]);

y esta la funcion affectada:

// check if the file is the good one, and save the path if desired
bool CheckFile(char *path, bool save) {
    bool ok = false;
    char ext[7], *ext2 = ext + 2;
    int i;
    u32 size;
    FILE *f;
 
    // check file extension
    strcpy(ext, path + strlen(path) - 6);
    for(i=0; i<7; ++i)
        ext[i] = tolower(ext[i]);
 
    if(!strcmp(ext2, ".nds") || !strcmp(ext2, ".bin") || !strcmp(ext, "ds.gba")) {
        if((f = fopen(path, "rb+"))) {
            // check file size
            fseek(f, 0, SEEK_END);
            size = ftell(f);
 
            if(size == efs_filesize) {
                bool found = false;
                char dataChunk[EFS_READBUFFERSIZE];
                char magicString[12] = "";
                int dataChunk_size, efs_offset = 0;
 
                // rebuild magic string
                strcat(magicString, efsMagicStringP1);
                strcat(magicString, efsMagicStringP2);
 
                // search for magic string
                i = 0;
                fseek(f, 0, SEEK_SET);
                while(!feof(f) && !found) {
                    dataChunk_size = fread(dataChunk, sizeof(char), EFS_READBUFFERSIZE, f);
 
                    for(i=0; i < dataChunk_size; i++) {
                        if(dataChunk[i] == magicString[0]) {
                            if(dataChunk_size-i < 12) {
                                break;
                            }
                            if(memcmp(&dataChunk[i], magicString, 12) == 0) {
                                found = true;
                                efs_offset += i;
                                break;
                            }
                        }
                    }
                    if(!found) {
                        efs_offset += dataChunk_size;
                    }
                }
 
                // check file id
                if(found == true && (*(int*)(dataChunk+i+12) == efs_id)) {
                    strcpy(efs_path, path);
                    // store file path in NDS
                    if(save) {
                        fseek(f, efs_offset+20, SEEK_SET);
                        fwrite(path, 1, 256, f);
                    }
                    ok = true;
                }
            }
        }
        fclose(f);
    }
 
    return ok;
}

Espero respuesta: gracias.


Be Libre my Friend.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de kNightFox

Creo que a partir de las R31

Creo que a partir de las R31 las EFS dejaron de funcionar (por eso me pase a las NitroFS)

Si tienes ganas, mira de editar la funcion y cargarte la parte que usa el tolower() y te haces una a medida, que es donde creo que estava el problema.


Nuestra web oficial:
http://www.nightfoxandco.com/
 
Siguenos en facebook:
http://www.facebook.com/pages/NightFox-Co/284338634917917
 
Por favor, no useis los MP para preguntas, usar el FORO:
http://www.nightfoxandco.com/forum/
Asi nos ahorramos de contestar lo mismo 20 veces.

 

Imagen de OdnetninI

Lo pr0ovare y te contare.

Lo pr0ovare y te contare.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.