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

Changeset 02c6dcc in mainline


Ignore:
Timestamp:
2018-11-30T05:49:20Z (20 months ago)
Author:
Matthieu Riolo <matthieu.riolo@…>
Branches:
master
Children:
d1744fd
Parents:
08bd04c
Message:

correcting help message; implementing -a argument

File:
1 edited

Legend:

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

    r08bd04c r02c6dcc  
    99#include <stdio.h>
    1010#include <stdlib.h>
     11#include <str.h>
    1112#include <adt/odict.h>
    1213
     
    2223static const char *cmdname = "unalias";
    2324
     25
     26
     27static void free_alias(odlink_t *alias_link)
     28{
     29        alias_t *data = odict_get_instance(alias_link, alias_t, odict);
     30        odict_remove(alias_link);
     31
     32        free(data->name);
     33        free(data->value);
     34        free(data);
     35}
     36
     37
    2438/* Dispays help for unalias in various levels */
    2539void help_cmd_unalias(unsigned int level)
    2640{
    27         printf("This is the %s help for '%s'.\n",
    28                 level ? EXT_HELP : SHORT_HELP, cmdname);
     41        printf("`%s' removes an alias or all aliases with -a\n", cmdname);
    2942        return;
    3043}
     44
    3145
    3246/* Main entry point for unalias, accepts an array of arguments */
     
    3448{
    3549
     50        if(argv[1] == NULL) {
     51                help_cmd_unalias(HELP_LONG);
     52                return CMD_SUCCESS;
     53        }
     54
    3655        size_t i;
     56        odlink_t *alias_link;
    3757
    38         for(i = 1; argv[i] != NULL; i++) {
    39                 odlink_t *alias_link = odict_find_eq(&alias_dict, (void*)argv[i], NULL);
     58        for (i = 1; argv[i] != NULL; i++) {
     59                if (str_cmp(argv[i], "-a") == 0) {
     60                        alias_link = odict_first(&alias_dict);
     61                        while (alias_link != NULL) {
     62                                odlink_t *old_alias_link = alias_link;
     63                                alias_link = odict_next(old_alias_link, &alias_dict);
     64                                free_alias(old_alias_link);
     65                        }
    4066
    41                 if(alias_link == NULL) {
     67                        return CMD_SUCCESS;
     68                }
     69
     70
     71                alias_link = odict_find_eq(&alias_dict, (void*)argv[i], NULL);
     72
     73                if (alias_link == NULL) {
    4274                        printf("%s: No alias '%s' found\n", cmdname, argv[i]);
    4375                        return CMD_FAILURE;
    4476                }
    4577
    46                 alias_t *data = odict_get_instance(alias_link, alias_t, odict);
    47                 odict_remove(alias_link);
    48 
    49                 free(data->name);
    50                 free(data->value);
    51                 free(data);
     78                free_alias(alias_link);
    5279        }
    5380
Note: See TracChangeset for help on using the changeset viewer.