?? other.c.svn-base
字號:
/** C Implementation: other** Description:*** Author: MicroCai <microcai@sina.com>, (C) 2009** Copyright: See COPYING file that comes with this distribution**/#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <sys/types.h>#include <unistd.h>#include <sys/mman.h>#include <sys/socket.h>#include <netinet/in.h>#include <ctype.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <time.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include "other.h"/*****************************************************/static inline int stob( char*s ){ if ( strncmp( s, "yes", 3 ) ) return 0; else return 1;}static int PrintHelp( struct cmd_prog * porgs ){ long a = -1; puts( "*****************BRT(Bit Rapid Transit)***help*****************" ); while ( porgs[++a].progs ) { switch ( porgs[a].type ) { case BOOL_t: printf( "-%c --%s\t\t%s\n\n", porgs[a].prefix_s, porgs[a].prefix_l, porgs[a].discribe ); break; case BOOL_HAVE_APPEND: printf( "-%c --%s yes/no\t%s\n\n", porgs[a].prefix_s, porgs[a].prefix_l, porgs[a].discribe ); break; case IP_ADDRESS_V4: printf( "-%c --%s [ip]\t%s\n\n", porgs[a].prefix_s, porgs[a].prefix_l, porgs[a].discribe ); break; case STRING_t: case INT_t: printf( "-%c --%s ??\t%s\n\n", porgs[a].prefix_s, porgs[a].prefix_l, porgs[a].discribe ); } } puts( "*****************BRT(Bit Rapid Transit)***help*****************" ); return 1;}extern int GetConfigs( struct cmd_prog * porgs, long argc, char *argv[] , struct remain_args*rem ){ long i, a; int ptr=0; memset(rem,0,sizeof(struct remain_args)); for ( i = 1 ;i < argc;++i ) { if ( argv[i][0] == '-' ) { a = -1; if ( argv[i][1] == '-' ) { while ( porgs[++a].progs ) { if ( !strcmp( argv[i] + 2, porgs[a].prefix_l ) ) { switch ( porgs[a].type ) { case BOOL_t: *( int* )( porgs[a].progs ) = 1; break; case STRING_t: strncpy(( char* )( porgs[a].progs ) , argv[++i], 256 ); break; case INT_t: *( long* )( porgs[a].progs ) = atol( argv[++i] ); break; case IP_ADDRESS_V4: *( int* )( porgs[a].progs ) = inet_addr( argv[++i] ); break; case BOOL_HAVE_APPEND: *( int* )( porgs[a].progs ) = stob( argv[++i] ); break; } break; } } if ( strncmp( "--help", argv[i], 6 ) == 0 ) return PrintHelp( porgs ); } else { while ( porgs[++a].progs ) { if ( argv[i][1] == porgs[a].prefix_s ) { switch ( porgs[a].type ) { case BOOL_t: *( int* )( porgs[a].progs ) = 1; *( argv[i--]++ ) = '-'; break; case STRING_t: strncpy(( char* )( porgs[a].progs ) , argv[i+1], 256 ); break; case INT_t: *( long* )( porgs[a].progs ) = atol( argv[i+1] ); break; case IP_ADDRESS_V4: *( long* )( porgs[a].progs ) = inet_addr( argv[i+1] ); break; case BOOL_HAVE_APPEND: *( int* )( porgs[a].progs ) = stob( argv[i+1] ); break; } break; } } } } else { int l=strlen(argv[i]); memcpy(rem->strs + ptr, argv[i] ,l); rem->argv[rem->argc++]=rem->strs+ptr; ptr+=l+1; } } return 0;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -