Home | History | Annotate | Line # | Download | only in fsck_msdos
ext.h revision 1.1.4.1
      1 /*	$NetBSD: ext.h,v 1.1.4.1 1996/05/31 18:41:45 jtc Exp $	*/
      2 
      3 /*
      4  * Copyright (C) 1995, 1996 Wolfgang Solfrank
      5  * Copyright (c) 1995 Martin Husemann
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  * 3. All advertising materials mentioning features or use of this software
     16  *    must display the following acknowledgement:
     17  *	This product includes software developed by Martin Husemann
     18  *	and Wolfgang Solfrank.
     19  * 4. Neither the name of the University nor the names of its contributors
     20  *    may be used to endorse or promote products derived from this software
     21  *    without specific prior written permission.
     22  *
     23  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
     24  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     25  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     26  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
     27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     28  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     32  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     33  */
     34 
     35 #ifndef EXT_H
     36 #define EXT_H
     37 
     38 #include <sys/types.h>
     39 
     40 #include "dosfs.h"
     41 
     42 #define	LOSTDIR	"LOST.DIR"
     43 
     44 /*
     45  * Options:
     46  */
     47 extern int alwaysno;	/* assume "no" for all questions */
     48 extern int alwaysyes;	/* assume "yes" for all questions */
     49 extern int preen;	/* we are preening */
     50 extern int rdonly;	/* device is opened read only (supersedes above) */
     51 
     52 extern char *fname;	/* filesystem currently checked */
     53 
     54 extern struct dosDirEntry *rootDir;
     55 
     56 /*
     57  * function declarations
     58  */
     59 void errexit __P((const char *, ...));
     60 void pfatal __P((const char *, ...));
     61 void pwarn __P((const char *, ...));
     62 int ask __P((int, const char *, ...));
     63 void perror __P((const char *));
     64 
     65 /*
     66  * Check filesystem given as arg
     67  */
     68 int checkfilesys __P((const char *));
     69 
     70 /*
     71  * Return values of various functions
     72  */
     73 #define	FSOK		0		/* Check was OK */
     74 #define	FSDIRMOD	1		/* Some directory was modified */
     75 #define	FSFATMOD	2		/* The FAT was modified */
     76 #define	FSERROR		4		/* Some unrecovered error remains */
     77 #define	FSFATAL		8		/* Some unrecoverable error occured */
     78 
     79 /*
     80  * read a boot block in a machine independend fashion and translate
     81  * it into our struct bootblock.
     82  */
     83 int readboot __P((int, struct bootblock *));
     84 
     85 
     86 /*
     87  * Read one of the FAT copies and return a pointer to the new
     88  * allocated array holding our description of it.
     89  */
     90 int readfat __P((int, struct bootblock *, int, struct fatEntry **));
     91 
     92 /*
     93  * Check two FAT copies for consistency and merge changes into the
     94  * first if neccessary.
     95  */
     96 int comparefat __P((struct bootblock *, struct fatEntry *, struct fatEntry *, int));
     97 
     98 /*
     99  * Check a FAT
    100  */
    101 int checkfat __P((struct bootblock *, struct fatEntry *));
    102 
    103 /*
    104  * Write back FAT entries
    105  */
    106 int writefat __P((int, struct bootblock *, struct fatEntry *));
    107 
    108 /*
    109  * Read a directory
    110  */
    111 int resetDosDirSection __P((struct bootblock *));
    112 void finishDosDirSection __P((void));
    113 int handleDirTree __P((int, struct bootblock *, struct fatEntry *));
    114 
    115 /*
    116  * Cross-check routines run after everything is completely in memory
    117  */
    118 /*
    119  * Check for lost cluster chains
    120  */
    121 int checklost __P((int, struct bootblock *, struct fatEntry *));
    122 /*
    123  * Try to reconnect a lost cluster chain
    124  */
    125 int reconnect __P((int, struct bootblock *, struct fatEntry *, cl_t));
    126 void finishlf __P((void));
    127 
    128 /*
    129  * Small helper functions
    130  */
    131 /*
    132  * Return the type of a reserved cluster as text
    133  */
    134 char *rsrvdcltype __P((cl_t));
    135 
    136 /*
    137  * Clear a cluster chain in a FAT
    138  */
    139 void clearchain __P((struct bootblock *, struct fatEntry *, cl_t));
    140 
    141 #endif
    142