/*
* 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 .
*/
#ifndef _XARGS_H_
#define _XARGS_H_
#include
#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_ */