aboutsummaryrefslogtreecommitdiffstats
path: root/src/sash/sash.h
blob: b0ed25469ceeb385707f50a7a75ee5394d06ec92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
 * Copyright (c) 2014 by David I. Bell
 * Permission is granted to use, distribute, or modify this source,
 * provided that this copyright notice remains intact.
 *
 * Definitions for stand-alone shell for system maintainance for Linux.
 */

#ifndef	SASH_H
#define	SASH_H

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <memory.h>
#include <time.h>
#include <ctype.h>

#if __OpenBSD__
#include <sys/param.h>
#endif

#if __Linux__
#include <malloc.h>
#endif


#define	PATH_LEN	1024
#define	CMD_LEN		10240
#define	ALIAS_ALLOC	20
#define	EXPAND_ALLOC	1024
#define	STDIN		0
#define	STDOUT		1
#define	MAX_SOURCE	10
#define	BUF_SIZE	8192


#define	isBlank(ch)	(((ch) == ' ') || ((ch) == '\t'))
#define	isDecimal(ch)	(((ch) >= '0') && ((ch) <= '9'))
#define	isOctal(ch)	(((ch) >= '0') && ((ch) <= '7'))
#define	isWildCard(ch)	(((ch) == '*') || ((ch) == '?') || ((ch) == '['))

#ifndef MAX
#define MAX(x, y)	((x) > (y) ? (x) : (y))
#endif
#ifndef MIN
#define MIN(x, y)	((x) < (y) ? (x) : (y))
#endif

typedef	int	BOOL;

#define	FALSE	((BOOL) 0)
#define	TRUE	((BOOL) 1)


/*
 * Built-in command functions.
 */
extern	int	do_alias(int argc, const char ** argv);
extern	int	do_aliasall(int argc, const char ** argv);
extern	int	do_cd(int argc, const char ** argv);
extern	int	do_exec(int argc, const char ** argv);
extern	int	do_exit(int argc, const char ** argv);
extern	int	do_prompt(int argc, const char ** argv);
extern	int	do_source(int argc, const char ** argv);
extern	int	do_umask(int argc, const char ** argv);
extern	int	do_unalias(int argc, const char ** argv);
extern	int	do_help(int argc, const char ** argv);
extern	int	do_ln(int argc, const char ** argv);
extern	int	do_cp(int argc, const char ** argv);
extern	int	do_mv(int argc, const char ** argv);
extern	int	do_rm(int argc, const char ** argv);
extern	int	do_chmod(int argc, const char ** argv);
extern	int	do_mkdir(int argc, const char ** argv);
extern	int	do_rmdir(int argc, const char ** argv);
extern	int	do_mknod(int argc, const char ** argv);
extern	int	do_chown(int argc, const char ** argv);
extern	int	do_chgrp(int argc, const char ** argv);
extern	int	do_sum(int argc, const char ** argv);
extern	int	do_sync(int argc, const char ** argv);
extern	int	do_printenv(int argc, const char ** argv);
extern	int	do_more(int argc, const char ** argv);
extern	int	do_cmp(int argc, const char ** argv);
extern	int	do_touch(int argc, const char ** argv);
extern	int	do_ls(int argc, const char ** argv);
extern	int	do_dd(int argc, const char ** argv);
extern	int	do_tar(int argc, const char ** argv);
extern	int	do_ar(int argc, const char ** argv);
extern	int	do_mount(int argc, const char ** argv);
extern	int	do_umount(int argc, const char ** argv);
extern	int	do_setenv(int argc, const char ** argv);
extern	int	do_pwd(int argc, const char ** argv);
extern	int	do_echo(int argc, const char ** argv);
extern	int	do_kill(int argc, const char ** argv);
extern	int	do_grep(int argc, const char ** argv);
extern	int	do_file(int argc, const char ** argv);
extern	int	do_find(int argc, const char ** argv);
extern	int	do_ed(int argc, const char ** argv);
extern	int	do_where(int argc, const char ** argv);

#if	HAVE_GZIP
extern	int	do_gzip(int argc, const char ** argv);
extern	int	do_gunzip(int argc, const char ** argv);
#endif

#if	HAVE_LINUX_ATTR
extern	int	do_lsattr(int argc, const char ** argv);
extern	int	do_chattr(int argc, const char ** argv);
#endif

#if	HAVE_LINUX_CHROOT
extern	int	do_chroot(int argc, const char ** argv);
#endif

#if	HAVE_LINUX_LOSETUP
extern	int	do_losetup(int argc, const char ** argv);
#endif

#if	HAVE_LINUX_PIVOT
extern	int	do_pivot_root(int argc, const char ** argv);
extern  int	pivot_root(const char *new_root, const char *put_old);
#endif


/*
 * Global utility routines.
 */
extern	const char *	modeString(int mode);
extern	const char *	timeString(time_t timeVal);
extern	BOOL		isDirectory(const char * name);
extern	BOOL		isDevice(const char * name);
extern	int		nameSort(const void * p1, const void * p2);
extern	char *		getChunk(int size);
extern	char *		chunkstrdup(const char *);
extern	void		freeChunks(void);
extern	int		trySystem(const char * cmd);
extern	void		tryWrite(int fd, const char * buf, int len);
extern	int		fullWrite(int fd, const char * buf, int len);
extern	int		fullRead(int fd, char * buf, int len);
extern	void		checkStatus(const char * name, int status);
extern	BOOL		match(const char * text, const char * pattern);

extern	const char *	buildName
	(const char * dirName, const char * fileName);

extern	BOOL	makeArgs
	(const char * cmd, int * argcPtr, const char *** argvPtr);

extern	BOOL	copyFile
	(const char * srcName, const char * destName, BOOL setModes);

extern	BOOL	makeString
	(int argc, const char ** argv, char * buf, int bufLen);

extern	int	expandWildCards
	(const char * fileNamePattern, const char *** retFileTable);


/*
 * Global variable to indicate that an SIGINT occurred.
 * This is used to stop processing.
 */
extern	BOOL	intFlag;

#endif

/* END CODE */