mirror of
https://github.com/Maschell/saviine.git
synced 2024-11-13 02:25:05 +01:00
added common injection, caught some possible errors
This commit is contained in:
parent
6318737325
commit
c525e2546e
@ -364,6 +364,36 @@ static void handle_saves(void *pClient, void *pCmd,int error, int client){
|
||||
log_string(bss.logsock, "dumping common savedata", BYTE_LOG_STR);
|
||||
dump_dir(pClient,client,pCmd,"/vol/save/common/",error,60);
|
||||
log_string(bss.logsock, "done!", BYTE_LOG_STR);
|
||||
}else{
|
||||
log_string(bss.logsock, "common injection", BYTE_LOG_STR);
|
||||
int buf_size = BUFFER_SIZE;
|
||||
char * pBuffer;
|
||||
int failed = 0;
|
||||
do{
|
||||
buf_size -= 0x200;
|
||||
if(buf_size < 0){
|
||||
log_string(bss.logsock, "error on buffer allocation", BYTE_LOG_STR);
|
||||
failed = 1;
|
||||
break;
|
||||
}
|
||||
pBuffer = (char *)MEMAllocFromDefaultHeapEx(buf_size, 0x40);
|
||||
}while(!pBuffer);
|
||||
if(!failed){
|
||||
int result = injectFiles(pClient,pCmd,"/vol/save/common/","/",pBuffer,buf_size,-1);
|
||||
if(result == -1){
|
||||
log_string(bss.logsock, "injection failed, trying to restore the data", BYTE_LOG_STR);
|
||||
//TODO FSRollbackQuota
|
||||
}else{
|
||||
char logbugger[50];
|
||||
__os_snprintf(logbugger, sizeof(logbugger), "injected %d files, flushing the data now",result);
|
||||
log_string(bss.logsock, logbugger, BYTE_LOG_STR);
|
||||
if(FSFlushQuota(pClient,pCmd,"/vol/save/common/",-1) == 0){
|
||||
log_string(bss.logsock, "success", BYTE_LOG_STR);
|
||||
}else{
|
||||
log_string(bss.logsock, "failed", BYTE_LOG_STR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -448,12 +478,18 @@ int injectFiles(void *pClient, void *pCmd, char * path,char * relativepath,char
|
||||
|
||||
}else{
|
||||
log_string(bss.logsock, "cafiine_fopen failed", BYTE_LOG_STR);
|
||||
failed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if((FSCloseFile (pClient, pCmd, handle, -1)) < 0)
|
||||
if((FSCloseFile (pClient, pCmd, handle, -1)) < 0){
|
||||
log_string(bss.logsock, "FSCloseFile failed", BYTE_LOG_STR);
|
||||
failed = 1;
|
||||
}
|
||||
|
||||
}else{
|
||||
log_string(bss.logsock, "opening the file failed", BYTE_LOG_STR);
|
||||
failed = 1;
|
||||
}
|
||||
if(!failed) filesinjected++;
|
||||
}else if( type == BYTE_FOLDER){
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user