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

📄 options.c

📁 harvest是一个下载html网页得机器人
💻 C
字号:
/* * Copyright (c) 1995-2000, Index Data * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * * $Log: options.c,v $ * Revision 1.8  2000/02/29 13:44:55  adam * Check for config.h (currently not generated). * * Revision 1.7  1999/11/30 13:47:12  adam * Improved installation. Moved header files to include/yaz. * * Revision 1.6  1997/09/01 08:54:13  adam * New windows NT/95 port using MSV5.0. Made prefix query handling * thread safe. The function options ignores empty arguments when met. * * Revision 1.5  1995/12/06 13:00:19  adam * Minus alone not treated as an option. * * Revision 1.4  1995/09/29  17:12:35  quinn * Smallish * * Revision 1.3  1995/09/27  15:03:03  quinn * Modified function heads & prototypes. * * Revision 1.2  1995/05/16  08:51:13  quinn * License, documentation, and memory fixes * * Revision 1.1  1995/03/27  08:35:18  quinn * Created util library * Added memory debugging module. Imported options-manager * * Revision 1.2  1994/10/04  17:47:10  adam * Function options now returns arg with error option. * * Revision 1.1  1994/08/16  15:57:22  adam * The first utility modules. * */#if HAVE_CONFIG_H#include <config.h>#endif#include <stdlib.h>#include <yaz/options.h>static int arg_no = 1;static int arg_off = 0;int options (const char *desc, char **argv, int argc, char **arg){    int ch, i = 0;        if (arg_no >= argc)        return -2;    if (arg_off == 0)    {        while (argv[arg_no][0] == '\0')        {            arg_no++;            if (arg_no >= argc)                return -2;        }        if (argv[arg_no][0] != '-' || argv[arg_no][1] == '\0')        {            *arg = argv[arg_no++];            return 0;        }        arg_off++;    }    ch = argv[arg_no][arg_off++];    while (desc[i])    {        int desc_char = desc[i++];        int type = 0;        if (desc[i] == ':')	{	/* string argument */            type = desc[i++];	}        if (desc_char == ch)	{ /* option with argument */            if (type)	    {                if (argv[arg_no][arg_off])		{                    *arg = argv[arg_no]+arg_off;                    arg_no++;                    arg_off =  0;		}                else		{                    arg_no++;                    arg_off = 0;                    if (arg_no < argc)                        *arg = argv[arg_no++];                    else                        *arg = "";		}	    }            else /* option with no argument */	    {                if (argv[arg_no][arg_off])                    arg_off++;                else		{                    arg_off = 0;                    arg_no++;		}	    }            return ch;	}		    }    *arg = argv[arg_no]+arg_off-1;    arg_no = arg_no + 1;    arg_off = 0;    return -1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -