#define VERSION "1.0"
-const int buffer_size = 1024;
+const int buffer_size = 4096;
// Yeah, global variables!
//////////////////////////////////////////////////////////////////////
-// This looks severely Linux-only ...
-
-void inject_into_tty_buffer(char *line) {
+void inject_into_tty_buffer(char *string) {
struct termios oldtio, newtio;
- tcgetattr(STDIN_FILENO,&oldtio);
+ tcgetattr(STDIN_FILENO, &oldtio);
memset(&newtio, 0, sizeof(newtio));
// Set input mode (non-canonical, *no echo*,...)
tcsetattr(STDIN_FILENO, TCSANOW, &newtio);
- // Put the selected line in the tty input buffer
- for(char *k = line; *k; k++) {
+ // Put the selected string in the tty input buffer
+ for(char *k = string; *k; k++) {
ioctl(STDIN_FILENO, TIOCSTI, k);
}
// Restore the old settings
<< "Usage: " << argv[0] << " [options] -f <file>" << endl
<< endl
<< " -h show this help" << endl
- << " -v inject the selection in the tty" << endl
- << " -m monochrome mode" << endl
+ << " -v inject the selected line in the tty" << endl
<< " -d remove duplicated lines" << endl
- << " -e regexp mode when starting" << endl
<< " -b remove the bash history line prefix" << endl
<< " -z remove the zsh history line prefix" << endl
- << " -i invert the line order" << endl
+ << " -i invert the order of lines" << endl
+ << " -e start in regexp mode" << endl
+ << " -m monochrome mode" << endl
<< " -c <fg modeline> <bg modeline> <fg highlight> <bg highlight>" << endl
<< " set the display colors" << endl
<< " -o <output filename>" << endl
file.getline(raw_line, buffer_size);
- if(strcmp(raw_line, "") != 0) {
+ if(file.fail()) {
+ cerr << "Line too long." << endl;
+ cerr << raw_line << endl;
+ exit(1);
+ }
+
+ if(raw_line[0]) {
char *s, *t;
const char *u;