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

📄 m_argv.c

📁 The source code of Doom legacy for windows
💻 C
字号:
// Emacs style mode select   -*- C++ -*- //-----------------------------------------------------------------------------//// $Id: m_argv.c,v 1.3 2000/03/29 19:39:48 bpereira Exp $//// Copyright (C) 1993-1996 by id Software, Inc.// Portions Copyright (C) 1998-2000 by DooM Legacy Team.//// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.////// $Log: m_argv.c,v $// Revision 1.3  2000/03/29 19:39:48  bpereira// no message//// Revision 1.2  2000/02/27 00:42:10  hurdler// fix CR+LF problem//// Revision 1.1.1.1  2000/02/22 20:32:32  hurdler// Initial import into CVS (v1.29 pr3)////// DESCRIPTION://////-----------------------------------------------------------------------------#include <string.h>#include "doomdef.h"#include "command.h"int             myargc;char**          myargv;static int      found;//// M_CheckParm// Checks for the given parameter// in the program's command line arguments.// Returns the argument number (1 to argc-1)// or 0 if not presentint M_CheckParm (char *check){    int         i;    for (i = 1;i<myargc;i++)    {        if ( !strcasecmp(check, myargv[i]) )        {            found=i;            return i;        }    }    found=0;    return 0;}// return true if there is available parametersboolean M_IsNextParm(void){    if(found>0 && found+1<myargc && myargv[found+1][0] != '-' && myargv[found+1][0] != '+')        return true;    return false;}// return the next parameter after a M_CheckParm// NULL if not found use M_IsNext to find if there is a parameterchar *M_GetNextParm(void){    if(M_IsNextParm())    {        found++;        return myargv[found];    }    return NULL;}// push all parameters begining by '+'void M_PushSpecialParameters( void ){    int     i;    char    s[256];    boolean onetime=false;    for (i = 1;i<myargc;i++)    {        if ( myargv[i][0]=='+' )        {            strcpy(s,&myargv[i][1]);            i++;            // get the parameter of the command too            for(;i<myargc && myargv[i][0]!='+' && myargv[i][0]!='-' ;i++)            {                strcat(s," ");                if(!onetime) { strcat(s,"\"");onetime=true; }                strcat(s,myargv[i]);            }            if( onetime )    { strcat(s,"\"");onetime=false; }            strcat(s,"\n");            // push it            COM_BufAddText (s);            i--;        }    }}//// Find a Response File//void M_FindResponseFile (void){    int             i;#define MAXARGVS        256    for (i = 1;i < myargc;i++)        if (myargv[i][0] == '@')        {            FILE *          handle;            int             size;            int             k;            int             index;            int             indexinfile;            byte    *infile;            char    *file;            char    *moreargs[20];            char    *firstargv;            // READ THE RESPONSE FILE INTO MEMORY            handle = fopen (&myargv[i][1],"rb");            if (!handle)            {                I_Error ("\nResponse file %s not found !",&myargv[i][1]);                exit(1);            }            CONS_Printf("Found response file %s!\n",&myargv[i][1]);            fseek (handle,0,SEEK_END);            size = ftell(handle);            fseek (handle,0,SEEK_SET);            file = malloc (size);            fread (file,size,1,handle);            fclose (handle);            // KEEP ALL CMDLINE ARGS FOLLOWING @RESPONSEFILE ARG            for (index = 0,k = i+1; k < myargc; k++)                moreargs[index++] = myargv[k];            firstargv = myargv[0];            myargv = malloc(sizeof(char *)*MAXARGVS);            memset(myargv,0,sizeof(char *)*MAXARGVS);            myargv[0] = firstargv;            infile = file;            indexinfile = k = 0;            indexinfile++;  // SKIP PAST ARGV[0] (KEEP IT)            do            {                if ( *(infile+k) == '"' )       // strip encllosing double-quote                    k++;                myargv[indexinfile++] = infile + k;                while ( (k < size) &&                        ( (*(infile+k)> ' ') /*&& (*(infile+k)<='z')*/ ) )                    k++;                if ( *(infile+k-1) == '"' )     // strip ending double-quote                    k--;                *(infile+k) = 0;                while(k < size &&                      ((*(infile+k)<= ' ') /*|| (*(infile+k)>'z')*/))                    k++;            } while(k < size);            for (k = 0;k < index;k++)                myargv[indexinfile++] = moreargs[k];            myargc = indexinfile;            // DISPLAY ARGS            CONS_Printf("%d command-line args:\n",myargc);            for (k=1;k<myargc;k++)                CONS_Printf("%s\n",myargv[k]);            break;        }}

⌨️ 快捷键说明

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