e2fsprogs/lib/ss/ss.h
Theodore Ts'o 8a1da3c5ae debugfs: use ss_safe_getenv() instead of getenv()
In the case where debugfs (or rdebugfs) is installed setgid disk, or
some such, we need to disable the use of environment variables for the
obvious reasons.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2012-02-15 16:18:29 -05:00

97 lines
3.1 KiB
C

/*
* Copyright 1987, 1988 by MIT Student Information Processing Board
*
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose is hereby granted, provided that
* the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
* advertising or publicity pertaining to distribution of the software
* without specific, written prior permission. M.I.T. and the
* M.I.T. S.I.P.B. make no representations about the suitability of
* this software for any purpose. It is provided "as is" without
* express or implied warranty.
*
* This quote is just too good to not pass on:
*
* "BTW, I would have rejected the name Story Server because its
* initials are SS, the name of the secret police in Nazi
* Germany, probably the most despised pair of letters in western
* culture." --- http://scriptingnewsarchive.userland.com/1999/12/13
*
* Let no one say political correctness isn't dead....
*/
#ifndef _ss_h
#define _ss_h __FILE__
#include <ss/ss_err.h>
#define __SS_CONST const
#define __SS_PROTO (int, const char * const *, int, void *)
#ifdef __GNUC__
#define __SS_ATTR(x) __attribute__(x)
#else
#define __SS_ATTR(x)
#endif
typedef __SS_CONST struct _ss_request_entry {
__SS_CONST char * __SS_CONST *command_names; /* whatever */
void (* __SS_CONST function) __SS_PROTO; /* foo */
__SS_CONST char * __SS_CONST info_string; /* NULL */
int flags; /* 0 */
} ss_request_entry;
typedef __SS_CONST struct _ss_request_table {
int version;
ss_request_entry *requests;
} ss_request_table;
#define SS_RQT_TBL_V2 2
typedef struct _ss_rp_options { /* DEFAULT VALUES */
int version; /* SS_RP_V1 */
void (*unknown) __SS_PROTO; /* call for unknown command */
int allow_suspend;
int catch_int;
} ss_rp_options;
#define SS_RP_V1 1
#define SS_OPT_DONT_LIST 0x0001
#define SS_OPT_DONT_SUMMARIZE 0x0002
void ss_help __SS_PROTO;
#if 0
char *ss_current_request(); /* This is actually a macro */
#endif
char *ss_name(int sci_idx);
void ss_error (int, long, char const *, ...)
__SS_ATTR((format(printf, 3, 4)));
void ss_perror (int, long, char const *);
int ss_create_invocation(const char *, const char *, void *,
ss_request_table *, int *);
void ss_delete_invocation(int);
int ss_listen(int);
int ss_execute_line(int, char *);
void ss_add_request_table(int, ss_request_table *, int, int *);
void ss_delete_request_table(int, ss_request_table *, int *);
void ss_abort_subsystem(int sci_idx, int code);
void ss_quit(int argc, const char * const *argv, int sci_idx, void *infop);
void ss_self_identify(int argc, const char * const *argv, int sci_idx, void *infop);
void ss_subsystem_name(int argc, const char * const *argv,
int sci_idx, void *infop);
void ss_subsystem_version(int argc, const char * const *argv,
int sci_idx, void *infop);
void ss_unimplemented(int argc, const char * const *argv,
int sci_idx, void *infop);
void ss_set_prompt(int sci_idx, char *new_prompt);
char *ss_get_prompt(int sci_idx);
void ss_get_readline(int sci_idx);
char *ss_safe_getenv(const char *arg);
extern ss_request_table ss_std_requests;
#endif /* _ss_h */