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