Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 229d114e in mainline


Ignore:
Timestamp:
2018-11-30T04:42:42Z (19 months ago)
Author:
Matthieu Riolo <matthieu.riolo@…>
Branches:
master
Children:
598e3a7
Parents:
55e35a22
Message:

correcting argument handling in cmd alias

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/bdsh/cmds/modules/alias/alias.c

    r55e35a22 r229d114e  
    3838
    3939
    40 static int print_alias(const char* name)
     40static bool print_alias(const char* name)
    4141{
    4242        odlink_t *alias_link = odict_find_eq(&alias_dict, (void*)name, NULL);
     
    4444                alias_t* data = odict_get_instance(alias_link, alias_t, odict);
    4545                printf(alias_format, data->name, data->value);
    46                 return CMD_SUCCESS;
     46                return true;
    4747        }
    4848
     
    5050
    5151        printf("%s: No alias with the name '%s' exists\n", cmdname, name);
    52         return CMD_FAILURE;
     52        return false;
    5353}
    5454
     
    9898                list_aliases();
    9999                return CMD_SUCCESS;
    100         }else if (argv[2] == NULL && str_chr(argv[1], '=') == NULL) {
    101                 return print_alias(argv[1]);
    102100        }
    103        
    104         //concat all it together
    105         char* str = (char*)malloc(INPUT_MAX * sizeof(char));
    106         str[0] = '\0';
     101
    107102
    108103        size_t i;
    109104        for (i = 1; argv[i] != NULL; i++) {
    110                 str_append(str, INPUT_MAX - 1, argv[i]);
     105                char* pos;
     106                if ((pos = str_chr(argv[i], '=')) != NULL) {
     107                        argv[i][pos - argv[i]] = '\0';
     108                        set_alias(argv[i], pos + 1);
     109                }else {
     110                        if(!print_alias(argv[i])) {
     111                                return CMD_FAILURE;
     112                        }
     113                }
    111114        }
    112 
    113         //split input
    114         char* pos = str_chr(str, '=');
    115         if(pos == NULL) {
    116                 printf("%s: bad formatted input\n", cmdname);
    117                 return CMD_FAILURE;
    118         }
    119 
    120 
    121         str[pos - str] = '\0';
    122         set_alias(str, pos + 1);
    123 
    124         free(str);
     115       
    125116        return CMD_SUCCESS;
    126117}
Note: See TracChangeset for help on using the changeset viewer.