Changeset 54e90cc in mainline


Ignore:
Timestamp:
2011-03-23T22:51:39Z (13 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1ff896e
Parents:
fca78d4
Message:

Fix handling of command-line arguments in ext2info

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/ext2info/ext2info.c

    rfca78d4 r54e90cc  
    4949#include <errno.h>
    5050#include <libext2.h>
     51#include <assert.h>
    5152
    5253#define NAME    "ext2info"
     
    9697        --argc; ++argv;
    9798       
    98         if (str_cmp(*argv, "--strict-check") == 0) {
     99        if (argc > 0 && str_cmp(*argv, "--strict-check") == 0) {
    99100                --argc; ++argv;
    100101                arg_flags |= ARG_STRICT_CHECK;
    101102        }
    102103       
    103         if (str_cmp(*argv, "--superblock") == 0) {
     104        if (argc > 0 && str_cmp(*argv, "--superblock") == 0) {
    104105                --argc; ++argv;
    105106                arg_flags |= ARG_SUPERBLOCK;
    106107        }
    107108       
    108         if (str_cmp(*argv, "--block-groups") == 0) {
     109        if (argc > 0 && str_cmp(*argv, "--block-groups") == 0) {
    109110                --argc; ++argv;
    110111                arg_flags |= ARG_BLOCK_GROUPS;
    111112        }
    112113       
    113         if (str_cmp(*argv, "--inode") == 0) {
     114        if (argc > 0 && str_cmp(*argv, "--inode") == 0) {
    114115                --argc; ++argv;
    115116                if (argc == 0) {
     
    128129                --argc; ++argv;
    129130               
    130                 if (str_cmp(*argv, "--inode-data") == 0) {
     131                if (argc > 0 && str_cmp(*argv, "--inode-data") == 0) {
    131132                        --argc; ++argv;
    132133                        if (argc == 0) {
     
    146147                }
    147148               
    148                 if (str_cmp(*argv, "--list") == 0) {
     149                if (argc > 0 && str_cmp(*argv, "--list") == 0) {
    149150                        --argc; ++argv;
    150151                        arg_flags |= ARG_INODE_LIST;
     
    152153        }
    153154
    154         if (argc != 1) {
     155        if (argc < 1) {
     156                printf(NAME ": Error, argument missing.\n");
     157                syntax_print();
     158                return 1;
     159        }
     160        else if (argc > 1) {
    155161                printf(NAME ": Error, unexpected argument.\n");
    156162                syntax_print();
    157163                return 1;
    158164        }
     165        assert(argc == 1);
    159166       
    160167        // Display common things by default
Note: See TracChangeset for help on using the changeset viewer.