Ajout : implémentation C de mon programme separator
This commit is contained in:
parent
dbf295355d
commit
e178f4d504
1 changed files with 67 additions and 0 deletions
67
src/separator.c
Normal file
67
src/separator.c
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define println() printf("\n")
|
||||||
|
#define printsep(sep) printf("%s\n", sep)
|
||||||
|
|
||||||
|
static char *separation_character_line(const char *separation_character, const unsigned short terminal_width) {
|
||||||
|
const unsigned short line_length = terminal_width / 3;
|
||||||
|
const size_t character_length = strlen(separation_character);
|
||||||
|
|
||||||
|
char *line = malloc(line_length * sizeof(char));
|
||||||
|
|
||||||
|
while (strlen(line) + character_length <= line_length) {
|
||||||
|
strncat(line, separation_character, character_length);
|
||||||
|
}
|
||||||
|
|
||||||
|
return line;
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned short terminal_width() {
|
||||||
|
struct winsize w;
|
||||||
|
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
|
||||||
|
return w.ws_col;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
// Parsing arguments
|
||||||
|
char *name;
|
||||||
|
char *separation_character;
|
||||||
|
|
||||||
|
if (argc >= 2) {
|
||||||
|
name = argv[1];
|
||||||
|
} else {
|
||||||
|
name = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc >= 3) {
|
||||||
|
separation_character = argv[2];
|
||||||
|
} else {
|
||||||
|
separation_character = "=";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Creating a /3 terminal size character line
|
||||||
|
char *separation_line = separation_character_line(separation_character, terminal_width());
|
||||||
|
|
||||||
|
// Printing the separator
|
||||||
|
println();
|
||||||
|
|
||||||
|
printsep(separation_line);
|
||||||
|
|
||||||
|
if (name != NULL) {
|
||||||
|
printf("\t%s\n", name);
|
||||||
|
} else {
|
||||||
|
println();
|
||||||
|
}
|
||||||
|
|
||||||
|
printsep(separation_line);
|
||||||
|
|
||||||
|
// Freeing the created character line
|
||||||
|
free(separation_line);
|
||||||
|
|
||||||
|
// Returning with success
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
Loading…
Reference in a new issue