Skip to content

Commit 9a9a4fa

Browse files
committed
project working at it's finest
1 parent ffe0eaa commit 9a9a4fa

File tree

4 files changed

+26
-7
lines changed

4 files changed

+26
-7
lines changed

linked-list.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ int create_node_with_help_and_action(node_string* tmp,char* self,char* short_sel
129129
node_string* get_node_by_self(char* self,linked_list_string* mylist){
130130
node_string* tmp = mylist->head;
131131
while(tmp->next != mylist->head){
132-
if(str_cmp(tmp->self,self) == 1){
133-
printf("i have found it\n");
132+
if((str_cmp(tmp->self,self) == 1) || (str_cmp(tmp->short_self,self) == 1)){
133+
//printf("i have found it\n");
134134
return tmp;
135135
}
136136
tmp = tmp->next;

linked-list.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ typedef struct node_string{
3434
void (*action_char)(char*);
3535
void (*action_bool)(void);
3636
bool status;
37+
int int_value;
38+
char* string;
39+
bool bool_value;
3740
int index;
3841
action_type type;
3942
}node_string;

main-test-parser.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ int main(int argc,char**argv){
3333
add_argument_with_help_and_action("add","a",0,INT,"this is for adding",&add,NULL,NULL,my_arguments);
3434
add_argument_with_help_and_action("version","v",0,BOOL,"this is for version",NULL,NULL,&version,my_arguments);
3535
add_argument_with_help_and_action("name","n",0,CHAR,"this is for printing name",NULL,&fun,NULL,my_arguments);
36-
manage_arguments(argc,argv,my_arguments);
36+
if(manage_arguments(argc,argv,my_arguments) != 0){
37+
return 1;
38+
}
39+
3740

3841
}

parser.c

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,29 @@ int manage_arguments(int argc,char** argv,linked_list_string* my_arguments){
4343
print_linked_list_string(my_arguments);
4444
return 1;
4545
}
46+
int argument_number_with_parameter=0;
4647
node_string* tmp = my_arguments->head;
4748
for(int i =0;i<(my_arguments->len);i++){
4849
for(int j=0;j<argc;j++){
4950
//printf("--> %s\n",argv[i]+2);
50-
if(str_cmp((argv[j])+2,tmp->self)==1){
51+
if((str_cmp((argv[j])+2,tmp->self)==1) || (str_cmp((argv[j])+1,tmp->short_self)==1) ){
5152
//printf("--> %s\n",(argv[j])+2);
5253
tmp->index = j;
5354
tmp->status = True;
55+
if((tmp->type == INT) || tmp->type == CHAR)
56+
argument_number_with_parameter = argument_number_with_parameter +2;
57+
else
58+
argument_number_with_parameter = argument_number_with_parameter +1;
5459
//printf("hell yeah\n");
5560
}
5661
}
5762
tmp = tmp->next;
5863
}
64+
if(argc != (argument_number_with_parameter+1)){
65+
printf("\t some arguments need paramaters \n");
66+
print_linked_list_string(my_arguments);
67+
return 1;
68+
}
5969
tmp = my_arguments->head;
6070
for(int i=0;i<my_arguments->len;i++){
6171
if(tmp->required == 1){
@@ -73,15 +83,18 @@ int manage_arguments(int argc,char** argv,linked_list_string* my_arguments){
7383
//printf("index : %d \n",tmp->index);
7484
if(((tmp->index) != 0) && ((tmp->data_fullness) == 4)){
7585
if(tmp->type == INT){
76-
(*(tmp->action_int))(((string_to_int(argv[(tmp->index)+1]))));
86+
(*(tmp->action_int))(((string_to_int(argv[(tmp->index)+1]))));
87+
tmp->int_value = string_to_int(argv[(tmp->index)+1]);
7788
//printf("hooyah : %s\n",(argv[(tmp->index)+1]));
7889
}
7990
if(tmp->type == CHAR){
80-
(*(tmp->action_char))(argv[(tmp->index)+1]);
91+
(*(tmp->action_char))(argv[(tmp->index)+1]);
92+
tmp->string = argv[(tmp->index)+1];
8193
//printf("hooyah : %s\n",(argv[(tmp->index)+1]));
8294
}
8395
if(tmp->type == BOOL){
84-
(*(tmp->action_bool))();
96+
(*(tmp->action_bool))();
97+
tmp->bool_value = True;
8598
//printf("hooyah :\n");
8699
}
87100
}

0 commit comments

Comments
 (0)