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; }
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; }
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]; }
/*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); }
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; }
//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); }