/* Logo dynamique WeBash * Par Alnotz ! * Version 1.2 (31/17/2020) */ /* _______________________________ /._____________________. ._. ._.\ / |_____________________| |_| |_| \ /___________________________________\ | | | _____ _____ | | / / / / | | _____/ /____/ /____ | __ __ __ _ ___ | / / | \ \ / / / / | | \\ | /____ _____ _____/ | \ \ / / / / | | || | | / / / / | \ \ / / / / ___ | |__// ___ ___ |__ | _____/ /____/ /____ | \ \ / /\ / / /___\ | | \\ ___\ / | \ | / / | \ \/ /\ \/ / | | | || / | `--, | | | /____ _____ _____/ | \_\/ \_\/ \___/ |_|__// \___| ___/ | | | / / / / | | /____/ /____/ | | | \ / \_________________________________/ */ /* g++ -Wall -Wextra -c WeBashLogo.cpp && g++ -Wall -Wextra WeBashLogo.o -o WeBashLogo */ #include //I/O en C #include //I/O en C++. #include //Caractères C. #include //Caractères C++. #include //Fonctions complémentaires en C. #include //Non standard en C de GNU pour 'usleep()'. #include //Non standard en C de GNU pour 'nanousleep()'. /* En ce qui concerne les dimensions des symboles et lettres. */ #define LOGO_LIGNES 19 #define LOGO_COLONNES 80 #define LETTRES_LIGNES 19 #define LETTRES_COLONNES 23 #define SORTIE_LIGNES 19 #define SORTIE_COLONNES 100 /* Temps de pause (microsecondes). */ #define TEMPS_L 800000 #define TEMPS_C 200000 #define TEMPS_TC 50000 /* Fonction d'aide. */ void help_info(char *commName) { printf( "Aide pour %s :\n\ Commandes : %s [-h | --help | -v | --verbose] [SYMBOLE]\n\n\ -h --help\t\tInformation sur les commandes.\n\n\ -v --verbose\t\tMode bavard pour les tests. Ajouter une valeur\ SYMBOLE affiche le symbole correspondant.\n\n\ SYMBOLE\t\tUne des valeurs de 1 à 6 pour les 6 lettres de WeBash\ ou 0 pour le logo initial ou encore N pour une fenêtre sans croisillon.\n", commName,commName); } /* Le logo seul. */ char logo0[LOGO_LIGNES][LOGO_COLONNES] = { " _______________________________ \n", " /._____________________. ._. ._.\\ \n", " / |_____________________| |_| |_| \\ \n", "/___________________________________\\\n", "| |\n", "|\x1b[0;31;40m _____ _____ \x1b[0m|\n", "|\x1b[0;31;40m / / / / \x1b[0m|\n", "|\x1b[0;31;40m _____/ /____/ /____ \x1b[0m|\n", "|\x1b[0;31;40m / / \x1b[0m|\n", "|\x1b[0;31;40m /____ _____ _____/ \x1b[0m|\n", "|\x1b[0;31;40m / / / / \x1b[0m|\n", "|\x1b[0;31;40m _____/ /____/ /____ \x1b[0m|\n", "|\x1b[0;31;40m / / \x1b[0m|\n", "|\x1b[0;31;40m /____ _____ _____/ \x1b[0m|\n", "|\x1b[0;31;40m / / / / \x1b[0m|\n", "|\x1b[0;31;40m /____/ /____/ \x1b[0m| \x1b[5;39;40m######\x1b[0;0;0m\n", "|\x1b[0;31;40m \x1b[0m|\n", "\\ /\n", " \\_________________________________/ \n" }; /* Le logo vide. */ char logoN[LOGO_LIGNES][LOGO_COLONNES] = { " _______________________________ \n", " /._____________________. ._. ._.\\ \n", " / |_____________________| |_| |_| \\ \n", "/___________________________________\\\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "| |\n", "\\ \x1b[5;31;40m#############################\x1b[0m /\n", " \\_________________________________/ \n" }; /* La lettre 'W'. */ char logo1[LETTRES_LIGNES][LETTRES_COLONNES] = { "\n", "\n", "\n", "\n", "\n", "\n", "\n", "__ __ __\n", "\\ \\ / / / /\n", " \\ \\ / / / / \n", " \\ \\ / / / / \n", " \\ \\ / /\\ / / \n", " \\ \\/ /\\ \\/ / \n", " \\_\\/ \\_\\/ \n", "\n", "\n", "\n", "\n", "\n" }; /* La lettre 'e'. */ char logo2[LETTRES_LIGNES+4][LETTRES_COLONNES+4] = { "\n", "\n", "\n", "\n", "\n", "\n", "\n", "__ __ __\n", "\\ \\ / / / /\n", " \\ \\ / / / / \n", " \\ \\ / / / / ___ \n", " \\ \\ / /\\ / / /___\\\n", " \\ \\/ /\\ \\/ / | \n", " \\_\\/ \\_\\/ \\___/\n", "\n", "\n", "\n", "\n", "\n" }; /* La lettre 'B'. */ char logo3[LETTRES_LIGNES][LETTRES_COLONNES] = { "\n", "\n", "\n", "\n", "\n", "\n", "\n", " _ ___ \n", "| | \\\\\n", "| | ||\n", "| |__//\n", "| | \\\\\n", "| | ||\n", "|_|__//\n", "\n", "\n", "\n", "\n", "\n" }; /* La lettre 'a'. */ char logo4[LETTRES_LIGNES][LETTRES_COLONNES] = { "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " ___ \n", " ___\\\n", "/ |\n", "\\___|\n", "\n", "\n", "\n", "\n", "\n" }; /* La lettre 's'. */ char logo5[LETTRES_LIGNES][LETTRES_COLONNES] = { "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " ___\n", "/ \n", "`--,\n", "___/\n", "\n", "\n", "\n", "\n", "\n" }; /* La lettre 'h'. */ char logo6[LETTRES_LIGNES][LETTRES_COLONNES] = { "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", "| \n", "|__ \n", "| \\\n", "| |\n", "| |\n", "\n", "\n", "\n", "\n", "\n" }; void essai(int argc, char **argv, char **envp) { std::cout << "=================\n===== Tests =====\n=================" << std::endl; printf("Hello C world !\n"); std::cout << "Hello C++ World too !" << std::endl; std::cout << "Name : " << argv[0] << std::endl; std::cout << "Arg. count : " << argc << std::endl; std::cout << "Argument : "; if(argc <= 1){std::cout << "Null";}else{std::cout << argv[argc-1];} std::cout << std::endl; std::cout << "\t== Terminal ==" << std::endl; if(isatty(0)) { std::cout << "Current teletyper : " << ttyname(0) << std::endl; } else { std::cout << "Without teletyper." << std::endl; } /* Variables d'environnement. */ int i = 0; std::cout << "\t== Environnement envp ==" << std::endl; for(i=0;envp[i]!=NULL;i++){std::cout << envp[i] << std::endl;} std::cout << "\t== Environnement getenv() ==" << std::endl; char *environ = getenv(""); std::cout << environ << std::endl; std::cout << "\tLogo :" << std::endl; for(i=0;i 1) { if((!strcmp(argv[1],"-h") | !strcmp(argv[1],"--help"))) { help_info(argv[0]); exit(EXIT_SUCCESS); } else if((!strcmp(argv[1],"-v") | !strcmp(argv[1],"--verbose"))) { essai(argc, argv, envp); exit(EXIT_SUCCESS); } else { std::cerr << argv[0] << " : Mauvaise commande. Taper \'"; std::cerr << argv[0] << " -h\' pour l'aide." << std::endl; exit(EXIT_FAILURE); } } else//Le cas normal où WeBash est animé. { std::cerr << "\x07"; logoAnimation(); } return EXIT_SUCCESS; }