Ejemplo n.º 1
0
int64_t Maike::version(const char* version_string) noexcept
	{
	union
		{
		uint16_t parts[4];
		int64_t number;
		} version;
	version.number=0;

	static constexpr size_t N_max=4*(5 + 1); //5 decimal places + one delimiter
	char buff_temp[N_max];
	strncpy(buff_temp,version_string,N_max);
	buff_temp[N_max - 1]='\0';

	auto k=0;
	char* pos;
	auto ptr=strtok_r(buff_temp,".",&pos);
	while(ptr!=NULL && k!=4)
		{
		version.parts[k]=makeWord( static_cast<uint16_t>(atoi(ptr)));
		ptr=strtok_r(NULL,".",&pos);
		++k;
		}
	version.number=makeWord(version.number);
	return version.number;
	}
void ApplesoftRetokenizer::parse(quint16 start_address)
{
    if (m_isParsed)
    {
        qWarning("File is already parsed.  Not reparsing.");
        return;
    }

    //TODO:  This could be changed to search for hidden space between applesoft lines
    int idx = 0;
    quint8 val = 0;
    m_retokenized_lines.clear();

    quint16 current_address = start_address;
    while (idx < m_data.length()) {
        ApplesoftLine line;
        line.address = current_address;

        line.next_address = makeWord(m_data[idx],m_data[idx+1]);
        idx++; idx++;

        line.linenum = makeWord(m_data[idx],m_data[idx+1]);
        idx++; idx++;

        if (line.next_address == 0x00) { break; }
        do {
            val = m_data[idx++];
            ApplesoftToken token(val);
            line.tokens.append(token);
        } while (val != 0x00);


        retokenizeLine(line);

        current_address = line.next_address;

        m_retokenized_lines.append(line);
    }

    m_data_end = idx;

    if (idx < m_data.length()) {
        qDebug() << QString("%1 byte(s) unaccounted for.").arg(m_data.length() - idx);
    }

    retokenizeLinesForFormatting();

    m_isParsed = true;
}
Ejemplo n.º 3
0
int Max6675::getValue()
{
	digitalWrite(_pin_clk, LOW);
	digitalWrite(_pin_cs, LOW);
	byte cH = this->shiftIn();
	byte cL = this->shiftIn();

	int temperature = makeWord(cH, cL);
	digitalWrite(_pin_cs, HIGH);
	return (temperature >> 3) - _offset;
}
Ejemplo n.º 4
0
void setParameters()
{
	// call this after reading paramter packet into buff[]
	_param.signature = _buff[0];
	_param.revision = _buff[1];
	_param.progtype = _buff[2];
	_param.parmode = _buff[3];
	_param.polling = _buff[4];
	_param.selftimed = _buff[5];
	_param.lock_bytes = _buff[6];
	_param.fuse_bytes = _buff[7];
	_param.flash_poll = _buff[8];

	_param.eeprom_poll = makeWord(_buff[10], _buff[11]);
	_param.flash_pagesize = makeWord(_buff[12], _buff[13]);
	_param.eeprom_size = makeWord(_buff[14], _buff[15]);

	// 32 bits flashsize (big endian)
	_param.flash_size = _buff[16] * 0x01000000 + _buff[17] * 0x00010000
			+ _buff[18] * 0x00000100 + _buff[19];
}
Ejemplo n.º 5
0
/*takes filename , pattern and prints the matching lines*/
void ReadAndPrint(char *filename, char *pattern, int w, int v, int n, int i){
	char *str, *q;
	int no = 0;
	process p;
	str = (char *)malloc(1000);
	FILE *fp;
	
	
	
	if(w == 1){
		q = makeWord(pattern);
		p = processpattern(q);
	}
	else{
		p = processpattern(pattern);
	}
	

	fp = fopen(filename, "r");
	if(fp == NULL){
		printf("Not found. yo.");
		exit(0);
	}
	if(i == 1){
		while(fgets(str, 99, fp)){
			no++;
			if(v == 1){
				if(!evalregularIgnoreCases(p.b, str, filename, p.CAR, p.DOL, p.size)){
					printf("%s\t", filename);
					if(n == 1){
						printf("%d  :", no);
					}
					printf("%s", str);	
				}
			}else{
				if(evalregularIgnoreCases(p.b, str, filename, p.CAR, p.DOL, p.size)){
					printf("%s\t", filename);
					if(n == 1){
						printf("%d  :", no);
					}
					printf("%s", str);	
				}
			}
		}
	}
	else{
		while(fgets(str, 99, fp)){
			no++;
			if(v == 1){
				if(!evalregular(p.b, str, filename, p.CAR, p.DOL, p.size)){
					printf("%s\t", filename);
					if(n == 1){
						printf("%d  :", no);
					}
					printf("%s", str);	
				}
			}else{
				if(evalregular(p.b, str, filename, p.CAR, p.DOL, p.size)){
					printf("%s\t", filename);
					if(n == 1){
						printf("%d  :", no);
					}
					printf("%s", str);	
				}
			}
		}
	}
	fclose(fp);
}
Ejemplo n.º 6
0
int main(int argc, const char *argv[]) {
    WSAData wsaData;
    const auto versionRequested = makeWord(2, 2);
    if (WSAStartup(versionRequested, &wsaData) != 0) {
        std::cerr << "Can not initialize windows socket." << std::endl;
        return EXIT_FAILURE;
    }
    Socket serverSocket;
    if ((serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
        std::cerr << "Can not create server socket." << std::endl;
        WSACleanup();
        return EXIT_FAILURE;
    }
    SocketAddressIn serverAddress;
    serverAddress.sin_addr.s_addr = htonl(ServerIP);
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_port = htons(ServerPort);
    if (bind(serverSocket, (SocketAddress *) &serverAddress, sizeof(SocketAddress)) == SOCKET_ERROR) {
        std::cerr << "Can not bind socket with specified address." << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return EXIT_FAILURE;
    }
    if (listen(serverSocket, BackLog) == SOCKET_ERROR) {
        std::cerr << "Can not listen on specified socket now." << std::endl;
        closesocket(serverSocket);
        WSACleanup();
        return EXIT_FAILURE;
    }
    std::cout << "Server successfully launched." << std::endl;
    Socket clientSocket;
    SocketAddressIn clientAddress;
    int length = sizeof(clientAddress);
    std::vector<std::unique_ptr<std::thread>> threads;
    while (true) {
        if ((clientSocket = accept(serverSocket, (SocketAddress *) &clientAddress, &length)) == INVALID_SOCKET) {
            std::cerr << "Can not accept data from specified socket now." << std::endl;
            return EXIT_FAILURE;
        }
        const uint16_t net = clientAddress.sin_addr.s_net;
        const uint16_t host = clientAddress.sin_addr.s_host;
        const uint16_t logicalHost = clientAddress.sin_addr.s_lh;
        const uint16_t imp = clientAddress.sin_addr.s_impno;
        std::cout << "Connected to " << net << '.' << host << '.' << logicalHost << '.' << imp << '.' << std::endl;
        threads.emplace_back(new std::thread([clientSocket, net, host, logicalHost, imp, &serverSocket, &threads]() {
            char data[MaxDataLength];
            while (true) {
                memset(data, NULL, sizeof(char) * MaxDataLength);
                int flag = recv(clientSocket, data, sizeof(char) * MaxDataLength, NULL);
                if (flag == 0 || flag == SOCKET_ERROR) {
                    std::cout << "Disconnected from client " << net << '.' << host << '.' << logicalHost << '.' << imp << '.' << std::endl;
                    closesocket(clientSocket);
                    return;
                }
                if (strcmp(data, "shutdown") == 0) {
                    closesocket(serverSocket);
                    for (const auto &thread : threads) {
                        thread->detach();
                    }
                    WSACleanup();
                    exit(EXIT_SUCCESS);
                }
                std::cout << "[" << net << '.' << host << '.' << logicalHost << '.' << imp << "] " << data << std::endl;
            }
        }));
    }
    return EXIT_SUCCESS;
}
Ejemplo n.º 7
0
//void ReadAndPrint(char *filename, char *pattern, int w, int v, int n, int i)
int ReadAndPrintForB(char *filename, char *pattern, char num, int w, int v, int no){
	char *buff[num - '0'], *str, *q;
	FILE *fp;
	process p;
	int i, x, count = 0, n = 0;
	x = num - '0';
	for(i = 0; i < (num - '0'); i++){
		buff[i] = (char *)malloc(sizeof(char) * 100);
	}

	str = (char *)malloc(1000);
	if(w == 1){
		q = makeWord(pattern);
		p = processpattern(q);
	}
	else{
		p = processpattern(pattern);
	}
	//p = processpattern(pattern);

	fp = fopen(filename, "r");

	while(fgets(str, 100, fp)){
		if(v == 1){
			if(n < x){
				n++;
				if(!evalregular(p.b, str, filename, p.CAR, p.DOL, p.size)){
					for(i = 0; i < count; i++){
						if(no == 1){
							printf("%s-", filename);
							printf("%d :", i);	
							printf("%s", buff[i]);
				
						}
						else{
							printf("%s-", filename);
							printf("%s", buff[i]);
						
						}
					
					}
					printf("%s:", filename);
					printf("%d :", i);	
					printf("%s", str);
				}
				strcpy(buff[count], str);/*storing in buffer*/
				count++;
				count =  count % x;
				continue;
			}
			if(n >= x){
				n++;
				if(!evalregular(p.b, str, filename, p.CAR, p.DOL, p.size)){
					for(i = 0; i < x; i++){	
						if(no == 1){
							printf("%s-", filename);
							printf("%d :", n - x + i);	
							printf("%s", buff[i]);
						}
						else{
							printf("%s-", filename);
							printf("%s", buff[i]);
						
						}
					}
				
					printf("%s:", filename);	
					printf("%d :", n);
					printf("%s", str);
				}

				strcpy(buff[count], str);
				count++;
				count =  count % x;
				continue;
			}
		}
		
		else{
			if(n < x){
				n++;
				if(evalregular(p.b, str, filename, p.CAR, p.DOL, p.size)){
					for(i = 0; i < count; i++){
						if(no == 1){
							printf("%s-", filename);
							printf("%d :", i);	
							printf("%s", buff[i]);
				
						}
						else{
							printf("%s-", filename);
							printf("%s", buff[i]);
						
						}
					
					}
					printf("%s:", filename);
					printf("%d :", i);	
					printf("%s", str);
				}
				strcpy(buff[count], str);
				count++;
				count =  count % x;
				continue;
			}
			if(n >= x){
				n++;
				if(evalregular(p.b, str, filename, p.CAR, p.DOL, p.size)){
					for(i = 0; i < x; i++){	
						if(no == 1){
							printf("%s-", filename);
							printf("%d :", n - x + i);	
							printf("%s", buff[i]);
						}
						else{
							printf("%s-", filename);
							printf("%s", buff[i]);
						
						}
					}
				
					printf("%s:", filename);	
					printf("%d :", n);
					printf("%s", str);
				}

				strcpy(buff[count], str);
				count++;
				count =  count % x;
				continue;
			}
		}
		
	}
	printf("\n--\n");
	fclose(fp);
}