/* Copyright (C) 2014 jaseg * * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE * Version 2, December 2004 * * Everyone is permitted to copy and distribute verbatim or modified * copies of this license document, and changing it is allowed as long * as the name is changed. * * DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE * TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION * * 0. You just DO WHAT THE FUCK YOU WANT TO. */ #define _XOPEN_SOURCE #include #include #include #include #include #include #include #include #include #include #include static char helpstr[] = "\n" "Usage: lolcat [-h horizontal_speed] [-v vertical_speed] [--] [FILES...]\n" "\n" "Concatenate FILE(s), or standard input, to standard output.\n" "With no FILE, or when FILE is -, read standard input.\n" "\n" " -h : Horizontal rainbow frequency (default: 0.23)\n" " -v : Vertical rainbow frequency (default: 0.1)\n" " -f: Force color even when stdout is not a tty\n" " --version: Print version and exit\n" " --help: Show this message\n" "\n" "Examples:\n" " lolcat f - g Output f's contents, then stdin, then g's contents.\n" " lolcat Copy standard input to standard output.\n" " fortune | lolcat Display a rainbow cookie.\n" "\n" "Report lolcat bugs to \n" "lolcat home page: \n" "Original idea: \n"; #define ARRAY_SIZE(foo) (sizeof(foo)/sizeof(foo[0])) const char codes[] = {39,38,44,43,49,48,84,83,119,118,154,148,184,178,214,208,209,203,204,198,199,163,164,128,129,93,99,63,69,33}; void find_escape_sequences(int c, int *state){ if(c == '\033'){ /* Escape sequence YAY */ *state = 1; }else if(*state == 1){ if(('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) *state = 2; }else{ *state = 0; } } void usage(){ printf("Usage: lolcat [-h horizontal_speed] [-v vertical_speed] [--] [FILES...]\n"); exit(1); } void version(){ printf("lolcat version 0.1, (c) 2014 jaseg\n"); exit(0); } int main(int argc, char **argv){ char *default_argv[] = {"-"}; int cc=-1, i, l=0; wint_t c; int colors=1; double freq_h = 0.23, freq_v = 0.1; struct timeval tv; gettimeofday(&tv, NULL); double offx = (tv.tv_sec%300)/300.0; for(i=1;i