Readd timechanging for slow mode

master
Tait Hoyem 5 years ago
parent 77c8989f12
commit f1da4d0411

@ -1,12 +1,18 @@
#include "morse.h" #include "morse.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
#include <string.h> #include <string.h>
const long DEFAULT_DASH_PAUSE = 300000; const long DEFAULT_DASH_PAUSE = 300000;
const long DEFAULT_DOT_PAUSE = 150000; const long DEFAULT_DOT_PAUSE = 150000;
int main(int argc, char *argv[]){ int main(int argc, char *argv[]){
char* inputString;
char* outputString;
// outputChar tracks the current printing character when slow printing is enabled
char outputChar;
long dash_delay = DEFAULT_DASH_PAUSE; long dash_delay = DEFAULT_DASH_PAUSE;
long dot_delay = DEFAULT_DOT_PAUSE; long dot_delay = DEFAULT_DOT_PAUSE;
@ -41,8 +47,6 @@ int main(int argc, char *argv[]){
} }
if (convertFromMorse){ if (convertFromMorse){
char* inputString;
char* outputString;
// for every line in the input, until the end of file // for every line in the input, until the end of file
while ((getline(&inputString, &buflen, stdin))!=EOF){ while ((getline(&inputString, &buflen, stdin))!=EOF){
int stringLen = strlen(inputString); int stringLen = strlen(inputString);
@ -58,8 +62,6 @@ int main(int argc, char *argv[]){
fflush(stdin); fflush(stdin);
} }
} else { } else {
char* inputString;
char* outputString;
// for each line of input // for each line of input
while ((getline(&inputString, &buflen, stdin))!=EOF){ while ((getline(&inputString, &buflen, stdin))!=EOF){
int stringLen = strlen(inputString); int stringLen = strlen(inputString);
@ -70,9 +72,27 @@ int main(int argc, char *argv[]){
} }
outputString = string_to_morse(inputString); outputString = string_to_morse(inputString);
printf("%s\n", outputString);
// force flush the buffer incase user is in interactive mode if (isSlow){
fflush(stdin); for (int i = 0; i < strlen(outputString); i++){
outputChar = outputString[i];
if (outputChar == '-'){
usleep(dash_delay);
printf("%c", outputChar);
} else if (outputChar == '.'){
usleep(dot_delay);
printf("%c", outputChar);
} else {
printf("%c", outputChar);
}
fflush(stdout);
}
printf("\n");
} else {
printf("%s\n", outputString);
// force flush the buffer incase user is in interactive mode
fflush(stdin);
}
} }
} }
return 0; return 0;

Loading…
Cancel
Save