int decodeReq(const char *reqStr, char *content, PReq req) { PStrList reqList=slCreate(""); char *p; memset(req, 0, sizeof(TReq)); slSetText(reqList, reqStr, "\n"); // logMsg("ReqLine Count=%d,",reqList->count); // logMsg("'ReqID',"); req->ReqID=slGetValueInt(reqList, "ReqID", -1); p=slGetValue(reqList, "URL"); if(p) strcpy(req->URL, p); p=slGetValue(reqList, "CT"); if(p) strcpy(req->ContentType, p); p=slGetValue(reqList, "Cookies"); if(p) decodeLine(p, req->Cookies); req->Content=slGetValue(reqList, "Content"); p=slGetValue(reqList, "CL"); if(p) req->ContentSize=atoi(p); if(req->Content) { if(content==NULL) content=(char *)reqStr; req->ContentSize=decodeLine(req->Content, content); req->Content=content; // logMsg("%d bytes. Finish.\n", req->ContentSize); } slFree(reqList); return 1; }
/* * Save the uuencoded part of the file as it is read in since there's no need * to include it in the parse tree. Saves memory and parse time. * Return < 0 for failure */ int uudecodeFile(message *m, const char *firstline, const char *dir, fmap_t *map, size_t *at) { fileblob *fb; char buffer[RFC2821LENGTH + 1]; char *filename = cli_strtok(firstline, 2, " "); if(filename == NULL) return -1; fb = fileblobCreate(); if(fb == NULL) { free(filename); return -1; } fileblobSetFilename(fb, dir, filename); cli_dbgmsg("uudecode %s\n", filename); free(filename); while(fmap_gets(map, buffer, at, sizeof(buffer) - 1)) { unsigned char data[1024]; const unsigned char *uptr; size_t len; cli_chomp(buffer); if(strcasecmp(buffer, "end") == 0) break; if(buffer[0] == '\0') break; uptr = decodeLine(m, UUENCODE, buffer, data, sizeof(data)); if(uptr == NULL) break; len = (size_t)(uptr - data); if((len > 62) || (len == 0)) break; if(fileblobAddData(fb, data, len) < 0) break; } fileblobDestroy(fb); return 1; }
void WSPRNet::upload(QString call, QString grid, QString rfreq, QString tfreq, QString mode, QString tpct, QString dbm, QString version, QString fileName) { m_call = call; m_grid = grid; m_rfreq = rfreq; m_tfreq = tfreq; m_mode = mode; m_tpct = tpct; m_dbm = dbm; m_vers = version; m_file = fileName; // qDebug() << "mode: " << m_mode; // Open the wsprd.out file QFile wsprdOutFile(fileName); if (!wsprdOutFile.open(QIODevice::ReadOnly | QIODevice::Text) || wsprdOutFile.size() == 0) { urlQueue.enqueue( wsprNetUrl + urlEncodeNoSpot()); m_uploadType = 1; uploadTimer->start(200); return; } // Read the contents while (!wsprdOutFile.atEnd()) { QHash<QString,QString> query; if ( decodeLine(wsprdOutFile.readLine(), query) ) { // Prevent reporting data ouside of the current frequency band float f = fabs(m_rfreq.toFloat() - query["tqrg"].toFloat()); if (f > 0.0002) continue; urlQueue.enqueue( wsprNetUrl + urlEncodeSpot(query)); m_uploadType = 2; } } m_urlQueueSize = urlQueue.size(); uploadTimer->start(200); }
void HDRImage::loadFromFile(const std::string& filePath) { FILE* file; file = fopen(filePath.c_str(), "rb"); if (file == NULL) { LOGE("Could not open file %s", filePath.c_str()); return; } /* Read header. */ char header[radianceHeaderLength]; fread(header, 1, radianceHeaderLength, file); header[radianceHeaderLength - 1] = 0; string readHeader = header; if (!readHeader.compare(radianceHeader)) { LOGE("File header has not been recognized.\n"); fclose(file); return; } /* Search for resolution data. */ char currentChar = 0; char previousChar = 0; while ((previousChar != '\n' || currentChar != '\n') && currentChar != EOF) { previousChar = currentChar; currentChar = fgetc(file); } int imageWidth = 0; int imageHeight = 0; fscanf(file, "-Y %d ", &imageHeight); fscanf(file, "+X %d ", &imageWidth); if (imageWidth < minLineLength || imageWidth > maxLineLength) { LOGE("Cannot decode image with width lower than %d or higher than %d", minLineLength, maxLineLength); return; } height = imageHeight; width = imageWidth; RGBEPixel* scanLine = NULL; try { rgbData = new float[imageWidth * imageHeight * rgbComponentsCount]; scanLine = new RGBEPixel[imageWidth * rgbeComponentsCount]; } catch (std::bad_alloc& ba) { LOGE("Exception caught: %s", ba.what()); return; } for (int y = 0; y < imageHeight; ++y) { if (!decodeLine(file, imageWidth, scanLine)) { LOGE("One of the scan lines has not been encoded correctly.\n"); delete [] scanLine; fclose(file); return; } for (int x = 0; x < imageWidth; ++x) { int rgbPixelMove = (y * imageWidth + x) * 3; convertRGBEPixel(scanLine[x], rgbData + rgbPixelMove); } } delete [] scanLine; fclose(file); }