Ignore:
Timestamp:
Mar 18, 2008, 9:36:56 PM (15 years ago)
Author:
Sam Hocevar
Message:
  • Get rid of ugly tabs and trailing spaces everywhere.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/imlib/wildargv.cpp

    r56 r124  
    11/*
    22 *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3  *%       Copyright (C) 1989, by WATCOM Systems Inc. All rights     %
    4  *%       reserved. No part of this software may be reproduced      %
    5  *%       in any form or by any means - graphic, electronic or      %
    6  *%       mechanical, including photocopying, recording, taping     %
    7  *%       or information storage and retrieval systems - except     %
    8  *%       with the written permission of WATCOM Systems Inc.        %
     3 *%      Copyright (C) 1989, by WATCOM Systems Inc. All rights     %
     4 *%      reserved. No part of this software may be reproduced        %
     5 *%      in any form or by any means - graphic, electronic or        %
     6 *%      mechanical, including photocopying, recording, taping     %
     7 *%      or information storage and retrieval systems - except     %
     8 *%      with the written permission of WATCOM Systems Inc.        %
    99 *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1010  WILDARGV - split DOS command line into individual arguments expanding
    11              those that contain ? or *.
     11         those that contain ? or *.
    1212  This module is a substitute for the "initargv" module contained in the
    1313  library.
    1414
    15   Modified:     By:             Reason:
    16   ---------     ---             -------
    17   23-aug-89     John Dahms      was ignoring files with Archive or
    18                                 read only attributes turned on. (Bug fix)
    19   15-sep-91     F.W.Crigger     Use _LpCmdLine, _LpPgmName, _argc, _argv,
    20                                 ___Argc, ___Argv
    21   02-nov-93     A.F.Scian       updated so that source will compile as C++
     15  Modified:    By:        Reason:
     16  ---------    ---        -------
     17  23-aug-89    John Dahms    was ignoring files with Archive or
     18                read only attributes turned on. (Bug fix)
     19  15-sep-91    F.W.Crigger    Use _LpCmdLine, _LpPgmName, _argc, _argv,
     20                  ___Argc, ___Argv
     21  02-nov-93    A.F.Scian    updated so that source will compile as C++
    2222*/
    2323#include <stdio.h>
     
    3232#endif
    3333
    34 extern  void    _Not_Enough_Memory();
    35 extern  char    *_LpCmdLine;
    36 extern  char    *_LpPgmName;
    37 extern  int     _argc;                  /* argument count  */
    38 extern  char  **_argv;                  /* argument vector */
    39 extern  int     ___Argc;                /* argument count */
    40 extern  char  **___Argv;                /* argument vector */
     34extern    void    _Not_Enough_Memory();
     35extern    char    *_LpCmdLine;
     36extern    char    *_LpPgmName;
     37extern    int    _argc;            /* argument count  */
     38extern    char  **_argv;            /* argument vector */
     39extern    int    ___Argc;        /* argument count */
     40extern    char  **___Argv;        /* argument vector */
    4141
    4242#ifdef __cplusplus
     
    6262static int _make_argv( char *p, char ***argv )
    6363{
    64     int                 argc;
    65     char                *start;
    66     char                *new_arg;
    67     char                wildcard;
    68     char                lastchar;
    69     DIR *               dir;
    70     struct dirent       *dirent;
    71     char                drive[_MAX_DRIVE];
    72     char                directory[_MAX_DIR];
    73     char                name[_MAX_FNAME];
    74     char                extin[_MAX_EXT];
    75     char                pathin[_MAX_PATH];
     64    int            argc;
     65    char        *start;
     66    char        *new_arg;
     67    char        wildcard;
     68    char        lastchar;
     69    DIR *        dir;
     70    struct dirent    *dirent;
     71    char        drive[_MAX_DRIVE];
     72    char        directory[_MAX_DIR];
     73    char        name[_MAX_FNAME];
     74    char        extin[_MAX_EXT];
     75    char        pathin[_MAX_PATH];
    7676
    7777    argc = 1;
    7878    for(;;) {
    79         while( *p == ' ' ) ++p; /* skip over blanks */
    80         if( *p == '\0' ) break;
    81         /* we are at the start of a parm */
    82         wildcard = 0;
    83         if( *p == '\"' ) {
    84             p++;
    85             new_arg = start = p;
    86             for(;;) {
    87                 /* end of parm: NULLCHAR or quote */
    88                 if( *p == '\"' ) break;
    89                 if( *p == '\0' ) break;
    90                 if( *p == '\\' ) {
    91                     if( p[1] == '\"'  ||  p[1] == '\\' )  ++p;
    92                 }
    93                 *new_arg++ = *p++;
    94             }
    95         } else {
    96             new_arg = start = p;
    97             for(;;) {
    98                 /* end of parm: NULLCHAR or blank */
    99                 if( *p == '\0' ) break;
    100                 if( *p == ' ' ) break;
    101                 if(( *p == '\\' )&&( p[1] == '\"' )) {
    102                     ++p;
    103                 } else if( *p == '?'  ||  *p == '*' ) {
    104                     wildcard = 1;
    105                 }
    106                 *new_arg++ = *p++;
    107             }
    108         }
    109         *argv = (char **) realloc( *argv, (argc+2) * sizeof( char * ) );
    110         if( *argv == NULL )  _Not_Enough_Memory();
    111         (*argv)[ argc ] = start;
    112         ++argc;
    113         lastchar = *p;
    114         *new_arg = '\0';
    115         ++p;
    116         if( wildcard ) {
    117             /* expand file names */
    118             dir = opendir( start );
    119             if( dir != NULL ) {
    120                 --argc;
    121                 _splitpath( start, drive, directory, name, extin );
    122                 for(;;) {
    123                     dirent = readdir( dir );
    124                     if( dirent == NULL ) break;
    125                     if( dirent->d_attr &
    126                       (_A_HIDDEN+_A_SYSTEM+_A_VOLID+_A_SUBDIR) ) continue;
    127                     _splitpath( dirent->d_name, NULL, NULL, name, extin );
    128                     _makepath( pathin, drive, directory, name, extin );
    129                     *argv = (char **) realloc( *argv, (argc+2) * sizeof( char * ) );
    130                     if( *argv == NULL )  _Not_Enough_Memory();
    131                     new_arg = (char *) _allocate( strlen( pathin ) + 1 );
    132                     strcpy( new_arg, pathin );
    133                     (*argv)[argc++] = new_arg;
    134                 }
    135                 closedir( dir );
    136             }
    137         }
    138         if( lastchar == '\0' ) break;
     79    while( *p == ' ' ) ++p;    /* skip over blanks */
     80    if( *p == '\0' ) break;
     81    /* we are at the start of a parm */
     82    wildcard = 0;
     83    if( *p == '\"' ) {
     84        p++;
     85        new_arg = start = p;
     86        for(;;) {
     87        /* end of parm: NULLCHAR or quote */
     88        if( *p == '\"' ) break;
     89        if( *p == '\0' ) break;
     90        if( *p == '\\' ) {
     91            if( p[1] == '\"'  ||  p[1] == '\\' )  ++p;
     92        }
     93        *new_arg++ = *p++;
     94        }
     95    } else {
     96        new_arg = start = p;
     97        for(;;) {
     98        /* end of parm: NULLCHAR or blank */
     99        if( *p == '\0' ) break;
     100        if( *p == ' ' ) break;
     101        if(( *p == '\\' )&&( p[1] == '\"' )) {
     102            ++p;
     103        } else if( *p == '?'  ||  *p == '*' ) {
     104            wildcard = 1;
     105        }
     106        *new_arg++ = *p++;
     107        }
     108    }
     109    *argv = (char **) realloc( *argv, (argc+2) * sizeof( char * ) );
     110    if( *argv == NULL )  _Not_Enough_Memory();
     111    (*argv)[ argc ] = start;
     112    ++argc;
     113    lastchar = *p;
     114    *new_arg = '\0';
     115    ++p;
     116    if( wildcard ) {
     117        /* expand file names */
     118        dir = opendir( start );
     119        if( dir != NULL ) {
     120        --argc;
     121        _splitpath( start, drive, directory, name, extin );
     122        for(;;) {
     123            dirent = readdir( dir );
     124            if( dirent == NULL ) break;
     125            if( dirent->d_attr &
     126              (_A_HIDDEN+_A_SYSTEM+_A_VOLID+_A_SUBDIR) ) continue;
     127            _splitpath( dirent->d_name, NULL, NULL, name, extin );
     128            _makepath( pathin, drive, directory, name, extin );
     129            *argv = (char **) realloc( *argv, (argc+2) * sizeof( char * ) );
     130            if( *argv == NULL )  _Not_Enough_Memory();
     131            new_arg = (char *) _allocate( strlen( pathin ) + 1 );
     132            strcpy( new_arg, pathin );
     133            (*argv)[argc++] = new_arg;
     134        }
     135        closedir( dir );
     136        }
     137    }
     138    if( lastchar == '\0' ) break;
    139139    }
    140140    return( argc );
     
    146146void __Init_Argv()
    147147    {
    148         _argv = (char **) _allocate( 2 * sizeof( char * ) );
    149         _argv[0] = _LpPgmName;  /* fill in program name */
    150         _argc = _make_argv( _LpCmdLine, &_argv );
    151         _argv[_argc] = NULL;
    152         ___Argc = _argc;
    153         ___Argv = _argv;
     148    _argv = (char **) _allocate( 2 * sizeof( char * ) );
     149    _argv[0] = _LpPgmName;    /* fill in program name */
     150    _argc = _make_argv( _LpCmdLine, &_argv );
     151    _argv[_argc] = NULL;
     152    ___Argc = _argc;
     153    ___Argv = _argv;
    154154    }
Note: See TracChangeset for help on using the changeset viewer.