Example #1
0
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;
}
Example #2
0
/*
 * 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;
}
Example #3
0
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);
}
Example #4
0
    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);
    }