⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 other.c.svn-base

📁 Linux下写的 socket 文件传输送程序 服务端和客户端完美统一! 命令行参数分析的完美方式!
💻 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 + -