source: mainline/uspace/srv/net/app/parse.c@ 01a9ef5

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 01a9ef5 was 21580dd, checked in by Lukas Mejdrech <lukas@…>, 15 years ago

Merged with network branch svn://svn.helenos.org/HelenOS/branches/network revision 4759; ipc_share_* and ipc_data_* changed to async_*; client connection in module.c returns on IPC_M_PHONE_HUNGUP; * Qemu scripts renamed to net-qe.*; (the dp8390 does not respond)

  • Property mode set to 100644
File size: 3.2 KB
Line 
1/*
2 * Copyright (c) 2009 Lukas Mejdrech
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup net_app
30 * @{
31 */
32
33/** @file
34 * Generic application parsing functions implementation.
35 */
36
37#include <stdio.h>
38#include <string.h>
39
40#include "../err.h"
41
42#include "parse.h"
43
44int parse_parameter_int( int argc, char ** argv, int * index, int * value, const char * name, int offset ){
45 char * rest;
46
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 );
52 }else{
53 fprintf( stderr, "Command line error: missing %s\n", name );
54 return EINVAL;
55 }
56 if( rest && ( * rest )){
57 fprintf( stderr, "Command line error: %s unrecognized (%d: %s)\n", name, * index, argv[ * index ] );
58 return EINVAL;
59 }
60 return EOK;
61}
62
63int 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 ];
69 }else{
70 fprintf( stderr, "Command line error: missing %s\n", name );
71 return EINVAL;
72 }
73 return EOK;
74}
75
76int 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;
86 }
87 return EOK;
88}
89
90void print_unrecognized( int index, const char * parameter ){
91 fprintf( stderr, "Command line error - unrecognized parameter (%d: %s)\n", index, parameter );
92}
93
94/** @}
95 */
Note: See TracBrowser for help on using the repository browser.