Blame src/util/ss/ss_internal.h

Packit fd8b60
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
Packit fd8b60
/*
Packit fd8b60
 * Copyright 1987, 1988 by MIT Student Information Processing Board
Packit fd8b60
 *
Packit fd8b60
 * For copyright information, see copyright.h.
Packit fd8b60
 */
Packit fd8b60
Packit fd8b60
#ifndef _ss_ss_internal_h
Packit fd8b60
#define _ss_ss_internal_h __FILE__
Packit fd8b60
#include "k5-platform.h"
Packit fd8b60
#include <unistd.h>
Packit fd8b60
Packit fd8b60
typedef void * pointer;
Packit fd8b60
Packit fd8b60
#include "ss.h"
Packit fd8b60
Packit fd8b60
#if defined(__GNUC__)
Packit fd8b60
#define LOCAL_ALLOC(x) __builtin_alloca(x)
Packit fd8b60
#define LOCAL_FREE(x)
Packit fd8b60
#else
Packit fd8b60
#if defined(vax)
Packit fd8b60
#define LOCAL_ALLOC(x) alloca(x)
Packit fd8b60
#define LOCAL_FREE(x)
Packit fd8b60
extern pointer alloca (unsigned);
Packit fd8b60
#else
Packit fd8b60
#if defined(__HIGHC__)  /* Barf! */
Packit fd8b60
pragma on(alloca);
Packit fd8b60
#define LOCAL_ALLOC(x) alloca(x)
Packit fd8b60
#define LOCAL_FREE(x)
Packit fd8b60
extern pointer alloca (unsigned);
Packit fd8b60
#else
Packit fd8b60
/* no alloca? */
Packit fd8b60
#define LOCAL_ALLOC(x) malloc(x)
Packit fd8b60
#define LOCAL_FREE(x) free(x)
Packit fd8b60
#endif
Packit fd8b60
#endif
Packit fd8b60
#endif                          /* LOCAL_ALLOC stuff */
Packit fd8b60
Packit fd8b60
typedef char BOOL;
Packit fd8b60
Packit fd8b60
typedef struct _ss_abbrev_entry {
Packit fd8b60
    char *name;                 /* abbrev name */
Packit fd8b60
    char **abbrev;              /* new tokens to insert */
Packit fd8b60
    unsigned int beginning_of_line : 1;
Packit fd8b60
} ss_abbrev_entry;
Packit fd8b60
Packit fd8b60
typedef struct _ss_abbrev_list {
Packit fd8b60
    int n_abbrevs;
Packit fd8b60
    ss_abbrev_entry *first_abbrev;
Packit fd8b60
} ss_abbrev_list;
Packit fd8b60
Packit fd8b60
typedef struct {
Packit fd8b60
/*    char *path; */
Packit fd8b60
    ss_abbrev_list abbrevs[127];
Packit fd8b60
} ss_abbrev_info;
Packit fd8b60
Packit fd8b60
typedef struct _ss_data {       /* init values */
Packit fd8b60
    /* this subsystem */
Packit fd8b60
    char *subsystem_name;
Packit fd8b60
    char *subsystem_version;
Packit fd8b60
    /* current request info */
Packit fd8b60
    int argc;
Packit fd8b60
    char **argv;                /* arg list */
Packit fd8b60
    char const *current_request; /* primary name */
Packit fd8b60
    /* info directory for 'help' */
Packit fd8b60
    char **info_dirs;
Packit fd8b60
    /* to be extracted by subroutines */
Packit fd8b60
    pointer info_ptr;           /* (void *) NULL */
Packit fd8b60
    /* for ss_listen processing */
Packit fd8b60
    char *prompt;
Packit fd8b60
    ss_request_table **rqt_tables;
Packit fd8b60
    ss_abbrev_info *abbrev_info;
Packit fd8b60
    struct {
Packit fd8b60
        unsigned int  escape_disabled : 1,
Packit fd8b60
            abbrevs_disabled : 1;
Packit fd8b60
    } flags;
Packit fd8b60
    /* to get out */
Packit fd8b60
    int abort;                  /* exit subsystem */
Packit fd8b60
    int exit_status;
Packit fd8b60
} ss_data;
Packit fd8b60
Packit fd8b60
#define CURRENT_SS_VERSION 1
Packit fd8b60
Packit fd8b60
#define ss_info(sci_idx)        (_ss_table[sci_idx])
Packit fd8b60
#define ss_current_request(sci_idx,code_ptr)            \
Packit fd8b60
    (*code_ptr=0,ss_info(sci_idx)->current_request)
Packit fd8b60
void ss_unknown_function();
Packit fd8b60
void ss_delete_info_dir();
Packit fd8b60
char **ss_parse (int, char *, int *);
Packit fd8b60
ss_abbrev_info *ss_abbrev_initialize (char *, int *);
Packit fd8b60
void ss_page_stdin (void);
Packit fd8b60
int ss_pager_create (void);
Packit fd8b60
void ss_self_identify __SS_PROTO;
Packit fd8b60
void ss_subsystem_name __SS_PROTO;
Packit fd8b60
void ss_subsystem_version __SS_PROTO;
Packit fd8b60
void ss_unimplemented __SS_PROTO;
Packit fd8b60
Packit fd8b60
extern ss_data **_ss_table;
Packit fd8b60
extern char *ss_et_msgs[];
Packit fd8b60
Packit fd8b60
#ifndef HAVE_STDLIB_H
Packit fd8b60
extern pointer malloc (unsigned);
Packit fd8b60
extern pointer realloc (pointer, unsigned);
Packit fd8b60
extern pointer calloc (unsigned, unsigned);
Packit fd8b60
#endif
Packit fd8b60
Packit fd8b60
#if defined(USE_SIGPROCMASK) && !defined(POSIX_SIGNALS)
Packit fd8b60
/* fake sigmask, sigblock, sigsetmask */
Packit fd8b60
#include <signal.h>
Packit fd8b60
#ifdef sigmask
Packit fd8b60
#undef sigmask
Packit fd8b60
#endif
Packit fd8b60
#define sigmask(x) (1L<<(x)-1)
Packit fd8b60
#define sigsetmask(x) sigprocmask(SIG_SETMASK,&x,NULL)
Packit fd8b60
static int _fake_sigstore;
Packit fd8b60
#define sigblock(x) (_fake_sigstore=x,sigprocmask(SIG_BLOCK,&_fake_sigstore,0))
Packit fd8b60
#endif
Packit fd8b60
#endif /* _ss_internal_h */