MCPcopy Create free account
hub / github.com/SIPp/sipp / handle_stdin_socket

Function handle_stdin_socket

src/socket.cpp:558–618  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

556
557#define SIPP_ENDL "\r\n"
558void handle_stdin_socket()
559{
560 int c;
561 int chars = 0;
562
563 if (feof(stdin)) {
564 stdin_socket->close();
565 stdin_socket = nullptr;
566 return;
567 }
568
569 while (((c = screen_readkey()) != -1)) {
570 chars++;
571 if (command_mode) {
572 if (c == '\n') {
573 bool quit = process_command(command_buffer);
574 if (quit) {
575 return;
576 }
577 command_buffer[0] = '\0';
578 command_mode = 0;
579 }
580#ifndef __SUNOS
581 else if (c == key_backspace || c == key_dc)
582#else
583 else if (c == 14)
584#endif
585 {
586 int command_len = strlen(command_buffer);
587 if (command_len > 0) {
588 command_buffer[command_len--] = '\0';
589 }
590 } else {
591 int command_len = strlen(command_buffer);
592 char *realloc_ptr = (char *)realloc(command_buffer, command_len + 2);
593 if (realloc_ptr) {
594 command_buffer = realloc_ptr;
595 } else {
596 free(command_buffer);
597 ERROR("Out of memory");
598 return;
599 }
600 command_buffer[command_len++] = c;
601 command_buffer[command_len] = '\0';
602 putchar(c);
603 fflush(stdout);
604 }
605 } else if (c == 'c') {
606 command_mode = 1;
607 char *realloc_ptr = (char *)realloc(command_buffer, 1);
608 if (realloc_ptr) {
609 command_buffer = realloc_ptr;
610 } else {
611 free(command_buffer);
612 ERROR("Out of memory");
613 return;
614 }
615 command_buffer[0] = '\0';

Callers 1

socket.cppFile · 0.85

Calls 4

screen_readkeyFunction · 0.85
process_commandFunction · 0.85
ERRORFunction · 0.85
closeMethod · 0.80

Tested by

no test coverage detected