Subversion Repositories DevTools

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* -*- mode: c; tabs: 4; -*- ************************************************
* Module name   : cmdfile.h
* Module type   : CMDFILE source file
* Environment(s): n/a
*
* Version   Who      Date        Description
            APY      12/99       Created
*
* $Source: /cvsroot/device/DEVL/UTILS/CMDFILE/cmdfile.h,v $
* $Revision: 1.9 $ $Date: 2004/11/05 07:51:39 $ $State: Exp $
* $Author: ayoung $ $Locker:  $
*.........................................................................*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <limits.h>         /* PATH_MAX */
#include <errno.h>

#if defined(linux)
#include <sys/io.h>
#elif defined(MSDOS) || defined(WIN32)
#include <io.h>
#endif

#ifndef TRUE
#define FALSE               0
#define TRUE                1                   /*!FALSE*/
#endif

#define MACRO_MAX           4096
#define TMPNAME             "cmdfile.XXX"       /*see mktemp*/

#if !defined(PATH_MAX)
#if defined(linux)
#define PATH_MAX            1024
#else
#error  Unknown target OS ...
#endif
#endif

#define WS_UNKNOWN          0                   /*embedded space handling*/
#define WS_IGNORE           1
#define WS_ESCAPE           2
#define WS_QUOTE            3
#define WS_JUNK             4
#define WS_URL              5

typedef struct {
    char *          s_data;
    char *          s_ptr;
    unsigned        s_left;
    unsigned        s_len;
} String_t;

extern const char * version_string;
extern char *       program_name;
extern FILE *       output;

extern int          cflg;

extern char         mflg;
extern char         dflg[2];

#define MACROCHAR   mflg
#define LDELIMITOR  dflg[0]
#define RDELIMITOR  dflg[1]

extern int          eflg;
extern int          kflg;
extern int          k2flg;
extern int          Mflg;
extern int          nflg;
extern int          nlflg;
extern const char * oflg;
extern int          rflg;
extern char         rtags[10];
extern int          tflg;
extern int          vflg;
extern int          wflg;
extern int          whitespace;

extern void         fatalerr(const char *msg, ...);
extern void         warning(const char *msg, ...);
extern void         verbose(const char *msg, ...);
extern void         message(const char *msg, ...);

extern int          mkstemp(char *path);

extern int          StringInit(String_t *, char *, unsigned);
extern int          StringZero(String_t *);
extern int          StringCat(String_t *, const char *);
extern int          StringPath(String_t *, const char *);
extern int          StringCatn(String_t *, const char *, unsigned);
extern int          StringPut(String_t *, char);
extern char *       StringData(String_t *pStr);

extern int          expected(const char *s, char c);
extern int          token(const char *s, char *buffer, int len);
extern int          argument(const char *s, char *buffer, int len);
extern int          pathargument(const char *s, char *buffer, int len);

#define VFLAG_PATH          0x00
#define VFLAG_LIBRARY       0x01
#define VFLAG_GLOB          0x02
#define VFLAG_LINT          0x04

#define VFLAG_MUSTRESOLVE   0x10
#define VFLAG_OPTIONAL      0x20

extern int          vpath(String_t *str, const char *s, int flags);
extern int          do_vhost(const char *s);
extern int          do_vsep(const char *s);
extern int          macro(String_t *str, const char *s);
extern int          dosify(String_t *str, const char *s);
extern int          do_realpath(String_t *str, const char *s);
extern int          do_shortpath(String_t *str, const char *s);
extern int          do_url2path(String_t *str, const char *s);
extern int          do_path2url(String_t *str, const char *s);
extern const char * Realpath(const char *name, char *buf);
extern int          do_vlibgcc( String_t *str, const char *s );
extern int          from_env(String_t *str, const char *s);
extern int          do_clean_sep ( String_t *str, const char *s );