13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * fsck.h
33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
58820c79f75c37a3bc85cea7f56e7277025e157efTheodore Ts'o#include <time.h>
68820c79f75c37a3bc85cea7f56e7277025e157efTheodore Ts'o
73839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#ifdef __STDC__
83839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define NOARGS void
93839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#else
103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define NOARGS
113839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define const
123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#endif
133839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
14544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o#ifdef __GNUC__
15544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o#define FSCK_ATTR(x) __attribute__(x)
16544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o#else
17544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o#define FSCK_ATTR(x)
18544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o#endif
19544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o
20544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o
213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#ifndef DEFAULT_FSTYPE
22f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o#define DEFAULT_FSTYPE	"ext2"
233839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#endif
243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define MAX_DEVICES 32
263839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define MAX_ARGS 32
273839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
283839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define EXIT_OK          0
293839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define EXIT_NONDESTRUCT 1
303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define EXIT_DESTRUCT    2
313839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define EXIT_UNCORRECTED 4
323839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define EXIT_ERROR       8
333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define EXIT_USAGE       16
343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define EXIT_LIBRARY     128
353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Internal structure for mount tabel entries.
383839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
393839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
403839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ostruct fs_info {
413839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char  *device;
423839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char  *mountpt;
433839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char  *type;
443839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char  *opts;
453839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int   freq;
463839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int   passno;
473839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int   flags;
483839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	struct fs_info *next;
493839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o};
503839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
513839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define FLAG_DONE 1
5250787ea22edd8b4662203daf3569411d9dcf4287Theodore Ts'o#define FLAG_PROGRESS 2
533839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
543839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
553839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Structure to allow exit codes to be stored
563839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
573839e65723771b85975f4263102dd3ceec4523cTheodore Ts'ostruct fsck_instance {
583839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int	pid;
593839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int	flags;
603839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	int	exit_status;
617f4bb6c6e832b38b8e52b4bcc143f99a4059dcecTheodore Ts'o	time_t	start_time;
623839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char *	prog;
6350787ea22edd8b4662203daf3569411d9dcf4287Theodore Ts'o	char *	type;
643839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	char *	device;
65793e27df7312d5b217c172387f71fd581ed30c82Theodore Ts'o	char *	base_device;
663839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	struct fsck_instance *next;
673839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o};
683839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
69ed1b33e8fb310641684d68a177c940b58f2f529dTheodore Ts'oextern char *base_device(const char *device);
705599c2fa871d455464d92336d40b80ea1c8560f5Theodore Ts'oextern const char *identify_fs(const char *fs_name, const char *fs_types);
712d328bb76d2d63bdfdba923b54c28bd686bd8fecTheodore Ts'o
722d328bb76d2d63bdfdba923b54c28bd686bd8fecTheodore Ts'o/* ismounted.h */
732d328bb76d2d63bdfdba923b54c28bd686bd8fecTheodore Ts'oextern int is_mounted(const char *file);
74