int iclose(RGB_IMAGE *image) { long tablesize, ret; iflush(image); img_optseek(image, 0); if (image->flags&_IOWRT) { if (image->dorev) cvtimage((long *)image); swapImage(image) ; if (img_write(image,(char *)image,sizeof(RGB_IMAGE)) != sizeof(RGB_IMAGE)) { i_errhdlr("iclose: error on write of image header\n",0,0,0,0); return EOF; } swapImage(image) ; if (image->dorev) cvtimage((long *)image); if (ISRLE(image->type)) { img_optseek(image, 512L); tablesize = image->ysize*image->zsize*sizeof(long); if (image->dorev) cvtlongs((long *)image->rowstart,(long)tablesize); if (img_write(image,(char *)(image->rowstart),tablesize) != tablesize) { i_errhdlr("iclose: error on write of rowstart\n",0,0,0,0); return EOF; } if (image->dorev) cvtlongs((long *)image->rowsize,tablesize); if (img_write(image,(char *)(image->rowsize),tablesize) != tablesize) { i_errhdlr("iclose: error on write of rowsize\n",0,0,0,0); return EOF; } } } if (image->base) { free(image->base); image->base = 0; } if (image->tmpbuf) { free(image->tmpbuf); image->tmpbuf = 0; } if (ISRLE(image->type)) { free(image->rowstart); image->rowstart = 0; free(image->rowsize); image->rowsize = 0; } ret = close(image->file); if (ret != 0) i_errhdlr("iclose: error on close of file\n",0,0,0,0); free(image); return ret; }
void MyServer::slotReadClient() { QTcpSocket* pClientSocket = (QTcpSocket*)sender(); QDataStream in(pClientSocket); in.setVersion(QDataStream::Qt_5_3); for(;;){ if(!nextBlockSize){ if(pClientSocket->bytesAvailable() < sizeof(quint32)) { break; } in >> nextBlockSize; } if(pClientSocket->bytesAvailable() < nextBlockSize) { break; } QString request; in >> request; QStringList req_param = request.split(" "); if(req_param.at(0) == "GETCURRENTVERSION") sendCurrVers(pClientSocket); if(req_param.at(0) == "GETSUBJECTS") sendArrayToClient(pClientSocket,getSubjects()); if(req_param.at(0) == "GETTHEMES") sendArrayToClient(pClientSocket,getThemes(req_param.at(1))); if(req_param.at(0) == "GETPICTURES") sendArrayToClient(pClientSocket,getPictures(req_param.at(1),req_param.at(2))); if(req_param.at(0) == "GETIMAGE") sendImageToClient(pClientSocket,getImage(req_param.at(1))); if(req_param.at(0) == "PUTSUBJECT"){ putSubject(req_param.at(1)); version++; } if(req_param.at(0) == "PUTTHEME"){ putTheme(req_param.at(1),req_param.at(2)); version++; } if(req_param.at(0) == "PUTIMAGE") { QImage img; in >> img; quint32 k = putImage(img,req_param.at(1),req_param.at(2), req_param.at(3)); version++; QList<QString> lst; lst << QString("%1").arg(k); sendArrayToClient(pClientSocket,lst); } if(req_param.at(0) == "DELETESUBJECT"){ deleteSubject(req_param.at(1)); version++; } if(req_param.at(0) == "DELETETHEME"){ deleteTheme(req_param.at(1),req_param.at(2)); version++; } if(req_param.at(0) == "DELETEIMAGE"){ deleteImage(req_param.at(1)); version++; } if(req_param.at(0) == "SWAPIMAGE"){ QImage img; in >> img; swapImage(img,req_param.at(1)); version++; }