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