Changeset 858fc90 in mainline for uspace/srv/net/app/parse.c


Ignore:
Timestamp:
2010-03-15T19:35:25Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
6092b56e
Parents:
92307f1 (diff), 4684368 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from bzr://bzr.helenos.org/head.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/app/parse.c

    r92307f1 r858fc90  
    3838#include <string.h>
    3939
     40#include "../include/socket.h"
     41
    4042#include "../err.h"
    4143
    4244#include "parse.h"
    4345
    44 int parse_parameter_int( int argc, char ** argv, int * index, int * value, const char * name, int offset ){
    45         char *  rest;
     46int parse_address_family(const char * name){
     47        if(str_lcmp(name, "AF_INET", 7) == 0){
     48                return AF_INET;
     49        }else if(str_lcmp(name, "AF_INET6", 8) == 0){
     50                return AF_INET6;
     51        }
     52        return EAFNOSUPPORT;
     53}
    4654
    47         if( offset ){
    48                 * value = strtol( argv[ * index ] + offset, & rest, 10 );
    49         }else if(( * index ) + 1 < argc ){
    50                 ++ ( * index );
    51                 * value = strtol( argv[ * index ], & rest, 10 );
     55int parse_parameter_int(int argc, char ** argv, int * index, int * value, const char * name, int offset){
     56        char * rest;
     57
     58        if(offset){
     59                *value = strtol(argv[*index] + offset, &rest, 10);
     60        }else if((*index) + 1 < argc){
     61                ++ (*index);
     62                *value = strtol(argv[*index], &rest, 10);
    5263        }else{
    53                 fprintf( stderr, "Command line error: missing %s\n", name );
     64                fprintf(stderr, "Command line error: missing %s\n", name);
    5465                return EINVAL;
    5566        }
    56         if( rest && ( * rest )){
    57                 fprintf( stderr, "Command line error: %s unrecognized (%d: %s)\n", name, * index, argv[ * index ] );
     67        if(rest && (*rest)){
     68                fprintf(stderr, "Command line error: %s unrecognized (%d: %s)\n", name, * index, argv[*index]);
    5869                return EINVAL;
    5970        }
     
    6172}
    6273
    63 int parse_parameter_string( int argc, char ** argv, int * index, char ** value, const char * name, int offset ){
    64         if( offset ){
    65                 * value = argv[ * index ] + offset;
    66         }else if(( * index ) + 1 < argc ){
    67                 ++ ( * index );
    68                 * value = argv[ * index ];
     74int parse_parameter_name_int(int argc, char ** argv, int * index, int * value, const char * name, int offset, int (*parse_value)(const char * value)){
     75        ERROR_DECLARE;
     76
     77        char * parameter;
     78
     79        ERROR_PROPAGATE(parse_parameter_string(argc, argv, index, &parameter, name, offset));
     80        *value = (*parse_value)(parameter);
     81        if((*value) == ENOENT){
     82                fprintf(stderr, "Command line error: unrecognized %s value (%d: %s)\n", name, * index, parameter);
     83                return ENOENT;
     84        }
     85        return EOK;
     86}
     87
     88int parse_parameter_string(int argc, char ** argv, int * index, char ** value, const char * name, int offset){
     89        if(offset){
     90                *value = argv[*index] + offset;
     91        }else if((*index) + 1 < argc){
     92                ++ (*index);
     93                *value = argv[*index];
    6994        }else{
    70                 fprintf( stderr, "Command line error: missing %s\n", name );
     95                fprintf(stderr, "Command line error: missing %s\n", name);
    7196                return EINVAL;
    7297        }
     
    7499}
    75100
    76 int parse_parameter_name_int( int argc, char ** argv, int * index, int * value, const char * name, int offset, int ( * parse_value )( const char * value )){
    77         ERROR_DECLARE;
    78 
    79         char *  parameter;
    80 
    81         ERROR_PROPAGATE( parse_parameter_string( argc, argv, index, & parameter, name, offset ));
    82         * value = ( * parse_value )( parameter );
    83         if(( * value ) == ENOENT ){
    84                 fprintf( stderr, "Command line error: unrecognized %s value (%d: %s)\n", name, * index, parameter );
    85                 return ENOENT;
     101int parse_protocol_family(const char * name){
     102        if(str_lcmp(name, "PF_INET", 7) == 0){
     103                return PF_INET;
     104        }else if(str_lcmp(name, "PF_INET6", 8) == 0){
     105                return PF_INET6;
    86106        }
    87         return EOK;
     107        return EPFNOSUPPORT;
    88108}
    89109
    90 void print_unrecognized( int index, const char * parameter ){
    91         fprintf( stderr, "Command line error - unrecognized parameter (%d: %s)\n", index, parameter );
     110int parse_socket_type(const char * name){
     111        if(str_lcmp(name, "SOCK_DGRAM", 11) == 0){
     112                return SOCK_DGRAM;
     113        }else if(str_lcmp(name, "SOCK_STREAM", 12) == 0){
     114                return SOCK_STREAM;
     115        }
     116        return ESOCKTNOSUPPORT;
     117}
     118
     119void print_unrecognized(int index, const char * parameter){
     120        fprintf(stderr, "Command line error: unrecognized argument (%d: %s)\n", index, parameter);
    92121}
    93122
Note: See TracChangeset for help on using the changeset viewer.