pride.c : Cleaned up the options, added --size option. makefile : Changed make test.

This commit is contained in:
Felizitas 2020-11-20 16:25:04 +01:00
parent f198af2774
commit 620f555019
2 changed files with 60 additions and 22 deletions

View file

@ -18,18 +18,11 @@ $(NAME): pride.o
test: $(NAME)
@./$(NAME)
@./$(NAME) pride
@./$(NAME) philly
@./$(NAME) pride-7
@./$(NAME) harvey-milk
@./$(NAME) black-trans
@./$(NAME) trans
@./$(NAME) lesbian
@./$(NAME) nonbinary
@./$(NAME) genderqueer
@./$(NAME) asexual
@./$(NAME) test
@./$(NAME) --list
@./$(NAME) --show
@./$(NAME) --help
@./$(NAME) -s 4 test
clean:
rm *.o

69
pride.c
View file

@ -449,30 +449,75 @@ void flag(flag_t *flag)
return;
}
/* show available flags with name and description*/
void option_show()
{
printf("Available flags:\n");
for(int i = 0; flags[i]!=NULL; i++){
printf(" %s\n", flags[i]->name);
flag_sized(flags[i], 9);
}
exit(EXIT_SUCCESS);
return;
}
/* list available flags */
void option_list()
{
for(int i = 0; flags[i]!=NULL; i++){
printf(" %s\n", flags[i]->name);
}
exit(EXIT_SUCCESS);
return;
}
void option_help()
{
printf("pride\n\tPrints pride flags.\n\n");
printf("Format: pride [options] FLAG\n\n");
printf("Options:\n");
printf("\t--help -h : Display this message.\n");
printf("\t--list : Show a list of the available flags.\n");
printf("\t--show : Like --list, but also displays the flags alongside their names.\n");
printf("\t--size -s : Adjusts the size of the flag in lines. Default is 12.\n");
printf("\t example: pride -s 10 lesbian\n");
exit(EXIT_SUCCESS);
return;
}
int main(int argc, char *argv[])
{
if(argc >= 2){
const int max_option_length = 30;
int size = 12; /* size of the flag, defaults to 12 */
for(int arg = 1; arg <= argc; arg++){
if(!strncmp("--list",argv[arg],max_option_length)){
/* list available flags */
for(int i = 0; flags[i]!=NULL; i++){
printf(" %s\n", flags[i]->name);
}
exit(EXIT_SUCCESS);
option_list();
}else if(!strncmp("--show",argv[arg],max_option_length)){
/* show available flags with name and description*/
for(int i = 0; flags[i]!=NULL; i++){
printf(" %s\n", flags[i]->name);
flag(flags[i]);
option_show();
}else if(!strncmp("-h",argv[arg],max_option_length)||
!strncmp("--help",argv[arg],max_option_length)){
option_help();
}else if(!strncmp("-s",argv[arg],max_option_length)||
!strncmp("--size",argv[arg],max_option_length)){
/* --size, -s : Change the size of the flag in lines.*/
if((arg + 1) <= argc){
arg++;
size = atoi(argv[arg]);
if(size <= 0){
exit(EXIT_FAILURE);
}
continue;
}
exit(EXIT_SUCCESS);
}else{
/* search for flag */
for(int i = 0; flags[i]!=NULL; i++){
if(!strncmp(flags[i]->name,argv[arg],max_option_length)){
flag(flags[i]);
flag_sized(flags[i], size);
exit(EXIT_SUCCESS);
}
}