Path: blob/main/crypto/krb5/src/util/ss/ss_internal.h
34890 views
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */1/*2* Copyright 1987, 1988 by MIT Student Information Processing Board3*4* For copyright information, see copyright.h.5*/67#ifndef _ss_ss_internal_h8#define _ss_ss_internal_h __FILE__9#include "k5-platform.h"10#include <unistd.h>1112typedef void * pointer;1314#include "ss.h"1516#if defined(__GNUC__)17#define LOCAL_ALLOC(x) __builtin_alloca(x)18#define LOCAL_FREE(x)19#else20#if defined(vax)21#define LOCAL_ALLOC(x) alloca(x)22#define LOCAL_FREE(x)23extern pointer alloca (unsigned);24#else25#if defined(__HIGHC__) /* Barf! */26pragma on(alloca);27#define LOCAL_ALLOC(x) alloca(x)28#define LOCAL_FREE(x)29extern pointer alloca (unsigned);30#else31/* no alloca? */32#define LOCAL_ALLOC(x) malloc(x)33#define LOCAL_FREE(x) free(x)34#endif35#endif36#endif /* LOCAL_ALLOC stuff */3738typedef char BOOL;3940typedef struct _ss_abbrev_entry {41char *name; /* abbrev name */42char **abbrev; /* new tokens to insert */43unsigned int beginning_of_line : 1;44} ss_abbrev_entry;4546typedef struct _ss_abbrev_list {47int n_abbrevs;48ss_abbrev_entry *first_abbrev;49} ss_abbrev_list;5051typedef struct {52/* char *path; */53ss_abbrev_list abbrevs[127];54} ss_abbrev_info;5556typedef struct _ss_data { /* init values */57/* this subsystem */58char *subsystem_name;59char *subsystem_version;60/* current request info */61int argc;62char **argv; /* arg list */63char const *current_request; /* primary name */64/* info directory for 'help' */65char **info_dirs;66/* to be extracted by subroutines */67pointer info_ptr; /* (void *) NULL */68/* for ss_listen processing */69char *prompt;70ss_request_table **rqt_tables;71ss_abbrev_info *abbrev_info;72struct {73unsigned int escape_disabled : 1,74abbrevs_disabled : 1;75} flags;76/* to get out */77int abort; /* exit subsystem */78int exit_status;79} ss_data;8081#define CURRENT_SS_VERSION 18283#define ss_info(sci_idx) (_ss_table[sci_idx])84#define ss_current_request(sci_idx,code_ptr) \85(*code_ptr=0,ss_info(sci_idx)->current_request)86#ifndef __FreeBSD__87void ss_delete_info_dir(int, char *, int *);88#endif89char **ss_parse (int, char *, int *);90ss_abbrev_info *ss_abbrev_initialize (char *, int *);91void ss_page_stdin (void);92int ss_pager_create (void);93void ss_self_identify __SS_PROTO;94void ss_subsystem_name __SS_PROTO;95void ss_subsystem_version __SS_PROTO;96void ss_unimplemented __SS_PROTO;9798extern ss_data **_ss_table;99extern char *ss_et_msgs[];100101#ifndef HAVE_STDLIB_H102extern pointer malloc (unsigned);103extern pointer realloc (pointer, unsigned);104extern pointer calloc (unsigned, unsigned);105#endif106107#if defined(USE_SIGPROCMASK) && !defined(POSIX_SIGNALS)108/* fake sigmask, sigblock, sigsetmask */109#include <signal.h>110#ifdef sigmask111#undef sigmask112#endif113#define sigmask(x) (1L<<(x)-1)114#define sigsetmask(x) sigprocmask(SIG_SETMASK,&x,NULL)115static int _fake_sigstore;116#define sigblock(x) (_fake_sigstore=x,sigprocmask(SIG_BLOCK,&_fake_sigstore,0))117#endif118#endif /* _ss_internal_h */119120121