root/libutil/xargs.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


/*
 * Copyright (c) 2005 Tama Communications Corporation
 *
 * This file is part of GNU GLOBAL.
 *
 * 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 3 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.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _XARGS_H_
#define _XARGS_H_

#include <stdio.h>

#include "strbuf.h"

/*
 * Types
 */
#define XARGS_FILE      1
#define XARGS_ARGV      2
#define XARGS_STRBUF    3
#define XARGS_FIND      4
/*
 * Options
 */
#define XA_IGNORE_ERROR         1
#define XA_SKIP_NOTSOURCE       2
#define XA_PUT_GPATH            4
#define XA_TRIM_LINE            8

typedef struct {
        /*
         * common area
         */
        char *command;
        FILE *pipe;
        STRBUF *result;
        int end_of_arg;
        int unread;
        int seqno;              /* sequencial number */
        int type;               /* XARGS_XXX Types */
        /*
         * options
         *
         * These variables are set to directly by calling procedures.
         * This might have to be reviewed.
         */
        int ignore_error;
        int max_args;           /* 0: no limit, >0: limit */
        int put_gpath;
        int trim_line;
        int skip_assembly;
        void (*verbose)(char *, int, int);
        /*
         * XARGS_FILE
         */
        FILE *ip;
        long fptr;
        STRBUF *path;
        /*
         * XARGS_ARGV
         */
        int argc;
        char **argv;
        /*
         * XARGS_STRBUF
         */
        char *curp;
        char *endp;
        /*
         * XARGS_FIND
         */
} XARGS;

XARGS *xargs_open_with_file(const char *, int, FILE *);
XARGS *xargs_open_with_argv(const char *, int, int, char **);
XARGS *xargs_open_with_strbuf(const char *, int, STRBUF *);
XARGS *xargs_open_with_find(const char *, int);
char *xargs_read(XARGS *);
void xargs_unread(XARGS *);
int xargs_close(XARGS *);

#endif /*! _XARGS_H_ */

/* [<][>][^][v][top][bottom][index][help] */