rendered paste body[tom@saltandvinegar mkdosfs]$ more mkdosfs.o
# 1 "mkdosfs.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "mkdosfs.c"
# 60 "mkdosfs.c"
# 1 "../version.h" 1
# 61 "mkdosfs.c" 2
# 1 "/usr/include/fcntl.h" 1 3 4
# 27 "/usr/include/fcntl.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 329 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 313 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 314 "/usr/include/sys/cdefs.h" 2 3 4
# 330 "/usr/include/features.h" 2 3 4
# 352 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 5 "/usr/include/gnu/stubs.h" 2 3 4
# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
# 10 "/usr/include/gnu/stubs.h" 2 3 4
# 353 "/usr/include/features.h" 2 3 4
# 28 "/usr/include/fcntl.h" 2 3 4
# 1 "/usr/include/bits/fcntl.h" 1 3 4
# 25 "/usr/include/bits/fcntl.h" 3 4
# 1 "/usr/include/sys/types.h" 1 3 4
# 29 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/bits/types.h" 1 3 4
# 28 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 214 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 3 4
typedef long unsigned int size_t;
# 32 "/usr/include/bits/types.h" 2 3 4
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
# 134 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 135 "/usr/include/bits/types.h" 2 3 4
typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned long int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef int __daddr_t;
typedef long int __swblk_t;
typedef int __key_t;
typedef int __clockid_t;
typedef void * __timer_t;
typedef long int __blksize_t;
typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;
typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;
typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;
typedef long int __ssize_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;
typedef long int __intptr_t;
typedef unsigned int __socklen_t;
# 32 "/usr/include/sys/types.h" 2 3 4
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino_t ino_t;
# 62 "/usr/include/sys/types.h" 3 4
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
typedef __off_t off_t;
# 100 "/usr/include/sys/types.h" 3 4
typedef __pid_t pid_t;
typedef __id_t id_t;
typedef __ssize_t ssize_t;
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;
# 133 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 75 "/usr/include/time.h" 3 4
typedef __time_t time_t;
# 93 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 105 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 134 "/usr/include/sys/types.h" 2 3 4
# 147 "/usr/include/sys/types.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 148 "/usr/include/sys/types.h" 2 3 4
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 195 "/usr/include/sys/types.h" 3 4
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
typedef int register_t __attribute__ ((__mode__ (__word__)));
# 217 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 218 "/usr/include/sys/types.h" 2 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 23 "/usr/include/bits/sigset.h" 3 4
typedef int __sig_atomic_t;
typedef struct
{
unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3 4
typedef __sigset_t sigset_t;
# 1 "/usr/include/time.h" 1 3 4
# 121 "/usr/include/time.h" 3 4
struct timespec
{
__time_t tv_sec;
long int tv_nsec;
};
# 45 "/usr/include/sys/select.h" 2 3 4
# 1 "/usr/include/bits/time.h" 1 3 4
# 69 "/usr/include/bits/time.h" 3 4
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};
# 47 "/usr/include/sys/select.h" 2 3 4
typedef __suseconds_t suseconds_t;
typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3 4
typedef struct
{
__fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
} fd_set;
typedef __fd_mask fd_mask;
# 99 "/usr/include/sys/select.h" 3 4
# 109 "/usr/include/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout);
# 121 "/usr/include/sys/select.h" 3 4
extern int pselect (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
const struct timespec *__restrict __timeout,
const __sigset_t *__restrict __sigmask);
# 221 "/usr/include/sys/types.h" 2 3 4
# 1 "/usr/include/sys/sysmacros.h" 1 3 4
# 29 "/usr/include/sys/sysmacros.h" 3 4
__extension__
extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
__attribute__ ((__nothrow__));
__extension__
extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
__attribute__ ((__nothrow__));
__extension__
extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
unsigned int __minor)
__attribute__ ((__nothrow__));
__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
{
return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}
__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
{
return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
{
return ((__minor & 0xff) | ((__major & 0xfff) << 8)
| (((unsigned long long int) (__minor & ~0xff)) << 12)
| (((unsigned long long int) (__major & ~0xfff)) << 32));
}
# 224 "/usr/include/sys/types.h" 2 3 4
# 235 "/usr/include/sys/types.h" 3 4
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 270 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 23 "/usr/include/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
# 50 "/usr/include/bits/pthreadtypes.h" 3 4
typedef unsigned long int pthread_t;
typedef union
{
char __size[56];
long int __align;
} pthread_attr_t;
typedef struct __pthread_internal_list
{
struct __pthread_internal_list *__prev;
struct __pthread_internal_list *__next;
} __pthread_list_t;
# 76 "/usr/include/bits/pthreadtypes.h" 3 4
typedef union
{
struct __pthread_mutex_s
{
int __lock;
unsigned int __count;
int __owner;
unsigned int __nusers;
int __kind;
int __spins;
__pthread_list_t __list;
# 101 "/usr/include/bits/pthreadtypes.h" 3 4
} __data;
char __size[40];
long int __align;
} pthread_mutex_t;
typedef union
{
char __size[4];
int __align;
} pthread_mutexattr_t;
typedef union
{
struct
{
int __lock;
unsigned int __futex;
__extension__ unsigned long long int __total_seq;
__extension__ unsigned long long int __wakeup_seq;
__extension__ unsigned long long int __woken_seq;
void *__mutex;
unsigned int __nwaiters;
unsigned int __broadcast_seq;
} __data;
char __size[48];
__extension__ long long int __align;
} pthread_cond_t;
typedef union
{
char __size[4];
int __align;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef int pthread_once_t;
typedef union
{
struct
{
int __lock;
unsigned int __nr_readers;
unsigned int __readers_wakeup;
unsigned int __writer_wakeup;
unsigned int __nr_readers_queued;
unsigned int __nr_writers_queued;
int __writer;
int __pad1;
unsigned long int __pad2;
unsigned long int __pad3;
unsigned int __flags;
} __data;
# 184 "/usr/include/bits/pthreadtypes.h" 3 4
char __size[56];
long int __align;
} pthread_rwlock_t;
typedef union
{
char __size[8];
long int __align;
} pthread_rwlockattr_t;
typedef volatile int pthread_spinlock_t;
typedef union
{
char __size[32];
long int __align;
} pthread_barrier_t;
typedef union
{
char __size[4];
int __align;
} pthread_barrierattr_t;
# 271 "/usr/include/sys/types.h" 2 3 4
# 26 "/usr/include/bits/fcntl.h" 2 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 27 "/usr/include/bits/fcntl.h" 2 3 4
# 152 "/usr/include/bits/fcntl.h" 3 4
struct flock
{
short int l_type;
short int l_whence;
__off_t l_start;
__off_t l_len;
__pid_t l_pid;
};
# 197 "/usr/include/bits/fcntl.h" 3 4
extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
__attribute__ ((__nothrow__));
# 35 "/usr/include/fcntl.h" 2 3 4
# 76 "/usr/include/fcntl.h" 3 4
extern int fcntl (int __fd, int __cmd, ...);
# 85 "/usr/include/fcntl.h" 3 4
extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
# 130 "/usr/include/fcntl.h" 3 4
extern int creat (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1)));
# 159 "/usr/include/fcntl.h" 3 4
extern int lockf (int __fd, int __cmd, __off_t __len);
# 176 "/usr/include/fcntl.h" 3 4
extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
int __advise) __attribute__ ((__nothrow__));
# 198 "/usr/include/fcntl.h" 3 4
extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
# 213 "/usr/include/fcntl.h" 3 4
# 63 "mkdosfs.c" 2
# 1 "/usr/include/linux/hdreg.h" 1 3 4
# 168 "/usr/include/linux/hdreg.h" 3 4
struct hd_geometry {
unsigned char heads;
unsigned char sectors;
unsigned short cylinders;
unsigned long start;
};
# 216 "/usr/include/linux/hdreg.h" 3 4
enum {
BUSSTATE_OFF = 0,
BUSSTATE_ON,
BUSSTATE_TRISTATE
};
struct hd_big_geometry {
unsigned char heads;
unsigned char sectors;
unsigned int cylinders;
unsigned long start;
};
struct hd_driveid {
unsigned short config;
unsigned short cyls;
unsigned short reserved2;
unsigned short heads;
unsigned short track_bytes;
unsigned short sector_bytes;
unsigned short sectors;
unsigned short vendor0;
unsigned short vendor1;
unsigned short vendor2;
unsigned char serial_no[20];
unsigned short buf_type;
unsigned short buf_size;
unsigned short ecc_bytes;
unsigned char fw_rev[8];
unsigned char model[40];
unsigned char max_multsect;
unsigned char vendor3;
unsigned short dword_io;
unsigned char vendor4;
unsigned char capability;
unsigned short reserved50;
unsigned char vendor5;
unsigned char tPIO;
unsigned char vendor6;
unsigned char tDMA;
unsigned short field_valid;
unsigned short cur_cyls;
unsigned short cur_heads;
unsigned short cur_sectors;
unsigned short cur_capacity0;
unsigned short cur_capacity1;
unsigned char multsect;
unsigned char multsect_valid;
unsigned int lba_capacity;
unsigned short dma_1word;
unsigned short dma_mword;
unsigned short eide_pio_modes;
unsigned short eide_dma_min;
unsigned short eide_dma_time;
unsigned short eide_pio;
unsigned short eide_pio_iordy;
unsigned short words69_70[2];
unsigned short words71_74[4];
unsigned short queue_depth;
unsigned short words76_79[4];
unsigned short major_rev_num;
unsigned short minor_rev_num;
unsigned short command_set_1;
unsigned short command_set_2;
unsigned short cfsse;
unsigned short cfs_enable_1;
unsigned short cfs_enable_2;
unsigned short csf_default;
unsigned short dma_ultra;
unsigned short word89;
unsigned short word90;
unsigned short CurAPMvalues;
unsigned short word92;
unsigned short hw_config;
unsigned short words94_125[32];
unsigned short last_lun;
unsigned short word127;
unsigned short dlf;
# 312 "/usr/include/linux/hdreg.h" 3 4
unsigned short csfo;
unsigned short words130_155[26];
unsigned short word156;
unsigned short words157_159[3];
unsigned short words160_255[95];
};
# 64 "mkdosfs.c" 2
# 1 "/usr/include/linux/fs.h" 1 3 4
# 65 "mkdosfs.c" 2
# 1 "/usr/include/linux/fd.h" 1 3 4
# 1 "/usr/include/linux/ioctl.h" 1 3 4
# 1 "/usr/include/asm/ioctl.h" 1 3 4
# 1 "/usr/include/asm-x86_64/ioctl.h" 1 3 4
# 5 "/usr/include/asm/ioctl.h" 2 3 4
# 5 "/usr/include/linux/ioctl.h" 2 3 4
# 5 "/usr/include/linux/fd.h" 2 3 4
struct floppy_struct {
unsigned int size,
sect,
head,
track,
stretch;
unsigned char gap,
rate,
spec1,
fmt_gap;
const char * name;
};
# 64 "/usr/include/linux/fd.h" 3 4
struct format_descr {
unsigned int device,head,track;
};
# 79 "/usr/include/linux/fd.h" 3 4
struct floppy_max_errors {
unsigned int
abort,
read_track,
reset,
recal,
reporting;
};
# 110 "/usr/include/linux/fd.h" 3 4
typedef char floppy_drive_name[16];
struct floppy_drive_params {
signed char cmos;
unsigned long max_dtr;
unsigned long hlt;
unsigned long hut;
unsigned long srt;
unsigned long spinup;
unsigned long spindown;
unsigned char spindown_offset;
unsigned char select_delay;
unsigned char rps;
unsigned char tracks;
unsigned long timeout;
unsigned char interleave_sect;
struct floppy_max_errors max_errors;
char flags;
# 159 "/usr/include/linux/fd.h" 3 4
char read_track;
short autodetect[8];
int checkfreq;
int native_format;
};
enum {
FD_NEED_TWADDLE_BIT,
FD_VERIFY_BIT,
FD_DISK_NEWCHANGE_BIT,
FD_UNUSED_BIT,
FD_DISK_CHANGED_BIT,
FD_DISK_WRITABLE_BIT
};
# 191 "/usr/include/linux/fd.h" 3 4
struct floppy_drive_struct {
unsigned long flags;
unsigned long spinup_date;
unsigned long select_date;
unsigned long first_read_date;
short probed_format;
short track;
short maxblock;
short maxtrack;
int generation;
int keep_data;
int fd_ref;
int fd_device;
unsigned long last_checked;
char *dmabuf;
int bufblocks;
};
# 234 "/usr/include/linux/fd.h" 3 4
enum reset_mode {
FD_RESET_IF_NEEDED,
FD_RESET_IF_RAWCMD,
FD_RESET_ALWAYS
};
struct floppy_fdc_state {
int spec1;
int spec2;
int dtr;
unsigned char version;
unsigned char dor;
unsigned long address;
unsigned int rawcmd:2;
unsigned int reset:1;
unsigned int need_configure:1;
unsigned int perp_mode:2;
unsigned int has_fifo:1;
unsigned int driver_version;
# 266 "/usr/include/linux/fd.h" 3 4
unsigned char track[4];
# 275 "/usr/include/linux/fd.h" 3 4
};
struct floppy_write_errors {
# 292 "/usr/include/linux/fd.h" 3 4
unsigned int write_errors;
unsigned long first_error_sector;
int first_error_generation;
unsigned long last_error_sector;
int last_error_generation;
unsigned int badness;
};
# 317 "/usr/include/linux/fd.h" 3 4
struct floppy_raw_cmd {
unsigned int flags;
# 341 "/usr/include/linux/fd.h" 3 4
void *data;
char *kernel_data;
struct floppy_raw_cmd *next;
long length;
long phys_length;
int buffer_length;
unsigned char rate;
unsigned char cmd_count;
unsigned char cmd[16];
unsigned char reply_count;
unsigned char reply[16];
int track;
int resultcode;
int reserved1;
int reserved2;
};
# 66 "mkdosfs.c" 2
# 1 "/usr/include/mntent.h" 1 3 4
# 25 "/usr/include/mntent.h" 3 4
# 1 "/usr/include/stdio.h" 1 3 4
# 44 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE FILE;
# 26 "/usr/include/mntent.h" 2 3 4
# 1 "/usr/include/paths.h" 1 3 4
# 27 "/usr/include/mntent.h" 2 3 4
# 51 "/usr/include/mntent.h" 3 4
struct mntent
{
char *mnt_fsname;
char *mnt_dir;
char *mnt_type;
char *mnt_opts;
int mnt_freq;
int mnt_passno;
};
extern FILE *setmntent (__const char *__file, __const char *__mode) __attribute__ ((__nothrow__));
extern struct mntent *getmntent (FILE *__stream) __attribute__ ((__nothrow__));
extern struct mntent *getmntent_r (FILE *__restrict __stream,
struct mntent *__restrict __result,
char *__restrict __buffer,
int __bufsize) __attribute__ ((__nothrow__));
extern int addmntent (FILE *__restrict __stream,
__const struct mntent *__restrict __mnt) __attribute__ ((__nothrow__));
extern int endmntent (FILE *__stream) __attribute__ ((__nothrow__));
extern char *hasmntopt (__const struct mntent *__mnt,
__const char *__opt) __attribute__ ((__nothrow__));
# 68 "mkdosfs.c" 2
# 1 "/usr/include/signal.h" 1 3 4
# 31 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 103 "/usr/include/bits/sigset.h" 3 4
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
# 117 "/usr/include/bits/sigset.h" 3 4
extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__s
ig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__
set->__val[__word] & __mask) ? 1 : 0; }
extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1)
% (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__v
al[__word] |= __mask), 0); }
extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1)
% (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__v
al[__word] &= ~__mask), 0); }
# 34 "/usr/include/signal.h" 2 3 4
typedef __sig_atomic_t sig_atomic_t;
# 58 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/signum.h" 1 3 4
# 59 "/usr/include/signal.h" 2 3 4
# 75 "/usr/include/signal.h" 3 4
typedef void (*__sighandler_t) (int);
extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__));
# 90 "/usr/include/signal.h" 3 4
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__));
# 104 "/usr/include/signal.h" 3 4
# 117 "/usr/include/signal.h" 3 4
extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__));
extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__));
extern int raise (int __sig) __attribute__ ((__nothrow__));
extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__));
extern int gsignal (int __sig) __attribute__ ((__nothrow__));
extern void psignal (int __sig, __const char *__s);
# 153 "/usr/include/signal.h" 3 4
extern int __sigpause (int __sig_or_mask, int __is_sig);
# 181 "/usr/include/signal.h" 3 4
extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
# 201 "/usr/include/signal.h" 3 4
typedef __sighandler_t sig_t;
# 1 "/usr/include/time.h" 1 3 4
# 210 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/bits/siginfo.h" 1 3 4
# 25 "/usr/include/bits/siginfo.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 26 "/usr/include/bits/siginfo.h" 2 3 4
typedef union sigval
{
int sival_int;
void *sival_ptr;
} sigval_t;
# 51 "/usr/include/bits/siginfo.h" 3 4
typedef struct siginfo
{
int si_signo;
int si_errno;
int si_code;
union
{
int _pad[((128 / sizeof (int)) - 4)];
struct
{
__pid_t si_pid;
__uid_t si_uid;
} _kill;
struct
{
int si_tid;
int si_overrun;
sigval_t si_sigval;
} _timer;
struct
{
__pid_t si_pid;
__uid_t si_uid;
sigval_t si_sigval;
} _rt;
struct
{
__pid_t si_pid;
__uid_t si_uid;
int si_status;
__clock_t si_utime;
__clock_t si_stime;
} _sigchld;
struct
{
void *si_addr;
} _sigfault;
struct
{
long int si_band;
int si_fd;
} _sigpoll;
} _sifields;
} siginfo_t;
# 129 "/usr/include/bits/siginfo.h" 3 4
enum
{
SI_ASYNCNL = -60,
SI_TKILL = -6,
SI_SIGIO,
SI_ASYNCIO,
SI_MESGQ,
SI_TIMER,
SI_QUEUE,
SI_USER,
SI_KERNEL = 0x80
};
enum
{
ILL_ILLOPC = 1,
ILL_ILLOPN,
ILL_ILLADR,
ILL_ILLTRP,
ILL_PRVOPC,
ILL_PRVREG,
ILL_COPROC,
ILL_BADSTK
};
enum
{
FPE_INTDIV = 1,
FPE_INTOVF,
FPE_FLTDIV,
FPE_FLTOVF,
FPE_FLTUND,
FPE_FLTRES,
FPE_FLTINV,
FPE_FLTSUB
};
enum
{
SEGV_MAPERR = 1,
SEGV_ACCERR
};
enum
{
BUS_ADRALN = 1,
BUS_ADRERR,
BUS_OBJERR
};
enum
{
TRAP_BRKPT = 1,
TRAP_TRACE
};
enum
{
CLD_EXITED = 1,
CLD_KILLED,
CLD_DUMPED,
CLD_TRAPPED,
CLD_STOPPED,
CLD_CONTINUED
};
enum
{
POLL_IN = 1,
POLL_OUT,
POLL_MSG,
POLL_ERR,
POLL_PRI,
POLL_HUP
};
# 273 "/usr/include/bits/siginfo.h" 3 4
typedef struct sigevent
{
sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
union
{
int _pad[((64 / sizeof (int)) - 4)];
__pid_t _tid;
struct
{
void (*_function) (sigval_t);
void *_attribute;
} _sigev_thread;
} _sigev_un;
} sigevent_t;
enum
{
SIGEV_SIGNAL = 0,
SIGEV_NONE,
SIGEV_THREAD,
SIGEV_THREAD_ID = 4
};
# 213 "/usr/include/signal.h" 2 3 4
extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sigismember (__const sigset_t *__set, int __signo)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 246 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/sigaction.h" 1 3 4
# 25 "/usr/include/bits/sigaction.h" 3 4
struct sigaction
{
union
{
__sighandler_t sa_handler;
void (*sa_sigaction) (int, siginfo_t *, void *);
}
__sigaction_handler;
__sigset_t sa_mask;
int sa_flags;
void (*sa_restorer) (void);
};
# 247 "/usr/include/signal.h" 2 3 4
extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
sigset_t *__restrict __oset) __attribute__ ((__nothrow__));
extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
struct sigaction *__restrict __oact) __attribute__ ((__nothrow__));
extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
__attribute__ ((__nonnull__ (1, 2)));
extern int sigwaitinfo (__const sigset_t *__restrict __set,
siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
extern int sigtimedwait (__const sigset_t *__restrict __set,
siginfo_t *__restrict __info,
__const struct timespec *__restrict __timeout)
__attribute__ ((__nonnull__ (1)));
extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
__attribute__ ((__nothrow__));
# 304 "/usr/include/signal.h" 3 4
extern __const char *__const _sys_siglist[65];
extern __const char *__const sys_siglist[65];
struct sigvec
{
__sighandler_t sv_handler;
int sv_mask;
int sv_flags;
};
# 328 "/usr/include/signal.h" 3 4
extern int sigvec (int __sig, __const struct sigvec *__vec,
struct sigvec *__ovec) __attribute__ ((__nothrow__));
# 1 "/usr/include/bits/sigcontext.h" 1 3 4
# 26 "/usr/include/bits/sigcontext.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 27 "/usr/include/bits/sigcontext.h" 2 3 4
struct _fpreg
{
unsigned short significand[4];
unsigned short exponent;
};
struct _fpxreg
{
unsigned short significand[4];
unsigned short exponent;
unsigned short padding[3];
};
struct _xmmreg
{
__uint32_t element[4];
};
# 109 "/usr/include/bits/sigcontext.h" 3 4
struct _fpstate
{
__uint16_t cwd;
__uint16_t swd;
__uint16_t ftw;
__uint16_t fop;
__uint64_t rip;
__uint64_t rdp;
__uint32_t mxcsr;
__uint32_t mxcr_mask;
struct _fpxreg _st[8];
struct _xmmreg _xmm[16];
__uint32_t padding[24];
};
struct sigcontext
{
unsigned long r8;
unsigned long r9;
unsigned long r10;
unsigned long r11;
unsigned long r12;
unsigned long r13;
unsigned long r14;
unsigned long r15;
unsigned long rdi;
unsigned long rsi;
unsigned long rbp;
unsigned long rbx;
unsigned long rdx;
unsigned long rax;
unsigned long rcx;
unsigned long rsp;
unsigned long rip;
unsigned long eflags;
unsigned short cs;
unsigned short gs;
unsigned short fs;
unsigned short __pad0;
unsigned long err;
unsigned long trapno;
unsigned long oldmask;
unsigned long cr2;
struct _fpstate * fpstate;
unsigned long __reserved1 [8];
};
# 334 "/usr/include/signal.h" 2 3 4
extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__));
# 346 "/usr/include/signal.h" 3 4
extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__));
# 1 "/usr/include/bits/sigstack.h" 1 3 4
# 26 "/usr/include/bits/sigstack.h" 3 4
struct sigstack
{
void *ss_sp;
int ss_onstack;
};
enum
{
SS_ONSTACK = 1,
SS_DISABLE
};
# 50 "/usr/include/bits/sigstack.h" 3 4
typedef struct sigaltstack
{
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
# 349 "/usr/include/signal.h" 2 3 4
# 357 "/usr/include/signal.h" 3 4
extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
__attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__));
# 387 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/sigthread.h" 1 3 4
# 31 "/usr/include/bits/sigthread.h" 3 4
extern int pthread_sigmask (int __how,
__const __sigset_t *__restrict __newmask,
__sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__));
extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__));
# 388 "/usr/include/signal.h" 2 3 4
extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__));
extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__));
# 69 "mkdosfs.c" 2
# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4
extern void *memcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memmove (void *__dest, __const void *__src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 82 "/usr/include/string.h" 3 4
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcoll (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
# 130 "/usr/include/string.h" 3 4
extern char *strdup (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 165 "/usr/include/string.h" 3 4
extern char *strchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *strrchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 181 "/usr/include/string.h" 3 4
extern size_t strcspn (__const char *__s, __const char *__reject)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strspn (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strpbrk (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strstr (__const char *__haystack, __const char *__needle)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern char *__strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
# 240 "/usr/include/string.h" 3 4
extern size_t strlen (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 254 "/usr/include/string.h" 3 4
extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
# 270 "/usr/include/string.h" 3 4
extern int strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__xpg_strerror_r") __attribute__ ((__nothrow__)) __attri
bute__ ((__nonnull__ (2)));
# 288 "/usr/include/string.h" 3 4
extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void bcopy (__const void *__src, void *__dest, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *index (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *rindex (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 325 "/usr/include/string.h" 3 4
extern int strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 348 "/usr/include/string.h" 3 4
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
# 414 "/usr/include/string.h" 3 4
# 1 "/usr/include/bits/string.h" 1 3 4
# 415 "/usr/include/string.h" 2 3 4
# 1 "/usr/include/bits/string2.h" 1 3 4
# 394 "/usr/include/bits/string2.h" 3 4
extern void *__rawmemchr (const void *__s, int __c);
# 969 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject)
++__result;
return __result;
}
extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2)
++__result;
return __result;
}
extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
int __reject3)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2 && __s[__result] != __reject3)
++__result;
return __result;
}
# 1045 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
register size_t __result = 0;
while (__s[__result] == __accept)
++__result;
return __result;
}
extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2)
++__result;
return __result;
}
extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2
|| __s[__result] == __accept3)
++__result;
return __result;
}
# 1121 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
int __accept3)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
&& *__s != __accept3)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1173 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
char *__result;
if (__s == ((void *)0))
__s = *__nextp;
while (*__s == __sep)
++__s;
__result = ((void *)0);
if (*__s != '\0')
{
__result = __s++;
while (*__s != '\0')
if (*__s++ == __sep)
{
__s[-1] = '\0';
break;
}
*__nextp = __s;
}
return __result;
}
# 1205 "/usr/include/bits/string2.h" 3 4
extern char *__strsep_g (char **__stringp, __const char *__delim);
# 1223 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
register char *__retval = *__s;
if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__rejec
t) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
*(*__s)++ = '\0';
return __retval;
}
extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
# 1299 "/usr/include/bits/string2.h" 3 4
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4
# 587 "/usr/include/stdlib.h" 3 4
extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
# 978 "/usr/include/stdlib.h" 3 4
# 1300 "/usr/include/bits/string2.h" 2 3 4
extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 1323 "/usr/include/bits/string2.h" 3 4
extern char *__strndup (__const char *__string, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 418 "/usr/include/string.h" 2 3 4
# 426 "/usr/include/string.h" 3 4
# 70 "mkdosfs.c" 2
# 1 "/usr/include/stdio.h" 1 3 4
# 30 "/usr/include/stdio.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 35 "/usr/include/stdio.h" 2 3 4
# 62 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 72 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 14 "/usr/include/_G_config.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 326 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 3 4
typedef int wchar_t;
# 355 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3 4
# 24 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 1 "/usr/include/bits/wchar.h" 1 3 4
# 51 "/usr/include/wchar.h" 2 3 4
# 76 "/usr/include/wchar.h" 3 4
typedef struct
{
int __count;
union
{
wint_t __wch;
char __wchb[4];
} __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3 4
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
__mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/gconv.h" 1 3 4
# 28 "/usr/include/gconv.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 29 "/usr/include/gconv.h" 2 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 32 "/usr/include/gconv.h" 2 3 4
enum
{
__GCONV_OK = 0,
__GCONV_NOCONV,
__GCONV_NODB,
__GCONV_NOMEM,
__GCONV_EMPTY_INPUT,
__GCONV_FULL_OUTPUT,
__GCONV_ILLEGAL_INPUT,
__GCONV_INCOMPLETE_INPUT,
__GCONV_ILLEGAL_DESCRIPTOR,
__GCONV_INTERNAL_ERROR
};
enum
{
__GCONV_IS_LAST = 0x0001,
__GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
__const unsigned char **, __const unsigned char *,
unsigned char **, size_t *, int, int);
typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
struct __gconv_step_data *, void *,
__const unsigned char *,
__const unsigned char **,
__const unsigned char *, unsigned char **,
size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
__const unsigned char *,
unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
__gconv_trans_fct __trans_fct;
__gconv_trans_context_fct __trans_context_fct;
__gconv_trans_end_fct __trans_end_fct;
void *__data;
struct __gconv_trans_data *__next;
};
struct __gconv_step
{
struct __gconv_loaded_object *__shlib_handle;
__const char *__modname;
int __counter;
char *__from_name;
char *__to_name;
__gconv_fct __fct;
__gconv_btowc_fct __btowc_fct;
__gconv_init_fct __init_fct;
__gconv_end_fct __end_fct;
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
struct __gconv_step_data
{
unsigned char *__outbuf;
unsigned char *__outbufend;
int __flags;
int __invocation_counter;
int __internal_use;
__mbstate_t *__statep;
__mbstate_t __state;
struct __gconv_trans_data *__trans;
};
typedef struct __gconv_info
{
size_t __nsteps;
struct __gconv_step *__steps;
__extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3 4
typedef union
{
struct __gconv_info __cd;
struct
{
struct __gconv_info __cd;
struct __gconv_step_data __data;
} __combined;
} _G_iconv_t;
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 33 "/usr/include/libio.h" 2 3 4
# 53 "/usr/include/libio.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stdarg.h" 1 3 4
# 43 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3 4
# 166 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 176 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
# 199 "/usr/include/libio.h" 3 4
};
enum __codecvt_result
{
__codecvt_ok,
__codecvt_partial,
__codecvt_error,
__codecvt_noconv
};
# 267 "/usr/include/libio.h" 3 4
struct _IO_FILE {
int _flags;
char* _IO_read_ptr;
char* _IO_read_end;
char* _IO_read_base;
char* _IO_write_base;
char* _IO_write_ptr;
char* _IO_write_end;
char* _IO_buf_base;
char* _IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _flags2;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
# 315 "/usr/include/libio.h" 3 4
__off64_t _offset;
# 324 "/usr/include/libio.h" 3 4
void *__pad1;
void *__pad2;
void *__pad3;
void *__pad4;
size_t __pad5;
int _mode;
char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};
typedef struct _IO_FILE _IO_FILE;
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 360 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
# 412 "/usr/include/libio.h" 3 4
extern int __underflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __uflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __overflow (_IO_FILE *, int) __attribute__ ((__nothrow__));
extern wint_t __wunderflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __wuflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __woverflow (_IO_FILE *, wint_t) __attribute__ ((__nothrow__));
# 450 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_putc (int __c, _IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_peekc_locked (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
# 480 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
__gnuc_va_list, int *__restrict);
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
__gnuc_va_list);
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) __attribute__ ((__nothrow__));
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) __attribute__ ((__nothrow__));
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) __attribute__ ((__nothrow__));
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) __attribute__ ((__nothrow__));
extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
# 73 "/usr/include/stdio.h" 2 3 4
# 86 "/usr/include/stdio.h" 3 4
typedef _G_fpos_t fpos_t;
# 138 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 139 "/usr/include/stdio.h" 2 3 4
extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;
extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
extern FILE *tmpfile (void);
# 185 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__));
extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__));
# 203 "/usr/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern int fclose (FILE *__stream);
extern int fflush (FILE *__stream);
# 228 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 242 "/usr/include/stdio.h" 3 4
extern FILE *fopen (__const char *__restrict __filename,
__const char *__restrict __modes);
extern FILE *freopen (__const char *__restrict __filename,
__const char *__restrict __modes,
FILE *__restrict __stream);
# 269 "/usr/include/stdio.h" 3 4
# 280 "/usr/include/stdio.h" 3 4
extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__));
# 306 "/usr/include/stdio.h" 3 4
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) __attribute__ ((__nothrow__));
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
size_t __size) __attribute__ ((__nothrow__));
extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
extern int fprintf (FILE *__restrict __stream,
__const char *__restrict __format, ...);
extern int printf (__const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg);
extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) __attribute__ ((__nothrow__));
extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
# 400 "/usr/include/stdio.h" 3 4
extern int fscanf (FILE *__restrict __stream,
__const char *__restrict __format, ...) ;
extern int scanf (__const char *__restrict __format, ...) ;
extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
# 442 "/usr/include/stdio.h" 3 4
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
extern int getchar (void);
# 466 "/usr/include/stdio.h" 3 4
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 477 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
extern int putchar (int __c);
# 510 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
extern int getw (FILE *__stream);
extern int putw (int __w, FILE *__stream);
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
;
extern char *gets (char *__s) ;
# 591 "/usr/include/stdio.h" 3 4
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
extern int puts (__const char *__s);
extern int ungetc (int __c, FILE *__stream);
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s) ;
# 644 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern int fseek (FILE *__stream, long int __off, int __whence);
extern long int ftell (FILE *__stream) ;
extern void rewind (FILE *__stream);
# 680 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence);
extern __off_t ftello (FILE *__stream) ;
# 699 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
# 722 "/usr/include/stdio.h" 3 4
# 731 "/usr/include/stdio.h" 3 4
extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern void perror (__const char *__s);
# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 761 "/usr/include/stdio.h" 2 3 4
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
# 780 "/usr/include/stdio.h" 3 4
extern FILE *popen (__const char *__command, __const char *__modes) ;
extern int pclose (FILE *__stream);
extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
# 820 "/usr/include/stdio.h" 3 4
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
# 841 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio.h" 1 3 4
# 33 "/usr/include/bits/stdio.h" 3 4
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
return vfprintf (stdout, __fmt, __arg);
}
extern __inline int
getchar (void)
{
return _IO_getc (stdin);
}
extern __inline int
getc_unlocked (FILE *__fp)
{
return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_pt
r++);
}
extern __inline int
getchar_unlocked (void)
{
return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_rea
d_ptr++);
}
extern __inline int
putchar (int __c)
{
return _IO_putc (__c, stdout);
}
extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c))
: (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c))
: (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putchar_unlocked (int __c)
{
return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (uns
igned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 111 "/usr/include/bits/stdio.h" 3 4
extern __inline int
__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x10) != 0);
}
extern __inline int
__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x20) != 0);
}
# 842 "/usr/include/stdio.h" 2 3 4
# 850 "/usr/include/stdio.h" 3 4
# 71 "mkdosfs.c" 2
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4
# 96 "/usr/include/stdlib.h" 3 4
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
# 140 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
extern double atof (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern int atoi (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern long int atol (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
__extension__ extern long long int atoll (__const char *__nptr)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern double strtod (__const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 182 "/usr/include/stdlib.h" 3 4
extern long int strtol (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern unsigned long int strtoul (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern long long int strtoq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern long long int strtoll (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 279 "/usr/include/stdlib.h" 3 4
extern double __strtod_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern float __strtof_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern long double __strtold_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern long int __strtol_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
__extension__
extern unsigned long long int __strtoull_internal (__const char *
__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern __inline double
__attribute__ ((__nothrow__)) strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
__attribute__ ((__nothrow__)) strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
__attribute__ ((__nothrow__)) strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 364 "/usr/include/stdlib.h" 3 4
__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
extern __inline double
__attribute__ ((__nothrow__)) atof (__const char *__nptr)
{
return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
{
return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
__attribute__ ((__nothrow__)) atol (__const char *__nptr)
{
return strtol (__nptr, (char **) ((void *)0), 10);
}
__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
{
return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 429 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
extern long int a64l (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
# 445 "/usr/include/stdlib.h" 3 4
extern long int random (void) __attribute__ ((__nothrow__));
extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
extern char *initstate (unsigned int __seed, char *__statebuf,
size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
struct random_data
{
int32_t *fptr;
int32_t *rptr;
int32_t *state;
int rand_type;
int rand_deg;
int rand_sep;
int32_t *end_ptr;
};
extern int random_r (struct random_data *__restrict __buf,
int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srandom_r (unsigned int __seed, struct random_data *__buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
size_t __statelen,
struct random_data *__restrict __buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
extern int setstate_r (char *__restrict __statebuf,
struct random_data *__restrict __buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int rand (void) __attribute__ ((__nothrow__));
extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
extern double drand48 (void) __attribute__ ((__nothrow__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int lrand48 (void) __attribute__ ((__nothrow__));
extern long int nrand48 (unsigned short int __xsubi[3])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int mrand48 (void) __attribute__ ((__nothrow__));
extern long int jrand48 (unsigned short int __xsubi[3])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
struct drand48_data
{
unsigned short int __x[3];
unsigned short int __old_x[3];
unsigned short int __c;
unsigned short int __init;
unsigned long long int __a;
};
extern int drand48_r (struct drand48_data *__restrict __buffer,
double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int mrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int seed48_r (unsigned short int __seed16v[3],
struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lcong48_r (unsigned short int __param[7],
struct drand48_data *__buffer)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
# 597 "/usr/include/stdlib.h" 3 4
extern void *realloc (void *__ptr, size_t __size)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
extern void free (void *__ptr) __attribute__ ((__nothrow__));
extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
# 1 "/usr/include/alloca.h" 1 3 4
# 25 "/usr/include/alloca.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 26 "/usr/include/alloca.h" 2 3 4
extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
# 613 "/usr/include/stdlib.h" 2 3 4
extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
# 658 "/usr/include/stdlib.h" 3 4
extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern char *__secure_getenv (__const char *__name)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int setenv (__const char *__name, __const char *__value, int __replace)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
extern int clearenv (void) __attribute__ ((__nothrow__));
# 698 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 709 "/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 729 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int system (__const char *__command) ;
# 757 "/usr/include/stdlib.h" 3 4
extern char *realpath (__const char *__restrict __name,
char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
typedef int (*__compar_fn_t) (__const void *, __const void *);
extern void *bsearch (__const void *__key, __const void *__base,
size_t __nmemb, size_t __size, __compar_fn_t __compar)
__attribute__ ((__nonnull__ (1, 2, 5))) ;
extern void qsort (void *__base, size_t __nmemb, size_t __size,
__compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern div_t div (int __numer, int __denom)
__attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
__attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
# 822 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *gcvt (double __value, int __ndigit, char *__buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
extern char *qecvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qecvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
extern int mbtowc (wchar_t *__restrict __pwc,
__const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
__const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
extern size_t wcstombs (char *__restrict __s,
__const wchar_t *__restrict __pwcs, size_t __n)
__attribute__ ((__nothrow__));
extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 927 "/usr/include/stdlib.h" 3 4
extern int posix_openpt (int __oflag) ;
# 962 "/usr/include/stdlib.h" 3 4
extern int getloadavg (double __loadavg[], int __nelem)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 978 "/usr/include/stdlib.h" 3 4
# 72 "mkdosfs.c" 2
# 1 "/usr/include/sys/ioctl.h" 1 3 4
# 24 "/usr/include/sys/ioctl.h" 3 4
# 1 "/usr/include/bits/ioctls.h" 1 3 4
# 24 "/usr/include/bits/ioctls.h" 3 4
# 1 "/usr/include/asm/ioctls.h" 1 3 4
# 1 "/usr/include/asm-x86_64/ioctls.h" 1 3 4
# 5 "/usr/include/asm/ioctls.h" 2 3 4
# 25 "/usr/include/bits/ioctls.h" 2 3 4
# 28 "/usr/include/sys/ioctl.h" 2 3 4
# 1 "/usr/include/bits/ioctl-types.h" 1 3 4
# 28 "/usr/include/bits/ioctl-types.h" 3 4
struct winsize
{
unsigned short int ws_row;
unsigned short int ws_col;
unsigned short int ws_xpixel;
unsigned short int ws_ypixel;
};
struct termio
{
unsigned short int c_iflag;
unsigned short int c_oflag;
unsigned short int c_cflag;
unsigned short int c_lflag;
unsigned char c_line;
unsigned char c_cc[8];
};
# 31 "/usr/include/sys/ioctl.h" 2 3 4
# 1 "/usr/include/sys/ttydefaults.h" 1 3 4
# 38 "/usr/include/sys/ioctl.h" 2 3 4
extern int ioctl (int __fd, unsigned long int __request, ...) __attribute__ ((__nothrow__));
# 73 "mkdosfs.c" 2
# 1 "/usr/include/sys/stat.h" 1 3 4
# 37 "/usr/include/sys/stat.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 38 "/usr/include/sys/stat.h" 2 3 4
# 103 "/usr/include/sys/stat.h" 3 4
# 1 "/usr/include/bits/stat.h" 1 3 4
# 43 "/usr/include/bits/stat.h" 3 4
struct stat
{
__dev_t st_dev;
__ino_t st_ino;
__nlink_t st_nlink;
__mode_t st_mode;
__uid_t st_uid;
__gid_t st_gid;
int pad0;
__dev_t st_rdev;
__off_t st_size;
__blksize_t st_blksize;
__blkcnt_t st_blocks;
# 88 "/usr/include/bits/stat.h" 3 4
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
# 103 "/usr/include/bits/stat.h" 3 4
long int __unused[3];
# 112 "/usr/include/bits/stat.h" 3 4
};
# 106 "/usr/include/sys/stat.h" 2 3 4
# 207 "/usr/include/sys/stat.h" 3 4
extern int stat (__const char *__restrict __file,
struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
# 259 "/usr/include/sys/stat.h" 3 4
extern int lstat (__const char *__restrict __file,
struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
# 280 "/usr/include/sys/stat.h" 3 4
extern int chmod (__const char *__file, __mode_t __mode)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int lchmod (__const char *__file, __mode_t __mode)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__));
# 307 "/usr/include/sys/stat.h" 3 4
extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__));
# 316 "/usr/include/sys/stat.h" 3 4
extern int mkdir (__const char *__path, __mode_t __mode)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 331 "/usr/include/sys/stat.h" 3 4
extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 345 "/usr/include/sys/stat.h" 3 4
extern int mkfifo (__const char *__path, __mode_t __mode)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 380 "/usr/include/sys/stat.h" 3 4
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
extern int __xstat (int __ver, __const char *__filename,
struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __lxstat (int __ver, __const char *__filename,
struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __fxstatat (int __ver, int __fildes, __const char *__filename,
struct stat *__stat_buf, int __flag)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
# 423 "/usr/include/sys/stat.h" 3 4
extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
__dev_t *__dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
extern int __xmknodat (int __ver, int __fd, __const char *__path,
__mode_t __mode, __dev_t *__dev)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 5)));
extern __inline__ int
__attribute__ ((__nothrow__)) stat (__const char *__path, struct stat *__statbuf)
{
return __xstat (1, __path, __statbuf);
}
extern __inline__ int
__attribute__ ((__nothrow__)) lstat (__const char *__path, struct stat *__statbuf)
{
return __lxstat (1, __path, __statbuf);
}
extern __inline__ int
__attribute__ ((__nothrow__)) fstat (int __fd, struct stat *__statbuf)
{
return __fxstat (1, __fd, __statbuf);
}
# 463 "/usr/include/sys/stat.h" 3 4
extern __inline__ int
__attribute__ ((__nothrow__)) mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
{
return __xmknod (0, __path, __mode, &__dev);
}
# 515 "/usr/include/sys/stat.h" 3 4
# 74 "mkdosfs.c" 2
# 1 "/usr/include/unistd.h" 1 3 4
# 28 "/usr/include/unistd.h" 3 4
# 171 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/bits/posix_opt.h" 1 3 4
# 172 "/usr/include/unistd.h" 2 3 4
# 195 "/usr/include/unistd.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 196 "/usr/include/unistd.h" 2 3 4
# 224 "/usr/include/unistd.h" 3 4
typedef __useconds_t useconds_t;
# 236 "/usr/include/unistd.h" 3 4
typedef __intptr_t intptr_t;
typedef __socklen_t socklen_t;
# 256 "/usr/include/unistd.h" 3 4
extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 299 "/usr/include/unistd.h" 3 4
extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__));
# 318 "/usr/include/unistd.h" 3 4
extern int close (int __fd);
extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
# 382 "/usr/include/unistd.h" 3 4
extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) ;
# 391 "/usr/include/unistd.h" 3 4
extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__));
# 403 "/usr/include/unistd.h" 3 4
extern unsigned int sleep (unsigned int __seconds);
extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
__attribute__ ((__nothrow__));
extern int usleep (__useconds_t __useconds);
# 427 "/usr/include/unistd.h" 3 4
extern int pause (void);
extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) ;
extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 455 "/usr/include/unistd.h" 3 4
extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int fchdir (int __fd) __attribute__ ((__nothrow__)) ;
# 469 "/usr/include/unistd.h" 3 4
extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) ;
# 482 "/usr/include/unistd.h" 3 4
extern char *getwd (char *__buf)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;
extern int dup (int __fd) __attribute__ ((__nothrow__)) ;
extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__));
extern char **__environ;
extern int execve (__const char *__path, char *__const __argv[],
char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 514 "/usr/include/unistd.h" 3 4
extern int execv (__const char *__path, char *__const __argv[])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int execle (__const char *__path, __const char *__arg, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int execl (__const char *__path, __const char *__arg, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int execvp (__const char *__file, char *__const __argv[])
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int execlp (__const char *__file, __const char *__arg, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int nice (int __inc) __attribute__ ((__nothrow__)) ;
extern void _exit (int __status) __attribute__ ((__noreturn__));
# 1 "/usr/include/bits/confname.h" 1 3 4
# 26 "/usr/include/bits/confname.h" 3 4
enum
{
_PC_LINK_MAX,
_PC_MAX_CANON,
_PC_MAX_INPUT,
_PC_NAME_MAX,
_PC_PATH_MAX,
_PC_PIPE_BUF,
_PC_CHOWN_RESTRICTED,
_PC_NO_TRUNC,
_PC_VDISABLE,
_PC_SYNC_IO,
_PC_ASYNC_IO,
_PC_PRIO_IO,
_PC_SOCK_MAXBUF,
_PC_FILESIZEBITS,
_PC_REC_INCR_XFER_SIZE,
_PC_REC_MAX_XFER_SIZE,
_PC_REC_MIN_XFER_SIZE,
_PC_REC_XFER_ALIGN,
_PC_ALLOC_SIZE_MIN,
_PC_SYMLINK_MAX,
_PC_2_SYMLINKS
};
enum
{
_SC_ARG_MAX,
_SC_CHILD_MAX,
_SC_CLK_TCK,
_SC_NGROUPS_MAX,
_SC_OPEN_MAX,
_SC_STREAM_MAX,
_SC_TZNAME_MAX,
_SC_JOB_CONTROL,
_SC_SAVED_IDS,
_SC_REALTIME_SIGNALS,
_SC_PRIORITY_SCHEDULING,
_SC_TIMERS,
_SC_ASYNCHRONOUS_IO,
_SC_PRIORITIZED_IO,
_SC_SYNCHRONIZED_IO,
_SC_FSYNC,
_SC_MAPPED_FILES,
_SC_MEMLOCK,
_SC_MEMLOCK_RANGE,
_SC_MEMORY_PROTECTION,
_SC_MESSAGE_PASSING,
_SC_SEMAPHORES,
_SC_SHARED_MEMORY_OBJECTS,
_SC_AIO_LISTIO_MAX,
_SC_AIO_MAX,
_SC_AIO_PRIO_DELTA_MAX,
_SC_DELAYTIMER_MAX,
_SC_MQ_OPEN_MAX,
_SC_MQ_PRIO_MAX,
_SC_VERSION,
_SC_PAGESIZE,
_SC_RTSIG_MAX,
_SC_SEM_NSEMS_MAX,
_SC_SEM_VALUE_MAX,
_SC_SIGQUEUE_MAX,
_SC_TIMER_MAX,
_SC_BC_BASE_MAX,
_SC_BC_DIM_MAX,
_SC_BC_SCALE_MAX,
_SC_BC_STRING_MAX,
_SC_COLL_WEIGHTS_MAX,
_SC_EQUIV_CLASS_MAX,
_SC_EXPR_NEST_MAX,
_SC_LINE_MAX,
_SC_RE_DUP_MAX,
_SC_CHARCLASS_NAME_MAX,
_SC_2_VERSION,
_SC_2_C_BIND,
_SC_2_C_DEV,
_SC_2_FORT_DEV,
_SC_2_FORT_RUN,
_SC_2_SW_DEV,
_SC_2_LOCALEDEF,
_SC_PII,
_SC_PII_XTI,
_SC_PII_SOCKET,
_SC_PII_INTERNET,
_SC_PII_OSI,
_SC_POLL,
_SC_SELECT,
_SC_UIO_MAXIOV,
_SC_IOV_MAX = _SC_UIO_MAXIOV,
_SC_PII_INTERNET_STREAM,
_SC_PII_INTERNET_DGRAM,
_SC_PII_OSI_COTS,
_SC_PII_OSI_CLTS,
_SC_PII_OSI_M,
_SC_T_IOV_MAX,
_SC_THREADS,
_SC_THREAD_SAFE_FUNCTIONS,
_SC_GETGR_R_SIZE_MAX,
_SC_GETPW_R_SIZE_MAX,
_SC_LOGIN_NAME_MAX,
_SC_TTY_NAME_MAX,
_SC_THREAD_DESTRUCTOR_ITERATIONS,
_SC_THREAD_KEYS_MAX,
_SC_THREAD_STACK_MIN,
_SC_THREAD_THREADS_MAX,
_SC_THREAD_ATTR_STACKADDR,
_SC_THREAD_ATTR_STACKSIZE,
_SC_THREAD_PRIORITY_SCHEDULING,
_SC_THREAD_PRIO_INHERIT,
_SC_THREAD_PRIO_PROTECT,
_SC_THREAD_PROCESS_SHARED,
_SC_NPROCESSORS_CONF,
_SC_NPROCESSORS_ONLN,
_SC_PHYS_PAGES,
_SC_AVPHYS_PAGES,
_SC_ATEXIT_MAX,
_SC_PASS_MAX,
_SC_XOPEN_VERSION,
_SC_XOPEN_XCU_VERSION,
_SC_XOPEN_UNIX,
_SC_XOPEN_CRYPT,
_SC_XOPEN_ENH_I18N,
_SC_XOPEN_SHM,
_SC_2_CHAR_TERM,
_SC_2_C_VERSION,
_SC_2_UPE,
_SC_XOPEN_XPG2,
_SC_XOPEN_XPG3,
_SC_XOPEN_XPG4,
_SC_CHAR_BIT,
_SC_CHAR_MAX,
_SC_CHAR_MIN,
_SC_INT_MAX,
_SC_INT_MIN,
_SC_LONG_BIT,
_SC_WORD_BIT,
_SC_MB_LEN_MAX,
_SC_NZERO,
_SC_SSIZE_MAX,
_SC_SCHAR_MAX,
_SC_SCHAR_MIN,
_SC_SHRT_MAX,
_SC_SHRT_MIN,
_SC_UCHAR_MAX,
_SC_UINT_MAX,
_SC_ULONG_MAX,
_SC_USHRT_MAX,
_SC_NL_ARGMAX,
_SC_NL_LANGMAX,
_SC_NL_MSGMAX,
_SC_NL_NMAX,
_SC_NL_SETMAX,
_SC_NL_TEXTMAX,
_SC_XBS5_ILP32_OFF32,
_SC_XBS5_ILP32_OFFBIG,
_SC_XBS5_LP64_OFF64,
_SC_XBS5_LPBIG_OFFBIG,
_SC_XOPEN_LEGACY,
_SC_XOPEN_REALTIME,
_SC_XOPEN_REALTIME_THREADS,
_SC_ADVISORY_INFO,
_SC_BARRIERS,
_SC_BASE,
_SC_C_LANG_SUPPORT,
_SC_C_LANG_SUPPORT_R,
_SC_CLOCK_SELECTION,
_SC_CPUTIME,
_SC_THREAD_CPUTIME,
_SC_DEVICE_IO,
_SC_DEVICE_SPECIFIC,
_SC_DEVICE_SPECIFIC_R,
_SC_FD_MGMT,
_SC_FIFO,
_SC_PIPE,
_SC_FILE_ATTRIBUTES,
_SC_FILE_LOCKING,
_SC_FILE_SYSTEM,
_SC_MONOTONIC_CLOCK,
_SC_MULTI_PROCESS,
_SC_SINGLE_PROCESS,
_SC_NETWORKING,
_SC_READER_WRITER_LOCKS,
_SC_SPIN_LOCKS,
_SC_REGEXP,
_SC_REGEX_VERSION,
_SC_SHELL,
_SC_SIGNALS,
_SC_SPAWN,
_SC_SPORADIC_SERVER,
_SC_THREAD_SPORADIC_SERVER,
_SC_SYSTEM_DATABASE,
_SC_SYSTEM_DATABASE_R,
_SC_TIMEOUTS,
_SC_TYPED_MEMORY_OBJECTS,
_SC_USER_GROUPS,
_SC_USER_GROUPS_R,
_SC_2_PBS,
_SC_2_PBS_ACCOUNTING,
_SC_2_PBS_LOCATE,
_SC_2_PBS_MESSAGE,
_SC_2_PBS_TRACK,
_SC_SYMLOOP_MAX,
_SC_STREAMS,
_SC_2_PBS_CHECKPOINT,
_SC_V6_ILP32_OFF32,
_SC_V6_ILP32_OFFBIG,
_SC_V6_LP64_OFF64,
_SC_V6_LPBIG_OFFBIG,
_SC_HOST_NAME_MAX,
_SC_TRACE,
_SC_TRACE_EVENT_FILTER,
_SC_TRACE_INHERIT,
_SC_TRACE_LOG,
_SC_LEVEL1_ICACHE_SIZE,
_SC_LEVEL1_ICACHE_ASSOC,
_SC_LEVEL1_ICACHE_LINESIZE,
_SC_LEVEL1_DCACHE_SIZE,
_SC_LEVEL1_DCACHE_ASSOC,
_SC_LEVEL1_DCACHE_LINESIZE,
_SC_LEVEL2_CACHE_SIZE,
_SC_LEVEL2_CACHE_ASSOC,
_SC_LEVEL2_CACHE_LINESIZE,
_SC_LEVEL3_CACHE_SIZE,
_SC_LEVEL3_CACHE_ASSOC,
_SC_LEVEL3_CACHE_LINESIZE,
_SC_LEVEL4_CACHE_SIZE,
_SC_LEVEL4_CACHE_ASSOC,
_SC_LEVEL4_CACHE_LINESIZE,
_SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
_SC_RAW_SOCKETS
};
enum
{
_CS_PATH,
_CS_V6_WIDTH_RESTRICTED_ENVS,
_CS_GNU_LIBC_VERSION,
_CS_GNU_LIBPTHREAD_VERSION,
_CS_LFS_CFLAGS = 1000,
_CS_LFS_LDFLAGS,
_CS_LFS_LIBS,
_CS_LFS_LINTFLAGS,
_CS_LFS64_CFLAGS,
_CS_LFS64_LDFLAGS,
_CS_LFS64_LIBS,
_CS_LFS64_LINTFLAGS,
_CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
_CS_XBS5_ILP32_OFF32_LDFLAGS,
_CS_XBS5_ILP32_OFF32_LIBS,
_CS_XBS5_ILP32_OFF32_LINTFLAGS,
_CS_XBS5_ILP32_OFFBIG_CFLAGS,
_CS_XBS5_ILP32_OFFBIG_LDFLAGS,
_CS_XBS5_ILP32_OFFBIG_LIBS,
_CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
_CS_XBS5_LP64_OFF64_CFLAGS,
_CS_XBS5_LP64_OFF64_LDFLAGS,
_CS_XBS5_LP64_OFF64_LIBS,
_CS_XBS5_LP64_OFF64_LINTFLAGS,
_CS_XBS5_LPBIG_OFFBIG_CFLAGS,
_CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
_CS_XBS5_LPBIG_OFFBIG_LIBS,
_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
_CS_POSIX_V6_ILP32_OFF32_CFLAGS,
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
_CS_POSIX_V6_ILP32_OFF32_LIBS,
_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_LIBS,
_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
_CS_POSIX_V6_LP64_OFF64_CFLAGS,
_CS_POSIX_V6_LP64_OFF64_LDFLAGS,
_CS_POSIX_V6_LP64_OFF64_LIBS,
_CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
};
# 553 "/usr/include/unistd.h" 2 3 4
extern long int pathconf (__const char *__path, int __name)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__));
extern long int sysconf (int __name) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__));
extern __pid_t getpid (void) __attribute__ ((__nothrow__));
extern __pid_t getppid (void) __attribute__ ((__nothrow__));
extern __pid_t getpgrp (void) __attribute__ ((__nothrow__));
# 589 "/usr/include/unistd.h" 3 4
extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
# 598 "/usr/include/unistd.h" 3 4
extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__));
# 615 "/usr/include/unistd.h" 3 4
extern int setpgrp (void) __attribute__ ((__nothrow__));
# 632 "/usr/include/unistd.h" 3 4
extern __pid_t setsid (void) __attribute__ ((__nothrow__));
extern __uid_t getuid (void) __attribute__ ((__nothrow__));
extern __uid_t geteuid (void) __attribute__ ((__nothrow__));
extern __gid_t getgid (void) __attribute__ ((__nothrow__));
extern __gid_t getegid (void) __attribute__ ((__nothrow__));
extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) ;
# 665 "/usr/include/unistd.h" 3 4
extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__));
extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__));
extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__));
extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__));
extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__));
extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__));
# 721 "/usr/include/unistd.h" 3 4
extern __pid_t fork (void) __attribute__ ((__nothrow__));
extern __pid_t vfork (void) __attribute__ ((__nothrow__));
extern char *ttyname (int __fd) __attribute__ ((__nothrow__));
extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
extern int isatty (int __fd) __attribute__ ((__nothrow__));
extern int ttyslot (void) __attribute__ ((__nothrow__));
extern int link (__const char *__from, __const char *__to)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
# 767 "/usr/include/unistd.h" 3 4
extern int symlink (__const char *__from, __const char *__to)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
extern ssize_t readlink (__const char *__restrict __path,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
# 790 "/usr/include/unistd.h" 3 4
extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 799 "/usr/include/unistd.h" 3 4
extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__));
extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__));
extern char *getlogin (void);
# 826 "/usr/include/unistd.h" 3 4
extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 835 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/getopt.h" 1 3 4
# 59 "/usr/include/getopt.h" 3 4
extern char *optarg;
# 73 "/usr/include/getopt.h" 3 4
extern int optind;
extern int opterr;
extern int optopt;
# 152 "/usr/include/getopt.h" 3 4
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
__attribute__ ((__nothrow__));
# 836 "/usr/include/unistd.h" 2 3 4
extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sethostname (__const char *__name, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int sethostid (long int __id) __attribute__ ((__nothrow__)) ;
extern int getdomainname (char *__name, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int setdomainname (__const char *__name, size_t __len)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int vhangup (void) __attribute__ ((__nothrow__));
extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern int profil (unsigned short int *__sample_buffer, size_t __size,
size_t __offset, unsigned int __scale)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int acct (__const char *__name) __attribute__ ((__nothrow__));
extern char *getusershell (void) __attribute__ ((__nothrow__));
extern void endusershell (void) __attribute__ ((__nothrow__));
extern void setusershell (void) __attribute__ ((__nothrow__));
extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) ;
extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
# 921 "/usr/include/unistd.h" 3 4
extern int fsync (int __fd);
extern long int gethostid (void);
extern void sync (void) __attribute__ ((__nothrow__));
extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int getdtablesize (void) __attribute__ ((__nothrow__));
extern int truncate (__const char *__file, __off_t __length)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 968 "/usr/include/unistd.h" 3 4
extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) ;
# 988 "/usr/include/unistd.h" 3 4
extern int brk (void *__addr) __attribute__ ((__nothrow__)) ;
extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__));
# 1009 "/usr/include/unistd.h" 3 4
extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__));
# 1063 "/usr/include/unistd.h" 3 4
extern int fdatasync (int __fildes) __attribute__ ((__nothrow__));
# 1101 "/usr/include/unistd.h" 3 4
# 76 "mkdosfs.c" 2
# 1 "/usr/include/time.h" 1 3 4
# 31 "/usr/include/time.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 40 "/usr/include/time.h" 2 3 4
# 1 "/usr/include/bits/time.h" 1 3 4
# 44 "/usr/include/time.h" 2 3 4
# 59 "/usr/include/time.h" 3 4
typedef __clock_t clock_t;
# 132 "/usr/include/time.h" 3 4
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long int tm_gmtoff;
__const char *tm_zone;
};
struct itimerspec
{
struct timespec it_interval;
struct timespec it_value;
};
struct sigevent;
# 181 "/usr/include/time.h" 3 4
extern clock_t clock (void) __attribute__ ((__nothrow__));
extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));
extern double difftime (time_t __time1, time_t __time0)
__attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));
extern size_t strftime (char *__restrict __s, size_t __maxsize,
__const char *__restrict __format,
__const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
# 229 "/usr/include/time.h" 3 4
extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));
extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));
extern struct tm *gmtime_r (__const time_t *__restrict __timer,
struct tm *__restrict __tp) __attribute__ ((__nothrow__));
extern struct tm *localtime_r (__const time_t *__restrict __timer,
struct tm *__restrict __tp) __attribute__ ((__nothrow__));
extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));
extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));
extern char *asctime_r (__const struct tm *__restrict __tp,
char *__restrict __buf) __attribute__ ((__nothrow__));
extern char *ctime_r (__const time_t *__restrict __timer,
char *__restrict __buf) __attribute__ ((__nothrow__));
extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;
extern char *tzname[2];
extern void tzset (void) __attribute__ ((__nothrow__));
extern int daylight;
extern long int timezone;
extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
# 312 "/usr/include/time.h" 3 4
extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));
extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));
extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 327 "/usr/include/time.h" 3 4
extern int nanosleep (__const struct timespec *__requested_time,
struct timespec *__remaining);
extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));
extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));
extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
__attribute__ ((__nothrow__));
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
__const struct timespec *__req,
struct timespec *__rem);
extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));
extern int timer_create (clockid_t __clock_id,
struct sigevent *__restrict __evp,
timer_t *__restrict __timerid) __attribute__ ((__nothrow__));
extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));
extern int timer_settime (timer_t __timerid, int __flags,
__const struct itimerspec *__restrict __value,
struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));
extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
__attribute__ ((__nothrow__));
extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
# 416 "/usr/include/time.h" 3 4
# 77 "mkdosfs.c" 2
# 1 "/usr/include/errno.h" 1 3 4
# 32 "/usr/include/errno.h" 3 4
# 1 "/usr/include/bits/errno.h" 1 3 4
# 25 "/usr/include/bits/errno.h" 3 4
# 1 "/usr/include/linux/errno.h" 1 3 4
# 1 "/usr/include/asm/errno.h" 1 3 4
# 1 "/usr/include/asm-x86_64/errno.h" 1 3 4
# 5 "/usr/include/asm/errno.h" 2 3 4
# 5 "/usr/include/linux/errno.h" 2 3 4
# 26 "/usr/include/bits/errno.h" 2 3 4
# 43 "/usr/include/bits/errno.h" 3 4
extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 37 "/usr/include/errno.h" 2 3 4
# 59 "/usr/include/errno.h" 3 4
# 78 "mkdosfs.c" 2
# 1 "/usr/include/libgen.h" 1 3 4
# 24 "/usr/include/libgen.h" 3 4
extern char *dirname (char *__path) __attribute__ ((__nothrow__));
extern char *__xpg_basename (char *__path) __attribute__ ((__nothrow__));
# 79 "mkdosfs.c" 2
# 1 "/usr/include/dirent.h" 1 3 4
# 28 "/usr/include/dirent.h" 3 4
# 62 "/usr/include/dirent.h" 3 4
# 1 "/usr/include/bits/dirent.h" 1 3 4
# 23 "/usr/include/bits/dirent.h" 3 4
struct dirent
{
__ino_t d_ino;
__off_t d_off;
unsigned short int d_reclen;
unsigned char d_type;
char d_name[256];
};
# 63 "/usr/include/dirent.h" 2 3 4
# 98 "/usr/include/dirent.h" 3 4
enum
{
DT_UNKNOWN = 0,
DT_FIFO = 1,
DT_CHR = 2,
DT_DIR = 4,
DT_BLK = 6,
DT_REG = 8,
DT_LNK = 10,
DT_SOCK = 12,
DT_WHT = 14
};
# 128 "/usr/include/dirent.h" 3 4
typedef struct __dirstream DIR;
extern DIR *opendir (__const char *__name) __attribute__ ((__nonnull__ (1)));
# 150 "/usr/include/dirent.h" 3 4
extern int closedir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 163 "/usr/include/dirent.h" 3 4
extern struct dirent *readdir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 184 "/usr/include/dirent.h" 3 4
extern int readdir_r (DIR *__restrict __dirp,
struct dirent *__restrict __entry,
struct dirent **__restrict __result)
__attribute__ ((__nonnull__ (1, 2, 3)));
# 209 "/usr/include/dirent.h" 3 4
extern void rewinddir (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void seekdir (DIR *__dirp, long int __pos) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern long int telldir (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int dirfd (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
# 153 "/usr/include/bits/posix1_lim.h" 3 4
# 1 "/usr/include/bits/local_lim.h" 1 3 4
# 36 "/usr/include/bits/local_lim.h" 3 4
# 1 "/usr/include/linux/limits.h" 1 3 4
# 37 "/usr/include/bits/local_lim.h" 2 3 4
# 154 "/usr/include/bits/posix1_lim.h" 2 3 4
# 233 "/usr/include/dirent.h" 2 3 4
# 243 "/usr/include/dirent.h" 3 4
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include/stddef.h" 1 3 4
# 244 "/usr/include/dirent.h" 2 3 4
extern int scandir (__const char *__restrict __dir,
struct dirent ***__restrict __namelist,
int (*__selector) (__const struct dirent *),
int (*__cmp) (__const void *, __const void *))
__attribute__ ((__nonnull__ (1, 2)));
# 280 "/usr/include/dirent.h" 3 4
extern int alphasort (__const void *__e1, __const void *__e2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 324 "/usr/include/dirent.h" 3 4
extern __ssize_t getdirentries (int __fd, char *__restrict __buf,
size_t __nbytes,
__off_t *__restrict __basep)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
# 349 "/usr/include/dirent.h" 3 4
# 80 "mkdosfs.c" 2
# 1 "/usr/include/linux/version.h" 1 3 4
# 82 "mkdosfs.c" 2
# 117 "mkdosfs.c"
# 1 "/usr/include/linux/unistd.h" 1 3 4
# 1 "/usr/include/asm/unistd.h" 1 3 4
# 1 "/usr/include/asm-x86_64/unistd.h" 1 3 4
# 5 "/usr/include/asm/unistd.h" 2 3 4
# 9 "/usr/include/linux/unistd.h" 2 3 4
# 1 "/usr/include/sys/syscall.h" 1 3 4
# 32 "/usr/include/sys/syscall.h" 3 4
# 1 "/usr/include/bits/syscall.h" 1 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 8 "/usr/include/bits/syscall.h" 2 3 4
# 33 "/usr/include/sys/syscall.h" 2 3 4
# 10 "/usr/include/linux/unistd.h" 2 3 4
# 118 "mkdosfs.c" 2
static loff_t llseek( int fd, loff_t offset, int whence )
{
return lseek(fd, offset, whence);
}
# 165 "mkdosfs.c"
inline int
cdiv (int a, int b)
{
return (a + b - 1) / b;
}
# 218 "mkdosfs.c"
struct msdos_volume_info {
__u8 drive_number;
__u8 RESERVED;
__u8 ext_boot_sign;
__u8 volume_id[4];
__u8 volume_label[11];
__u8 fs_type[8];
} __attribute__ ((packed));
struct msdos_boot_sector
{
__u8 boot_jump[3];
__u8 system_id[8];
__u8 sector_size[2];
__u8 cluster_size;
__u16 reserved;
__u8 fats;
__u8 dir_entries[2];
__u8 sectors[2];
__u8 media;
__u16 fat_length;
__u16 secs_track;
__u16 heads;
__u32 hidden;
__u32 total_sect;
union {
struct {
struct msdos_volume_info vi;
__u8 boot_code[448];
} __attribute__ ((packed)) _oldfat;
struct {
__u32 fat32_length;
__u16 flags;
__u8 version[2];
__u32 root_cluster;
__u16 info_sector;
__u16 backup_boot;
__u16 reserved2[6];
struct msdos_volume_info vi;
__u8 boot_code[420];
} __attribute__ ((packed)) _fat32;
} __attribute__ ((packed)) fstype;
__u16 boot_sign;
} __attribute__ ((packed));
struct fat32_fsinfo {
__u32 reserved1;
__u32 signature;
__u32 free_clusters;
__u32 next_cluster;
__u32 reserved2[4];
};
struct msdos_dir_slot {
__u8 id;
__u8 name0_4[10];
__u8 attr;
__u8 reserved;
__u8 alias_checksum;
__u8 name5_10[12];
__u16 start;
__u8 name11_12[4];
};
struct msdos_dir_entry
{
char name[8], ext[3];
__u8 attr;
__u8 lcase;
__u8 ctime_ms;
__u16 ctime;
__u16 cdate;
__u16 adate;
__u16 starthi;
__u16 time, date, start;
__u32 size;
} __attribute__ ((packed));
char dummy_boot_jump[3] = { 0xeb, 0x3c, 0x90 };
char dummy_boot_jump_m68k[2] = { 0x60, 0x1c };
char dummy_boot_code[448] =
"\x0e"
"\x1f"
"\xbe\x5b\x7c"
"\xac"
"\x22\xc0"
"\x74\x0b"
"\x56"
"\xb4\x0e"
"\xbb\x07\x00"
"\xcd\x10"
"\x5e"
"\xeb\xf0"
"\x32\xe4"
"\xcd\x16"
"\xcd\x19"
"\xeb\xfe"
"This is not a bootable disk. Please insert a bootable floppy and\r\n"
"press any key to try again ... \r\n";
struct dir_entry {
int root;
int count;
int entries;
struct msdos_dir_entry *table;
};
static char *template_boot_code;
static int use_template = 0;
static char *program_name = "mkdosfs";
static char *device_name = ((void *)0);
static int atari_format = 0;
static int check = 0;
static int verbose = 0;
static long volume_id;
static time_t create_time;
static char volume_name[] = " ";
static int blocks;
static int sector_size = 512;
static int sector_size_set = 0;
static int backup_boot = 0;
static int reserved_sectors = 0;
static int badblocks = 0;
static int nr_fats = 2;
static int size_fat = 0;
static int size_fat_by_user = 0;
static int dev = -1;
static int ignore_full_disk = 0;
static unsigned int currently_testing = 0;
static struct msdos_boot_sector bs;
static int start_data_sector;
static int start_data_block;
static unsigned char *fat;
static unsigned char *info_sector;
static struct msdos_dir_entry *root_dir;
static int size_root_dir;
static int sectors_per_cluster = 0;
static int root_dir_entries = 0;
static int root_dir_num_entries = 0;
static int last_cluster_written = 0;
static char *blank_sector;
static void fatal_error (const char *fmt_string) __attribute__((noreturn));
static void mark_FAT_cluster (int cluster, unsigned int value);
static void mark_FAT_sector (int sector, unsigned int value);
static long do_check (char *buffer, int try, unsigned int current_block);
static void alarm_intr (int alnum);
static void check_blocks (void);
static void get_list_blocks (char *filename);
static int valid_offset (int fd, loff_t offset);
static int count_blocks (char *filename);
static void check_mount (char *device_name);
static void establish_params (int device_num, int size);
static void setup_tables (void);
static void write_tables (void);
static void
fatal_error (const char *fmt_string)
{
fprintf (stderr, fmt_string, program_name, device_name);
exit (1);
}
static void
mark_FAT_cluster (int cluster, unsigned int value)
{
switch( size_fat ) {
case 12:
value &= 0x0fff;
if (((cluster * 3) & 0x1) == 0)
{
fat[3 * cluster / 2] = (unsigned char) (value & 0x00ff);
fat[(3 * cluster / 2) + 1] = (unsigned char) ((fat[(3 * cluster / 2) + 1] & 0x00f0)
| ((value & 0x0f00) >> 8));
}
else
{
fat[3 * cluster / 2] = (unsigned char) ((fat[3 * cluster / 2] & 0x000f) | ((value & 0x000f) << 4));
fat[(3 * cluster / 2) + 1] = (unsigned char) ((value & 0x0ff0) >> 4);
}
break;
case 16:
value &= 0xffff;
fat[2 * cluster] = (unsigned char) (value & 0x00ff);
fat[(2 * cluster) + 1] = (unsigned char) (value >> 8);
break;
case 32:
value &= 0xfffffff;
fat[4 * cluster] = (unsigned char) (value & 0x000000ff);
fat[(4 * cluster) + 1] = (unsigned char) ((value & 0x0000ff00) >> 8);
fat[(4 * cluster) + 2] = (unsigned char) ((value & 0x00ff0000) >> 16);
fat[(4 * cluster) + 3] = (unsigned char) ((value & 0xff000000) >> 24);
break;
default:
fatal_error( "%s: " "Bad FAT size (not 12, 16, or 32)" "\n" );
}
}
static void
mark_FAT_sector (int sector, unsigned int value)
{
int cluster;
cluster = (sector - start_data_sector) / (int) (bs.cluster_size) /
(sector_size/512);
if (cluster < 0)
fatal_error( "%s: " "Invalid cluster number in mark_FAT_sector: probably bug!" "\n" );
mark_FAT_cluster (cluster, value);
}
static long
do_check (char *buffer, int try, unsigned int current_block)
{
long got;
if (llseek (dev, (loff_t)current_block * (1<<10), 0)
!= (loff_t)current_block * (1<<10))
fatal_error( "%s: " "seek failed during testing for blocks" "\n" );
got = read (dev, buffer, try * (1<<10));
if (got < 0)
got = 0;
if (got & ((1<<10) - 1))
printf ("Unexpected values in do_check: probably bugs\n");
got /= (1<<10);
return got;
}
static void
alarm_intr (int alnum)
{
if (currently_testing >= blocks)
return;
signal (14, alarm_intr);
alarm (5);
if (!currently_testing)
return;
printf ("%d... ", currently_testing);
fflush (stdout);
}
static void
check_blocks (void)
{
int try, got;
int i;
static char blkbuf[(1<<10) * 16];
if (verbose)
{
printf ("Searching for bad blocks ");
fflush (stdout);
}
currently_testing = 0;
if (verbose)
{
signal (14, alarm_intr);
alarm (5);
}
try = 16;
while (currently_testing < blocks)
{
if (currently_testing + try > blocks)
try = blocks - currently_testing;
got = do_check (blkbuf, try, currently_testing);
currently_testing += got;
if (got == try)
{
try = 16;
continue;
}
else
try = 1;
if (currently_testing < start_data_block)
fatal_error( "%s: " "bad blocks before data-area: cannot make fs" "\n" );
for (i = 0; i < ( (1<<10) / 512 ); i++)
mark_FAT_sector( currently_testing * ( (1<<10) / 512 ) + i, 0x0ffffff7 );
badblocks++;
currently_testing++;
}
if (verbose)
printf ("\n");
if (badblocks)
printf ("%d bad block%s\n", badblocks,
(badblocks > 1) ? "s" : "");
}
static void
get_list_blocks (char *filename)
{
int i;
FILE *listfile;
unsigned long blockno;
listfile = fopen (filename, "r");
if (listfile == (FILE *) ((void *)0))
fatal_error( "%s: " "Can't open file of bad blocks" "\n" );
while (!feof (listfile))
{
fscanf (listfile, "%ld\n", &blockno);
for (i = 0; i < ( (1<<10) / 512 ); i++)
mark_FAT_sector( blockno * ( (1<<10) / 512 ) + i, 0x0ffffff7 );
badblocks++;
}
fclose (listfile);
if (badblocks)
printf ("%d bad block%s\n", badblocks,
(badblocks > 1) ? "s" : "");
}
static int
valid_offset (int fd, loff_t offset)
{
char ch;
if (llseek (fd, offset, 0) < 0)
return 0;
if (read (fd, &ch, 1) < 1)
return 0;
return 1;
}
static int
count_blocks (char *filename)
{
loff_t high, low;
int fd;
if ((fd = open (filename, 00)) < 0)
{
perror (filename);
exit (1);
}
if ((low = llseek(fd, 0, 2)) <= 0) {
low = 0;
for (high = 1; valid_offset (fd, high); high *= 2)
low = high;
while (low < high - 1) {
const loff_t mid = (low + high) / 2;
if (valid_offset (fd, mid))
low = mid;
else
high = mid;
}
++low;
}
close (fd);
return low / (1<<10);
}
static void
check_mount (char *device_name)
{
FILE *f;
struct mntent *mnt;
if ((f = setmntent ("/etc/mtab", "r")) == ((void *)0))
return;
while ((mnt = getmntent (f)) != ((void *)0))
if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (device_name) && __builtin_constant_p (mnt->mnt_fsname) && (__
s1_len = strlen (device_name), __s2_len = strlen (mnt->mnt_fsname), (!((size_t)(const void *)((device_name) + 1) - (size_t)(const void *
)(device_name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((mnt->mnt_fsname) + 1) - (size_t)(const void *)(mnt->mnt_fsname) ==
1) || __s2_len >= 4)) ? __builtin_strcmp (device_name, mnt->mnt_fsname) : (__builtin_constant_p (device_name) && ((size_t)(const void *)
((device_name) + 1) - (size_t)(const void *)(device_name) == 1) && (__s1_len = strlen (device_name), __s1_len < 4) ? (__builtin_constant
_p (mnt->mnt_fsname) && ((size_t)(const void *)((mnt->mnt_fsname) + 1) - (size_t)(const void *)(mnt->mnt_fsname) == 1) ? __builtin_strcm
p (device_name, mnt->mnt_fsname) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (mnt->mnt_
fsname); register int __result = (((__const unsigned char *) (__const char *) (device_name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((__const unsigned char *) (__const char *) (device_name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __re
sult = (((__const unsigned char *) (__const char *) (device_name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__con
st unsigned char *) (__const char *) (device_name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (mnt->mnt_fsname) && ((siz
e_t)(const void *)((mnt->mnt_fsname) + 1) - (size_t)(const void *)(mnt->mnt_fsname) == 1) && (__s2_len = strlen (mnt->mnt_fsname), __s2_
len < 4) ? (__builtin_constant_p (device_name) && ((size_t)(const void *)((device_name) + 1) - (size_t)(const void *)(device_name) == 1)
? __builtin_strcmp (device_name, mnt->mnt_fsname) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const
char *) (device_name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (mnt->mnt_fsname))[0]; if (__s2_len
> 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (mnt->mnt_fsname))[1]); if (__s2_len > 1 && _
_result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (mnt->mnt_fsname))[2]); if (__s2_len > 2 && __result =
= 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (mnt->mnt_fsname))[3]); } } __result; }))) : __builtin_strcmp (de
vice_name, mnt->mnt_fsname)))); }) == 0)
fatal_error( "%s: " "%s contains a mounted file system." "\n" );
endmntent (f);
}
static void
establish_params (int device_num,int size)
{
long loop_size;
struct hd_geometry geometry;
struct floppy_struct param;
if ((0 == device_num) || ((device_num & 0xff00) == 0x0200))
{
if (0 == device_num)
{
param.size = size/512;
switch(param.size)
{
case 720:
param.sect = 9 ;
param.head = 2;
break;
case 1440:
param.sect = 9;
param.head = 2;
break;
case 2400:
param.sect = 15;
param.head = 2;
break;
case 2880:
param.sect = 18;
param.head = 2;
break;
case 5760:
param.sect = 36;
param.head = 2;
break;
default:
param.sect = 32;
param.head = 64;
break;
}
}
else
{
if (ioctl (dev, (((2U) << (((0 +8)+8)+14)) | (((2)) << (0 +8)) | (((0x04)) << 0) | ((sizeof(struct floppy_struct)) << ((0 +8)+8))), &
param))
fatal_error( "%s: " "unable to get diskette geometry for '%s'" "\n" );
}
bs.secs_track = (param.sect);
bs.heads = (param.head);
switch (param.size)
{
case 720:
bs.media = (char) 0xfd;
bs.cluster_size = (char) 2;
bs.dir_entries[0] = (char) 112;
bs.dir_entries[1] = (char) 0;
break;
case 1440:
bs.media = (char) 0xf9;
bs.cluster_size = (char) 2;
bs.dir_entries[0] = (char) 112;
bs.dir_entries[1] = (char) 0;
break;
case 2400:
bs.media = (char) 0xf9;
bs.cluster_size = (char)(atari_format ? 2 : 1);
bs.dir_entries[0] = (char) 224;
bs.dir_entries[1] = (char) 0;
break;
case 5760:
bs.media = (char) 0xf0;
bs.cluster_size = (char) 2;
bs.dir_entries[0] = (char) 224;
bs.dir_entries[1] = (char) 0;
break;
case 2880:
floppy_default:
bs.media = (char) 0xf0;
bs.cluster_size = (char)(atari_format ? 2 : 1);
bs.dir_entries[0] = (char) 224;
bs.dir_entries[1] = (char) 0;
break;
default:
if (0 == device_num)
goto def_hd_params;
else
goto floppy_default;
}
}
else if ((device_num & 0xff00) == 0x0700)
{
if (ioctl (dev, (((0U) << (((0 +8)+8)+14)) | (((0x12)) << (0 +8)) | (((96)) << 0) | ((0) << ((0 +8)+8))), &loop_size))
fatal_error( "%s: " "unable to get loop geometry for '%s'" "\n" );
loop_size = loop_size >> 1;
switch (loop_size)
{
case 720:
bs.secs_track = (9);
bs.heads = (2);
bs.media = (char) 0xfd;
bs.cluster_size = (char) 2;
bs.dir_entries[0] = (char) 112;
bs.dir_entries[1] = (char) 0;
break;
case 1440:
bs.secs_track = (9);
bs.heads = (2);
bs.media = (char) 0xf9;
bs.cluster_size = (char) 2;
bs.dir_entries[0] = (char) 112;
bs.dir_entries[1] = (char) 0;
break;
case 2400:
bs.secs_track = (15);
bs.heads = (2);
bs.media = (char) 0xf9;
bs.cluster_size = (char)(atari_format ? 2 : 1);
bs.dir_entries[0] = (char) 224;
bs.dir_entries[1] = (char) 0;
break;
case 5760:
bs.secs_track = (36);
bs.heads = (2);
bs.media = (char) 0xf0;
bs.cluster_size = (char) 2;
bs.dir_entries[0] = (char) 224;
bs.dir_entries[1] = (char) 0;
break;
case 2880:
bs.secs_track = (18);
bs.heads = (2);
bs.media = (char) 0xf0;
bs.cluster_size = (char)(atari_format ? 2 : 1);
bs.dir_entries[0] = (char) 224;
bs.dir_entries[1] = (char) 0;
break;
default:
printf("Loop device does not match a floppy size, using "
"default hd params\n");
bs.secs_track = (32);
bs.heads = (64);
goto def_hd_params;
}
}
else
{
if (ioctl (dev, 0x0301, &geometry))
fatal_error( "%s: " "unable to get drive geometry for '%s'" "\n" );
bs.secs_track = (geometry.sectors);
bs.heads = (geometry.heads);
def_hd_params:
bs.media = (char) 0xf8;
bs.dir_entries[0] = (char) 0;
bs.dir_entries[1] = (char) 2;
if (size_fat == 32) {
unsigned long sz_mb =
(blocks+(1<<(20-10))-1) >> (20-10);
bs.cluster_size = sz_mb >= 16*1024 ? 32 :
sz_mb >= 8*1024 ? 16 :
sz_mb >= 256 ? 8 :
1;
}
else {
bs.cluster_size = (char) 4;
}
}
}
static void
setup_tables (void)
{
unsigned num_sectors;
unsigned cluster_count = 0, fat_length;
unsigned fatdata;
struct tm *ctime;
struct msdos_volume_info *vi = (size_fat == 32 ? &bs.fstype._fat32.vi : &bs.fstype._oldfat.vi);
if (atari_format)
__builtin_strncpy (bs.system_id-1, "mkdosf", 6);
else
strcpy (bs.system_id, "mkdosfs");
if (sectors_per_cluster)
bs.cluster_size = (char) sectors_per_cluster;
if (size_fat == 32)
{
bs.dir_entries[0] = bs.dir_entries[1] = (char) 0;
root_dir_entries = 0;
}
else if (root_dir_entries)
{
bs.dir_entries[0] = (char) (root_dir_entries & 0x00ff);
bs.dir_entries[1] = (char) ((root_dir_entries & 0xff00) >> 8);
}
else
root_dir_entries = bs.dir_entries[0] + (bs.dir_entries[1] << 8);
if (atari_format) {
bs.system_id[5] = (unsigned char) (volume_id & 0x000000ff);
bs.system_id[6] = (unsigned char) ((volume_id & 0x0000ff00) >> 8);
bs.system_id[7] = (unsigned char) ((volume_id & 0x00ff0000) >> 16);
}
else {
vi->volume_id[0] = (unsigned char) (volume_id & 0x000000ff);
vi->volume_id[1] = (unsigned char) ((volume_id & 0x0000ff00) >> 8);
vi->volume_id[2] = (unsigned char) ((volume_id & 0x00ff0000) >> 16);
vi->volume_id[3] = (unsigned char) (volume_id >> 24);
}
if (bs.media == 0xf8) {
vi->drive_number = 0x80;
}
else {
vi->drive_number = 0x00;
}
if (!atari_format) {
memcpy(vi->volume_label, volume_name, 11);
memcpy(bs.boot_jump, dummy_boot_jump, 3);
bs.boot_jump[1] = ((size_fat == 32 ?
(char *)&bs.fstype._fat32.boot_code :
(char *)&bs.fstype._oldfat.boot_code) -
(char *)&bs) - 2;
if (size_fat == 32) {
int offset = (char *)&bs.fstype._fat32.boot_code -
(char *)&bs + 29 + 0x7c00;
if (dummy_boot_code[420 -1])
printf ("Warning: message too long; truncated\n");
dummy_boot_code[420 -1] = 0;
memcpy(bs.fstype._fat32.boot_code, dummy_boot_code, 420);
bs.fstype._fat32.boot_code[3] = offset & 0xff;
bs.fstype._fat32.boot_code[3 +1] = offset >> 8;
}
else {
memcpy(bs.fstype._oldfat.boot_code, dummy_boot_code, 448);
}
bs.boot_sign = (0xAA55);
}
else {
memcpy(bs.boot_jump, dummy_boot_jump_m68k, 2);
}
if (verbose >= 2)
printf( "Boot jump code is %02x %02x\n",
bs.boot_jump[0], bs.boot_jump[1] );
if (!reserved_sectors)
reserved_sectors = (size_fat == 32) ? 32 : 1;
else {
if (size_fat == 32 && reserved_sectors < 2)
fatal_error( "%s: " "On FAT32 at least 2 reserved sectors are needed." "\n" );
}
bs.reserved = (reserved_sectors);
if (verbose >= 2)
printf( "Using %d reserved sectors\n", reserved_sectors );
bs.fats = (char) nr_fats;
if (!atari_format || size_fat == 32)
bs.hidden = bs.secs_track;
else
memset( &bs.hidden, 0, 2 );
num_sectors = (long long)blocks*(1<<10)/sector_size;
if (!atari_format) {
unsigned fatlength12, fatlength16, fatlength32;
unsigned maxclust12, maxclust16, maxclust32;
unsigned clust12, clust16, clust32;
int maxclustsize;
fatdata = num_sectors - cdiv (root_dir_entries * 32, sector_size) -
reserved_sectors;
if (sectors_per_cluster)
bs.cluster_size = maxclustsize = sectors_per_cluster;
else
maxclustsize = 128;
if (verbose >= 2)
printf( "%d sectors for FAT+data, starting with %d sectors/cluster\n",
fatdata, bs.cluster_size );
do {
if (verbose >= 2)
printf( "Trying with %d sectors/cluster:\n", bs.cluster_size );
clust12 = 2*((long long) fatdata *sector_size + nr_fats*3) /
(2*(int) bs.cluster_size * sector_size + nr_fats*3);
fatlength12 = cdiv (((clust12+2) * 3 + 1) >> 1, sector_size);
clust12 = (fatdata - nr_fats*fatlength12)/bs.cluster_size;
maxclust12 = (fatlength12 * 2 * sector_size) / 3;
if (maxclust12 > ((1 << 12) - 16))
maxclust12 = ((1 << 12) - 16);
if (verbose >= 2)
printf( "FAT12: #clu=%u, fatlen=%u, maxclu=%u, limit=%u\n",
clust12, fatlength12, maxclust12, ((1 << 12) - 16) );
if (clust12 > maxclust12-2) {
clust12 = 0;
if (verbose >= 2)
printf( "FAT12: too much clusters\n" );
}
clust16 = ((long long) fatdata *sector_size + nr_fats*4) /
((int) bs.cluster_size * sector_size + nr_fats*2);
fatlength16 = cdiv ((clust16+2) * 2, sector_size);
clust16 = (fatdata - nr_fats*fatlength16)/bs.cluster_size;
maxclust16 = (fatlength16 * sector_size) / 2;
if (maxclust16 > ((1 << 16) - 16))
maxclust16 = ((1 << 16) - 16);
if (verbose >= 2)
printf( "FAT16: #clu=%u, fatlen=%u, maxclu=%u, limit=%u\n",
clust16, fatlength16, maxclust16, ((1 << 16) - 16) );
if (clust16 > maxclust16-2) {
if (verbose >= 2)
printf( "FAT16: too much clusters\n" );
clust16 = 0;
}
if (clust16 < 4078 && !(size_fat_by_user && size_fat == 16)) {
if (verbose >= 2)
printf( clust16 < 4078 ?
"FAT16: would be misdetected as FAT12\n" :
"FAT16: too much clusters\n" );
clust16 = 0;
}
clust32 = ((long long) fatdata *sector_size + nr_fats*8) /
((int) bs.cluster_size * sector_size + nr_fats*4);
fatlength32 = cdiv ((clust32+2) * 4, sector_size);
clust32 = (fatdata - nr_fats*fatlength32)/bs.cluster_size;
maxclust32 = (fatlength32 * sector_size) / 4;
if (maxclust32 > ((1 << 28) - 16))
maxclust32 = ((1 << 28) - 16);
if (verbose >= 2)
printf( "FAT32: #clu=%u, fatlen=%u, maxclu=%u, limit=%u\n",
clust32, fatlength32, maxclust32, ((1 << 28) - 16) );
if (clust32 > maxclust32) {
clust32 = 0;
if (verbose >= 2)
printf( "FAT32: too much clusters\n" );
}
if ((clust12 && (size_fat == 0 || size_fat == 12)) ||
(clust16 && (size_fat == 0 || size_fat == 16)) ||
(clust32 && size_fat == 32))
break;
bs.cluster_size <<= 1;
} while (bs.cluster_size && bs.cluster_size <= maxclustsize);
if (!size_fat) {
size_fat = (clust16 > clust12) ? 16 : 12;
if (verbose >= 2)
printf( "Choosing %d bits for FAT\n", size_fat );
}
switch (size_fat) {
case 12:
cluster_count = clust12;
fat_length = fatlength12;
bs.fat_length = (fatlength12);
memcpy(vi->fs_type, "FAT12 ", 8);
break;
case 16:
if (clust16 < 4078) {
if (size_fat_by_user) {
fprintf( stderr, "WARNING: Not enough clusters for a "
"16 bit FAT! The filesystem will be\n"
"misinterpreted as having a 12 bit FAT without "
"mount option \"fat=16\".\n" );
}
else {
fprintf( stderr, "This filesystem has an unfortunate size. "
"A 12 bit FAT cannot provide\n"
"enough clusters, but a 16 bit FAT takes up a little "
"bit more space so that\n"
"the total number of clusters becomes less than the "
"threshold value for\n"
"distinction between 12 and 16 bit FATs.\n" );
fatal_error( "%s: " "Make the file system a bit smaller manually." "\n" );
}
}
cluster_count = clust16;
fat_length = fatlength16;
bs.fat_length = (fatlength16);
memcpy(vi->fs_type, "FAT16 ", 8);
break;
case 32:
cluster_count = clust32;
fat_length = fatlength32;
bs.fat_length = (0);
bs.fstype._fat32.fat32_length = (fatlength32);
memcpy(vi->fs_type, "FAT32 ", 8);
break;
default:
fatal_error( "%s: " "FAT not 12, 16 or 32 bits" "\n" );
}
}
else {
unsigned clusters, maxclust;
if (!size_fat)
size_fat = (num_sectors == 1440 || num_sectors == 2400 ||
num_sectors == 2880 || num_sectors == 5760) ? 12 : 16;
if (verbose >= 2)
printf( "Choosing %d bits for FAT\n", size_fat );
bs.cluster_size = sectors_per_cluster ? sectors_per_cluster : 2;
if (!sector_size_set) {
while( num_sectors > 65531 ) {
num_sectors >>= 1;
sector_size <<= 1;
}
}
if (verbose >= 2)
printf( "Sector size must be %d to have less than %d log. sectors\n",
sector_size, 65531 );
do {
fatdata = num_sectors - cdiv (root_dir_entries * 32, sector_size) -
reserved_sectors;
clusters = (2*((long long)fatdata*sector_size - 2*nr_fats*size_fat/8)) /
(2*((int)bs.cluster_size*sector_size + nr_fats*size_fat/8));
fat_length = cdiv( (clusters+2)*size_fat/8, sector_size );
clusters = (fatdata - nr_fats*fat_length)/bs.cluster_size;
maxclust = (fat_length*sector_size*8)/size_fat;
if (verbose >= 2)
printf( "ss=%d: #clu=%d, fat_len=%d, maxclu=%d\n",
sector_size, clusters, fat_length, maxclust );
if (maxclust <= (size_fat == 32 ? ((1 << 28) - 16) : (1<<size_fat)-0x10) &&
clusters <= maxclust-2)
break;
if (verbose >= 2)
printf( clusters > maxclust-2 ?
"Too many clusters\n" : "FAT too big\n" );
if (sector_size_set)
fatal_error( "%s: " "With this sector size, the maximum number of FAT entries " "would be exceeded." "\n" );
num_sectors >>= 1;
sector_size <<= 1;
} while( sector_size <= (16*1024) );
if (sector_size > (16*1024))
fatal_error( "%s: " "Would need a sector size > 16k, which GEMDOS can't work with" "\n" );
cluster_count = clusters;
if (size_fat != 32)
bs.fat_length = (fat_length);
else {
bs.fat_length = 0;
bs.fstype._fat32.fat32_length = (fat_length);
}
}
bs.sector_size[0] = (char) (sector_size & 0x00ff);
bs.sector_size[1] = (char) ((sector_size & 0xff00) >> 8);
if (size_fat == 32)
{
bs.fstype._fat32.flags = (0);
bs.fstype._fat32.version[0] = 0;
bs.fstype._fat32.version[1] = 0;
bs.fstype._fat32.root_cluster = (2);
bs.fstype._fat32.info_sector = (1);
if (!backup_boot)
backup_boot = (reserved_sectors >= 7) ? 6 :
(reserved_sectors >= 2) ? reserved_sectors-1 : 0;
else
{
if (backup_boot == 1)
fatal_error( "%s: " "Backup boot sector must be after sector 1" "\n" );
else if (backup_boot >= reserved_sectors)
fatal_error( "%s: " "Backup boot sector must be a reserved sector" "\n" );
}
if (verbose >= 2)
printf( "Using sector %d as backup boot sector (0 = none)\n",
backup_boot );
bs.fstype._fat32.backup_boot = (backup_boot);
memset( &bs.fstype._fat32.reserved2, 0, sizeof(bs.fstype._fat32.reserved2) );
}
if (atari_format) {
if (num_sectors >= 65531)
fatal_error( "%s: " "GEMDOS can't handle more than 65531 sectors" "\n" );
else if (num_sectors >= 32765)
printf( "Warning: More than 32765 sector need TOS 1.04 "
"or higher.\n" );
}
if (num_sectors >= 65536)
{
bs.sectors[0] = (char) 0;
bs.sectors[1] = (char) 0;
bs.total_sect = (num_sectors);
}
else
{
bs.sectors[0] = (char) (num_sectors & 0x00ff);
bs.sectors[1] = (char) ((num_sectors & 0xff00) >> 8);
if (!atari_format)
bs.total_sect = (0);
}
if (!atari_format)
vi->ext_boot_sign = 0x29;
if (!cluster_count)
{
if (sectors_per_cluster)
fatal_error( "%s: " "Too many clusters for file system - try more sectors per cluster" "\n" );
else
fatal_error( "%s: " "Attempting to create a too large file system" "\n" );
}
start_data_sector = (reserved_sectors + nr_fats * fat_length) *
(sector_size/512);
start_data_block = (start_data_sector + ( (1<<10) / 512 ) - 1) /
( (1<<10) / 512 );
if (blocks < start_data_block + 32)
fatal_error( "%s: " "Too few blocks for viable file system" "\n" );
if (verbose)
{
printf("%s has %d head%s and %d sector%s per track,\n",
device_name, (bs.heads), ((bs.heads) != 1) ? "s" : "",
(bs.secs_track), ((bs.secs_track) != 1) ? "s" : "");
printf("logical sector size is %d,\n",sector_size);
printf("using 0x%02x media descriptor, with %d sectors;\n",
(int) (bs.media), num_sectors);
printf("file system has %d %d-bit FAT%s and %d sector%s per cluster.\n",
(int) (bs.fats), size_fat, (bs.fats != 1) ? "s" : "",
(int) (bs.cluster_size), (bs.cluster_size != 1) ? "s" : "");
printf ("FAT size is %d sector%s, and provides %d cluster%s.\n",
fat_length, (fat_length != 1) ? "s" : "",
cluster_count, (cluster_count != 1) ? "s" : "");
if (size_fat != 32)
printf ("Root directory contains %d slots.\n",
(int) (bs.dir_entries[0]) + (int) (bs.dir_entries[1]) * 256);
printf ("Volume ID is %08lx, ", volume_id &
(atari_format ? 0x00ffffff : 0xffffffff));
if ( __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (volume_name) && __builtin_constant_p (" ") && (_
_s1_len = strlen (volume_name), __s2_len = strlen (" "), (!((size_t)(const void *)((volume_name) + 1) - (size_t)(const void *)
(volume_name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((" ") + 1) - (size_t)(const void *)(" ") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (volume_name, " ") : (__builtin_constant_p (volume_name) && ((size_t)(const void *)((volum
e_name) + 1) - (size_t)(const void *)(volume_name) == 1) && (__s1_len = strlen (volume_name), __s1_len < 4) ? (__builtin_constant_p ("
") && ((size_t)(const void *)((" ") + 1) - (size_t)(const void *)(" ") == 1) ? __builtin_strcmp (volume_nam
e, " ") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (" "); register
int __result = (((__const unsigned char *) (__const char *) (volume_name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result
= (((__const unsigned char *) (__const char *) (volume_name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const
unsigned char *) (__const char *) (volume_name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char
*) (__const char *) (volume_name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (" ") && ((size_t)(const void *)(
(" ") + 1) - (size_t)(const void *)(" ") == 1) && (__s2_len = strlen (" "), __s2_len < 4) ? (__builtin_con
stant_p (volume_name) && ((size_t)(const void *)((volume_name) + 1) - (size_t)(const void *)(volume_name) == 1) ? __builtin_strcmp (volu
me_name, " ") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (volume_name); regi
ster int __result = __s1[0] - ((__const unsigned char *) (__const char *) (" "))[0]; if (__s2_len > 0 && __result == 0) { __re
sult = (__s1[1] - ((__const unsigned char *) (__const char *) (" "))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s
1[2] - ((__const unsigned char *) (__const char *) (" "))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__co
nst unsigned char *) (__const char *) (" "))[3]); } } __result; }))) : __builtin_strcmp (volume_name, " ")))); }) )
printf("volume label %s.\n", volume_name);
else
printf("no volume label.\n");
}
if ((fat = (unsigned char *) malloc (fat_length * sector_size)) == ((void *)0))
fatal_error( "%s: " "unable to allocate space for FAT image in memory" "\n" );
memset( fat, 0, fat_length * sector_size );
mark_FAT_cluster (0, 0xffffffff);
mark_FAT_cluster (1, 0xffffffff);
fat[0] = (unsigned char) bs.media;
if (size_fat == 32) {
mark_FAT_cluster (2, (atari_format ? 0x0fffffff : 0x0ffffff8));
}
size_root_dir = (size_fat == 32) ?
bs.cluster_size*sector_size :
(((int)bs.dir_entries[1]*256+(int)bs.dir_entries[0]) *
sizeof (struct msdos_dir_entry));
if ((root_dir = (struct msdos_dir_entry *) malloc (size_root_dir)) == ((void *)0))
{
free (fat);
fatal_error( "%s: " "unable to allocate space for root directory in memory" "\n" );
}
last_cluster_written = 2;
memset(root_dir, 0, size_root_dir);
if ( memcmp(volume_name, " ", 11) )
{
struct msdos_dir_entry *de = &root_dir[0];
memcpy(de->name, volume_name, 11);
de->attr = 8;
ctime = localtime(&create_time);
de->time = ((unsigned short)((ctime->tm_sec >> 1) + (ctime->tm_min << 5) + (ctime->tm_hour << 11)));
de->date = ((unsigned short)(ctime->tm_mday + ((ctime->tm_mon+1) << 5) + ((ctime->tm_year-80) << 9)));
de->ctime_ms = 0;
de->ctime = de->time;
de->cdate = de->date;
de->adate = de->date;
de->starthi = (0);
de->start = (0);
de->size = (0);
}
if (size_fat == 32) {
struct fat32_fsinfo *info;
if (!(info_sector = malloc( sector_size )))
fatal_error( "%s: " "Out of memory" "\n" );
memset(info_sector, 0, sector_size);
info = (struct fat32_fsinfo *)(info_sector + 0x1e0);
info_sector[0] = 'R';
info_sector[1] = 'R';
info_sector[2] = 'a';
info_sector[3] = 'A';
info->signature = (0x61417272);
info->free_clusters = (cluster_count - 1);
info->next_cluster = (2);
*(__u16 *)(info_sector + 0x1fe) = (0xAA55);
}
if (!(blank_sector = malloc( sector_size )))
fatal_error( "%s: " "Out of memory" "\n" );
memset(blank_sector, 0, sector_size);
}
# 1384 "mkdosfs.c"
static void
write_tables (void)
{
int x;
int fat_length;
fat_length = (size_fat == 32) ?
(bs.fstype._fat32.fat32_length) : (bs.fat_length);
do { loff_t __pos = (0); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root_dir); f
atal_error( "%s: " "seek to " "start of device" " failed whilst writing tables" "\n" ); } while(0); } while(0);
for( x = 0; x < reserved_sectors; ++x )
do { int __size = (sector_size); if (write (dev, blank_sector, __size) != __size) do { free (fat); if (info_sector) free (info_secto
r); free (root_dir); fatal_error( "%s: " "failed whilst writing " "reserved sector" "\n" ); } while(0); } while(0);
do { loff_t __pos = (0); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root_dir); f
atal_error( "%s: " "seek to " "boot sector" " failed whilst writing tables" "\n" ); } while(0); } while(0);
do { int __size = (sizeof (struct msdos_boot_sector)); if (write (dev, (char *) &bs, __size) != __size) do { free (fat); if (info_sect
or) free (info_sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "boot sector" "\n" ); } while(0); } while(0);
if (size_fat == 32)
{
do { loff_t __pos = ((bs.fstype._fat32.info_sector)*sector_size); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_s
ector) free (info_sector); free (root_dir); fatal_error( "%s: " "seek to " "info sector" " failed whilst writing tables" "\n" ); } while
(0); } while(0);
do { int __size = (512); if (write (dev, info_sector, __size) != __size) do { free (fat); if (info_sector) free (info_sector); fre
e (root_dir); fatal_error( "%s: " "failed whilst writing " "info sector" "\n" ); } while(0); } while(0);
if (backup_boot != 0)
{
do { loff_t __pos = (backup_boot*sector_size); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sect
or); free (root_dir); fatal_error( "%s: " "seek to " "backup boot sector" " failed whilst writing tables" "\n" ); } while(0); } while(0)
;
do { int __size = (sizeof (struct msdos_boot_sector)); if (write (dev, (char *) &bs, __size) != __size) do { free (fat); if (info_sec
tor) free (info_sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "backup boot sector" "\n" ); } while(0); } while(
0);
}
}
do { loff_t __pos = (reserved_sectors*sector_size); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_
sector); free (root_dir); fatal_error( "%s: " "seek to " "first FAT" " failed whilst writing tables" "\n" ); } while(0); } while(0);
for (x = 1; x <= nr_fats; x++)
do { int __size = (fat_length * sector_size); if (write (dev, fat, __size) != __size) do { free (fat); if (info_sector) free (info_s
ector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "FAT" "\n" ); } while(0); } while(0);
do { int __size = (size_root_dir); if (write (dev, (char *) root_dir, __size) != __size) do { free (fat); if (info_sector) free (info_
sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "root directory" "\n" ); } while(0); } while(0);
if (use_template == 1) {
do { loff_t __pos = (0); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root_dir);
fatal_error( "%s: " "seek to " "Start of partition" " failed whilst writing tables" "\n" ); } while(0); } while(0);
if (size_fat == 32) {
do { int __size = (3); if (write (dev, template_boot_code, __size) != __size) do { free (fat); if (info_sector) free (info_sector)
; free (root_dir); fatal_error( "%s: " "failed whilst writing " "backup jmpBoot" "\n" ); } while(0); } while(0);
do { loff_t __pos = (0x5a); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root_
dir); fatal_error( "%s: " "seek to " "sector 1 boot area" " failed whilst writing tables" "\n" ); } while(0); } while(0);
do { int __size = (420); if (write (dev, template_boot_code+0x5a, __size) != __size) do { free (fat); if (info_sector) free (info_
sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "sector 1 boot area" "\n" ); } while(0); } while(0);
do { loff_t __pos = (512*2); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root
_dir); fatal_error( "%s: " "seek to " "third sector" " failed whilst writing tables" "\n" ); } while(0); } while(0);
if (backup_boot != 0) {
do { int __size = (backup_boot*sector_size - 512*2); if (write (dev, template_boot_code+512*2, __size) != __size) do { free (fat
); if (info_sector) free (info_sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "data to backup boot" "\n" ); } wh
ile(0); } while(0);
do { loff_t __pos = (backup_boot*sector_size); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector
); free (root_dir); fatal_error( "%s: " "seek to " "backup boot sector" " failed whilst writing tables" "\n" ); } while(0); } while(0);
do { int __size = (3); if (write (dev, template_boot_code, __size) != __size) do { free (fat); if (info_sector) free (info_secto
r); free (root_dir); fatal_error( "%s: " "failed whilst writing " "backup jmpBoot" "\n" ); } while(0); } while(0);
do { loff_t __pos = (backup_boot*sector_size+0x5a); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_s
ector); free (root_dir); fatal_error( "%s: " "seek to " "backup boot sector boot area" " failed whilst writing tables" "\n" ); } while(0
); } while(0);
do { int __size = (420); if (write (dev, template_boot_code+0x5a, __size) != __size) do { free (fat); if (info_sector) free (inf
o_sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "backup boot sector boot area" "\n" ); } while(0); } while(0);
do { loff_t __pos = ((backup_boot+2)*sector_size); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (
info_sector); free (root_dir); fatal_error( "%s: " "seek to " "sector following backup code" " failed whilst writing tables" "\n" ); } w
hile(0); } while(0);
do { int __size = ((reserved_sectors-backup_boot-2)*512); if (write (dev, template_boot_code+(backup_boot+2)*sector_size, __size
) != __size) do { free (fat); if (info_sector) free (info_sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "remain
ing data" "\n" ); } while(0); } while(0);
} else {
do { int __size = ((reserved_sectors-2)*512); if (write (dev, template_boot_code+512*2, __size) != __size) do { free (fat); if (
info_sector) free (info_sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "remaining data" "\n" ); } while(0); } wh
ile(0);
}
} else {
do { int __size = (3); if (write (dev, template_boot_code, __size) != __size) do { free (fat); if (info_sector) free (info_sector)
; free (root_dir); fatal_error( "%s: " "failed whilst writing " "jmpBoot" "\n" ); } while(0); } while(0);
do { loff_t __pos = (0x3e); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root_
dir); fatal_error( "%s: " "seek to " "sector 1 boot area" " failed whilst writing tables" "\n" ); } while(0); } while(0);
do { int __size = (448); if (write (dev, template_boot_code+0x3e, __size) != __size) do { free (fat); if (info_sector) free (info_
sector); free (root_dir); fatal_error( "%s: " "failed whilst writing " "boot code" "\n" ); } while(0); } while(0);
}
}
if (info_sector) free( info_sector );
free (root_dir);
free (fat);
}
static void copy_filename(char *filename, char *base, char *ext) {
char *ch = filename;
int i, len;
memset(base, 0x20, 8);
memset(ext, 0x20, 3);
for(len = 0 ; *ch && *ch != '.'; ch++) {
base[len++] = toupper(*ch);
if (len == 8) break;
}
for ( ; *ch && *ch != '.'; ch++);
if (*ch) ch++;
for(len = 0 ; *ch; ch++) {
ext[len++] = toupper(*ch);
if (len == 3) break;
}
}
# 1490 "mkdosfs.c"
unsigned char check_attrib_file(char *dir, char *filename) {
char attrib[4] = { '-', '-', '-' };
unsigned char *buffer = 0;
int ret = 0;
int fd = -1;
buffer = (char *) calloc(1, strlen(dir) + strlen(filename) + 10);
if (!buffer) return 0;
sprintf(buffer, "%s/.attrib.%s", dir, filename);
if (access(buffer, 4))
goto exit_attrib;
if ((fd = open(buffer, 00, 0)) < 0)
goto exit_attrib;
if (read(fd, attrib, 3) < 0)
goto exit_attrib;
if (attrib[0] == 'H') ret |= 2;
if (attrib[1] == 'S') ret |= 4;
if (attrib[2] == 'A') ret |= 32;
printf("%s: Setting atrribute %x\n", filename, ret);
exit_attrib:
if (fd >= 0) close(fd);
if (buffer) free(buffer);
return ret;
}
static void copy_name(char *buffer, int size, char **pointer) {
int i;
for(i = 0; i < size; i += 2) {
if (*pointer) {
buffer[i] = **pointer;
buffer[i + 1] = 0x00;
*pointer = **pointer ? *pointer + 1 : 0;
}
else {
buffer[i] = 0xFF;
buffer[i + 1] = 0xFF;
}
}
}
static int add_file(char *filename, struct dir_entry *dir, unsigned char attr)
{
struct stat stat;
struct msdos_dir_entry *entry;
int infile = 0;
int sectors, clusters;
struct tm *ctime;
int c, s;
int ptr;
char *buffer, *base;
int start;
int usedsec, totalsec;
char name83[8], ext83[3];
struct msdos_dir_slot *slot;
int i;
char *p;
if (dir->root) {
if (dir->count == dir->entries) {
printf("Error - too many directory entries\n");
}
}
else {
if (dir->count == dir->entries) {
if (!dir->table)
dir->table =
(struct msdos_dir_entry *) malloc(sizeof(struct msdos_dir_entry));
else {
dir->table =
(struct msdos_dir_entry *) realloc(dir->table, (dir->entries + 1) *
sizeof(struct msdos_dir_entry));
memset(&dir->table[dir->entries], 0, sizeof(struct msdos_dir_entry));
}
dir->entries++;
}
}
infile = open(filename, 00, 0);
if (!infile) return;
if (fstat(infile, &stat))
goto exit_add;
if (((((stat.st_mode)) & 0170000) == (0020000)) ||((((stat.st_mode)) & 0170000) == (0060000)) ||
((((stat.st_mode)) & 0170000) == (0010000)) || ((((stat.st_mode)) & 0170000) == (0120000))) {
printf("Error - cannot create a special file in a FATFS\n");
goto exit_add;
}
usedsec = start_data_sector + (size_root_dir / sector_size) +
(last_cluster_written * bs.cluster_size);
totalsec = blocks * (1<<10) / sector_size;
sectors = (stat.st_size + (sector_size - (stat.st_size % sector_size))) / sector_size;
clusters = (sectors + ((int) bs.cluster_size - (sectors % (int) bs.cluster_size))) / (int) bs.cluster_size;
if (usedsec + sectors > totalsec) {
printf("Error - %s is too big (%d vs %d)\n", filename, sectors, totalsec - usedsec);
close(infile);
return -1;
}
printf("ADD %s\n", filename);
base = __xpg_basename(filename);
copy_filename(base, name83, ext83);
slot = (struct msdos_dir_slot *) &dir->table[dir->count++];
slot->id = 'A';
slot->attr = 0x0F;
slot->reserved = 0;
slot->start = 0;
slot->alias_checksum = 0;
for(i = 0; i < 8; i++)
slot->alias_checksum = (((slot->alias_checksum&1)<<7)|((slot->alias_checksum&0xfe)>>1)) + name83[i];
for(i = 0; i < 3; i++)
slot->alias_checksum = (((slot->alias_checksum&1)<<7)|((slot->alias_checksum&0xfe)>>1)) + ext83[i];
p = base;
copy_name(slot->name0_4, 10, &p);
copy_name(slot->name5_10, 12, &p);
copy_name(slot->name11_12, 4, &p);
entry = &dir->table[dir->count++];
__builtin_strncpy (entry->name, name83, 8);
__builtin_strncpy (entry->ext, ext83, 3);
if (!(stat.st_mode & 0200)) attr |= 1;
entry->attr = attr;
ctime = localtime(&create_time);
entry->time = ((unsigned short)((ctime->tm_sec >> 1) + (ctime->tm_min << 5) + (ctime->tm_hour << 11)));
entry->date = ((unsigned short)(ctime->tm_mday + ((ctime->tm_mon+1) << 5) + ((ctime->tm_year-80) << 9)));
entry->ctime_ms = 0;
entry->ctime = entry->time;
entry->cdate = entry->date;
entry->adate = entry->date;
entry->size = stat.st_size;
start = last_cluster_written;
entry->start = (start);
entry->starthi = ((start & 0xFFFF0000) >> 16);
for(c = 0; c < clusters; c++ ) {
int free;
int next = c == (clusters - 1) ? (atari_format ? 0x0fffffff : 0x0ffffff8) : start + c + 1;
mark_FAT_cluster(start + c, next);
last_cluster_written++;
}
ptr = (start_data_sector * sector_size) + size_root_dir;
ptr += (start - 2) * bs.cluster_size * sector_size;
buffer = (char *) malloc(sector_size);
if (!buffer) {
printf("Error - couldn't allocate memory\n");
goto exit_add;
}
do { loff_t __pos = (ptr); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root_dir);
fatal_error( "%s: " "seek to " "datafile" " failed whilst writing tables" "\n" ); } while(0); } while(0);
while(1) {
int size = read(infile, buffer, sector_size);
if (size <= 0) break;
do { int __size = (size); if (write (dev, buffer, __size) != __size) do { free (fat); if (info_sector) free (info_sector); free (roo
t_dir); fatal_error( "%s: " "failed whilst writing " "data" "\n" ); } while(0); } while(0);
}
exit_add:
if (infile) close(infile);
}
static void add_directory(char *filename, struct dir_entry *dir) {
struct dir_entry *newdir = 0;
struct msdos_dir_entry *entry;
struct tm *ctime;
DIR *rddir = opendir(filename);
struct dirent *dentry = 0;
int remain;
char *data;
if (!rddir) return;
if (dir->root) {
if (dir->count == dir->entries) {
printf("Error - too many directory entries\n");
goto exit_add_dir;
}
}
else {
if (dir->count == dir->entries) {
if (!dir->table)
dir->table = (struct msdos_dir_entry *) malloc(sizeof(struct msdos_dir_entry));
else {
dir->table = (struct msdos_dir_entry *) realloc(dir->table, (dir->entries + 1) *
sizeof(struct msdos_dir_entry));
memset(&dir->table[dir->entries], 0, sizeof(struct msdos_dir_entry));
}
dir->entries++;
}
}
newdir = (struct dir_entry *) calloc(1, sizeof(struct dir_entry));
if (!newdir) goto exit_add_dir;
entry = &dir->table[dir->count++];
__builtin_strncpy (entry->name, __xpg_basename(filename), sizeof(entry->name));
entry->attr = 16;
ctime = localtime(&create_time);
entry->time = ((unsigned short)((ctime->tm_sec >> 1) + (ctime->tm_min << 5) + (ctime->tm_hour << 11)));
entry->date = ((unsigned short)(ctime->tm_mday + ((ctime->tm_mon+1) << 5) + ((ctime->tm_year-80) << 9)));
entry->ctime_ms = 0;
entry->ctime = entry->time;
entry->cdate = entry->date;
entry->adate = entry->date;
while((dentry = readdir(rddir))) {
struct stat st;
char *buffer;
if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (dentry->d_name) && __builtin_constant_p (".") && (__s1_len =
strlen (dentry->d_name), __s2_len = strlen ("."), (!((size_t)(const void *)((dentry->d_name) + 1) - (size_t)(const void *)(dentry->d_na
me) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((".") + 1) - (size_t)(const void *)(".") == 1) || __s2_len >= 4)) ? __builtin_s
trcmp (dentry->d_name, ".") : (__builtin_constant_p (dentry->d_name) && ((size_t)(const void *)((dentry->d_name) + 1) - (size_t)(const v
oid *)(dentry->d_name) == 1) && (__s1_len = strlen (dentry->d_name), __s1_len < 4) ? (__builtin_constant_p (".") && ((size_t)(const void
*)((".") + 1) - (size_t)(const void *)(".") == 1) ? __builtin_strcmp (dentry->d_name, ".") : (__extension__ ({ __const unsigned char *_
_s2 = (__const unsigned char *) (__const char *) ("."); register int __result = (((__const unsigned char *) (__const char *) (dentry->d_
name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (dentry->d_name))[1]
- __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (dentry->d_name))[2] - __s2[2])
; if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (dentry->d_name))[3] - __s2[3]); } } __resu
lt; }))) : (__builtin_constant_p (".") && ((size_t)(const void *)((".") + 1) - (size_t)(const void *)(".") == 1) && (__s2_len = strlen (
"."), __s2_len < 4) ? (__builtin_constant_p (dentry->d_name) && ((size_t)(const void *)((dentry->d_name) + 1) - (size_t)(const void *)(d
entry->d_name) == 1) ? __builtin_strcmp (dentry->d_name, ".") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *
) (__const char *) (dentry->d_name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("."))[0]; if (__s2_l
en > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("."))[1]); if (__s2_len > 1 && __result ==
0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("."))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[
3] - ((__const unsigned char *) (__const char *) ("."))[3]); } } __result; }))) : __builtin_strcmp (dentry->d_name, ".")))); }) || !__ex
tension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (dentry->d_name) && __builtin_constant_p ("..") && (__s1_len = strlen (den
try->d_name), __s2_len = strlen (".."), (!((size_t)(const void *)((dentry->d_name) + 1) - (size_t)(const void *)(dentry->d_name) == 1) |
| __s1_len >= 4) && (!((size_t)(const void *)(("..") + 1) - (size_t)(const void *)("..") == 1) || __s2_len >= 4)) ? __builtin_strcmp (de
ntry->d_name, "..") : (__builtin_constant_p (dentry->d_name) && ((size_t)(const void *)((dentry->d_name) + 1) - (size_t)(const void *)(d
entry->d_name) == 1) && (__s1_len = strlen (dentry->d_name), __s1_len < 4) ? (__builtin_constant_p ("..") && ((size_t)(const void *)((".
.") + 1) - (size_t)(const void *)("..") == 1) ? __builtin_strcmp (dentry->d_name, "..") : (__extension__ ({ __const unsigned char *__s2
= (__const unsigned char *) (__const char *) (".."); register int __result = (((__const unsigned char *) (__const char *) (dentry->d_nam
e))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (dentry->d_name))[1] - _
_s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (dentry->d_name))[2] - __s2[2]); i
f (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (dentry->d_name))[3] - __s2[3]); } } __result;
}))) : (__builtin_constant_p ("..") && ((size_t)(const void *)(("..") + 1) - (size_t)(const void *)("..") == 1) && (__s2_len = strlen (
".."), __s2_len < 4) ? (__builtin_constant_p (dentry->d_name) && ((size_t)(const void *)((dentry->d_name) + 1) - (size_t)(const void *)(
dentry->d_name) == 1) ? __builtin_strcmp (dentry->d_name, "..") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char
*) (__const char *) (dentry->d_name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (".."))[0]; if (__s
2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (".."))[1]); if (__s2_len > 1 && __resul
t == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (".."))[2]); if (__s2_len > 2 && __result == 0) __result = (
__s1[3] - ((__const unsigned char *) (__const char *) (".."))[3]); } } __result; }))) : __builtin_strcmp (dentry->d_name, "..")))); }))
continue;
if (dentry->d_name[0] == '.') continue;
buffer = malloc(strlen(filename) + strlen(dentry->d_name) + 3);
if (!buffer) continue;
sprintf(buffer, "%s/%s", filename, dentry->d_name);
if (!stat(buffer, &st)) {
if (((((st.st_mode)) & 0170000) == (0040000)))
add_directory(buffer, newdir);
else if (((((st.st_mode)) & 0170000) == (0100000))) {
unsigned char attrib = check_attrib_file(filename, dentry->d_name);
add_file(buffer, newdir, attrib);
}
}
free(buffer);
}
entry->start = (last_cluster_written);
entry->starthi = ((last_cluster_written & 0xFFFF0000) >> 16);
entry->size = newdir->count * sizeof(struct msdos_dir_entry);
remain = entry->size;
data = (char *) newdir->table;
while(remain) {
int size =
remain > bs.cluster_size * sector_size ? bs.cluster_size * sector_size : remain;
int pos = (start_data_sector * sector_size) + size_root_dir;
pos += (last_cluster_written - 2) * bs.cluster_size * sector_size;
do { loff_t __pos = (pos); if (llseek (dev, __pos, 0) != __pos) do { free (fat); if (info_sector) free (info_sector); free (root_dir
); fatal_error( "%s: " "seek to " "add_dir" " failed whilst writing tables" "\n" ); } while(0); } while(0);
do { int __size = (size); if (write (dev, data, __size) != __size) do { free (fat); if (info_sector) free (info_sector); free (root_
dir); fatal_error( "%s: " "failed whilst writing " "add_dir" "\n" ); } while(0); } while(0);
remain -= size;
data += size;
mark_FAT_cluster(last_cluster_written, remain ? last_cluster_written + 1 : (atari_format ? 0x0fffffff : 0x0ffffff8));
last_cluster_written++;
}
exit_add_dir:
if (rddir) closedir(rddir);
if (newdir->table) free(newdir->table);
if (newdir) free(newdir);
}
static void add_root_directory(char *dirname)
{
DIR *dir = opendir(dirname);
struct dirent *entry = 0;
struct dir_entry *newdir = 0;
if (!dir) {
printf("Error - directory %s does not exist\n", dirname);
return;
}
newdir = (struct dir_entry *) calloc(1,sizeof(struct dir_entry));
if (!newdir) {
closedir(dir);
return;
}
newdir->entries = root_dir_entries;
newdir->root = 1;
newdir->count = 0;
newdir->table = root_dir;
while((entry = readdir(dir))) {
struct stat st;
char *buffer;
if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (entry->d_name) && __builtin_constant_p (".") && (__s1_len =
strlen (entry->d_name), __s2_len = strlen ("."), (!((size_t)(const void *)((entry->d_name) + 1) - (size_t)(const void *)(entry->d_name)
== 1) || __s1_len >= 4) && (!((size_t)(const void *)((".") + 1) - (size_t)(const void *)(".") == 1) || __s2_len >= 4)) ? __builtin_strcm
p (entry->d_name, ".") : (__builtin_constant_p (entry->d_name) && ((size_t)(const void *)((entry->d_name) + 1) - (size_t)(const void *)(
entry->d_name) == 1) && (__s1_len = strlen (entry->d_name), __s1_len < 4) ? (__builtin_constant_p (".") && ((size_t)(const void *)((".")
+ 1) - (size_t)(const void *)(".") == 1) ? __builtin_strcmp (entry->d_name, ".") : (__extension__ ({ __const unsigned char *__s2 = (__c
onst unsigned char *) (__const char *) ("."); register int __result = (((__const unsigned char *) (__const char *) (entry->d_name))[0] -
__s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (entry->d_name))[1] - __s2[1]);
if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (entry->d_name))[2] - __s2[2]); if (__s1_le
n > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (entry->d_name))[3] - __s2[3]); } } __result; }))) : (__
builtin_constant_p (".") && ((size_t)(const void *)((".") + 1) - (size_t)(const void *)(".") == 1) && (__s2_len = strlen ("."), __s2_len
< 4) ? (__builtin_constant_p (entry->d_name) && ((size_t)(const void *)((entry->d_name) + 1) - (size_t)(const void *)(entry->d_name) ==
1) ? __builtin_strcmp (entry->d_name, ".") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *)
(entry->d_name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("."))[0]; if (__s2_len > 0 && __result
== 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("."))[1]); if (__s2_len > 1 && __result == 0) { __result = (_
_s1[2] - ((__const unsigned char *) (__const char *) ("."))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsi
gned char *) (__const char *) ("."))[3]); } } __result; }))) : __builtin_strcmp (entry->d_name, ".")))); }) || !__extension__ ({ size_t
__s1_len, __s2_len; (__builtin_constant_p (entry->d_name) && __builtin_constant_p ("..") && (__s1_len = strlen (entry->d_name), __s2_len
= strlen (".."), (!((size_t)(const void *)((entry->d_name) + 1) - (size_t)(const void *)(entry->d_name) == 1) || __s1_len >= 4) && (!((
size_t)(const void *)(("..") + 1) - (size_t)(const void *)("..") == 1) || __s2_len >= 4)) ? __builtin_strcmp (entry->d_name, "..") : (__
builtin_constant_p (entry->d_name) && ((size_t)(const void *)((entry->d_name) + 1) - (size_t)(const void *)(entry->d_name) == 1) && (__s
1_len = strlen (entry->d_name), __s1_len < 4) ? (__builtin_constant_p ("..") && ((size_t)(const void *)(("..") + 1) - (size_t)(const voi
d *)("..") == 1) ? __builtin_strcmp (entry->d_name, "..") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (_
_const char *) (".."); register int __result = (((__const unsigned char *) (__const char *) (entry->d_name))[0] - __s2[0]); if (__s1_len
> 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (entry->d_name))[1] - __s2[1]); if (__s1_len > 1 && __r
esult == 0) { __result = (((__const unsigned char *) (__const char *) (entry->d_name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0)
__result = (((__const unsigned char *) (__const char *) (entry->d_name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("..
") && ((size_t)(const void *)(("..") + 1) - (size_t)(const void *)("..") == 1) && (__s2_len = strlen (".."), __s2_len < 4) ? (__builtin_
constant_p (entry->d_name) && ((size_t)(const void *)((entry->d_name) + 1) - (size_t)(const void *)(entry->d_name) == 1) ? __builtin_str
cmp (entry->d_name, "..") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (entry->d_name);
register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (".."))[0]; if (__s2_len > 0 && __result == 0) { __result
= (__s1[1] - ((__const unsigned char *) (__const char *) (".."))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__con
st unsigned char *) (__const char *) (".."))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (_
_const char *) (".."))[3]); } } __result; }))) : __builtin_strcmp (entry->d_name, "..")))); }))
continue;
if (entry->d_name[0] == '.') continue;
buffer = malloc(strlen(dirname) + strlen(entry->d_name) + 3);
if (!buffer) continue;
sprintf(buffer, "%s/%s", dirname, entry->d_name);
if (!stat(buffer, &st)) {
if (((((st.st_mode)) & 0170000) == (0040000)))
add_directory(buffer, newdir);
else if (((((st.st_mode)) & 0170000) == (0100000))) {
unsigned char attrib = check_attrib_file(dirname, entry->d_name);
add_file(buffer, newdir, attrib);
}
}
free(buffer);
}
closedir(dir);
if (newdir) free(newdir);
}
void
usage (void)
{
fatal_error("Usage: mkdosfs [-A] [-c] [-C] [-v] [-I] [-l bad-block-file] [-b backup-boot-sector]\n [-m boot-msg-file] [-n volume
-name] [-i volume-id] [-B bootcode]\n [-s sectors-per-cluster] [-S logical-sector-size] [-f number-of-FATs]\n [-F fat-size]
[-r root-dir-entries] [-R reserved-sectors]\n [-d directory] /dev/name [blocks]\n");
}
static void check_atari( void )
{
# 1937 "mkdosfs.c"
}
int
main (int argc, char **argv)
{
int c;
char *tmp;
char *listfile = ((void *)0);
char *dirname = ((void *)0);
FILE *msgfile;
struct stat statbuf;
int i = 0, pos, ch;
int create = 0;
if (argc && *argv) {
char *p;
program_name = *argv;
if ((p = strrchr( program_name, '/' )))
program_name = p+1;
}
time(&create_time);
volume_id = (long)create_time;
check_atari();
printf ("%s " "2.10" " (" "22 Sep 2003" ")\n",
program_name);
while ((c = getopt (argc, argv, "AcCd:f:F:Ii:l:m:n:r:R:s:S:v:B:b")) != (-1))
switch (c)
{
case 'A':
atari_format = !atari_format;
break;
case 'b':
backup_boot = (int) strtol (optarg, &tmp, 0);
if (*tmp || backup_boot < 2 || backup_boot > 0xffff)
{
printf ("Bad location for backup boot sector : %s\n", optarg);
usage ();
}
break;
case 'c':
check = 1;
break;
case 'C':
create = 1;
break;
case 'd':
dirname = optarg;
break;
case 'f':
nr_fats = (int) strtol (optarg, &tmp, 0);
if (*tmp || nr_fats < 1 || nr_fats > 4)
{
printf ("Bad number of FATs : %s\n", optarg);
usage ();
}
break;
case 'F':
size_fat = (int) strtol (optarg, &tmp, 0);
if (*tmp || (size_fat != 12 && size_fat != 16 && size_fat != 32))
{
printf ("Bad FAT type : %s\n", optarg);
usage ();
}
size_fat_by_user = 1;
break;
case 'I':
ignore_full_disk = 1;
break;
case 'i':
volume_id = strtol(optarg, &tmp, 16);
if ( *tmp )
{
printf("Volume ID must be a hexadecimal number\n");
usage();
}
break;
case 'l':
listfile = optarg;
break;
case 'B':
if ( __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (optarg) && __builtin_constant_p ("-") && (__s1_len = str
len (optarg), __s2_len = strlen ("-"), (!((size_t)(const void *)((optarg) + 1) - (size_t)(const void *)(optarg) == 1) || __s1_len >= 4)
&& (!((size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") == 1) || __s2_len >= 4)) ? __builtin_strcmp (optarg, "-") : (__bui
ltin_constant_p (optarg) && ((size_t)(const void *)((optarg) + 1) - (size_t)(const void *)(optarg) == 1) && (__s1_len = strlen (optarg),
__s1_len < 4) ? (__builtin_constant_p ("-") && ((size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") == 1) ? __builtin_strcm
p (optarg, "-") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-"); register int __resul
t = (((__const unsigned char *) (__const char *) (optarg))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const uns
igned char *) (__const char *) (optarg))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__c
onst char *) (optarg))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (optarg
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("-") && ((size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") =
= 1) && (__s2_len = strlen ("-"), __s2_len < 4) ? (__builtin_constant_p (optarg) && ((size_t)(const void *)((optarg) + 1) - (size_t)(con
st void *)(optarg) == 1) ? __builtin_strcmp (optarg, "-") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (_
_const char *) (optarg); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("-"))[0]; if (__s2_len > 0 && __
result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-"))[1]); if (__s2_len > 1 && __result == 0) { __resu
lt = (__s1[2] - ((__const unsigned char *) (__const char *) ("-"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__con
st unsigned char *) (__const char *) ("-"))[3]); } } __result; }))) : __builtin_strcmp (optarg, "-")))); }) )
{
msgfile = fopen(optarg, "r");
if ( !msgfile )
perror(optarg);
}
else
msgfile = stdin;
if ( msgfile )
{
if (!(template_boot_code = malloc( 0xFFFF )))
fatal_error( "%s: " "Out of memory" "\n" );
use_template = 1;
i = 0;
do
{
ch = _IO_getc (msgfile);
switch (ch)
{
case (-1):
break;
default:
template_boot_code[i++] = ch;
break;
}
}
while ( ch != (-1) && i < 0xFFFF );
ch = _IO_getc (msgfile);
while( i < 0xFFFF )
template_boot_code[i++] = '\0';
if ( ch != (-1) )
printf ("Warning: template too long; truncated after %d bytes\n", i);
if ( msgfile != stdin )
fclose(msgfile);
}
break;
case 'm':
if ( __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (optarg) && __builtin_constant_p ("-") && (__s1_len = strlen (op
targ), __s2_len = strlen ("-"), (!((size_t)(const void *)((optarg) + 1) - (size_t)(const void *)(optarg) == 1) || __s1_len >= 4) && (!((
size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") == 1) || __s2_len >= 4)) ? __builtin_strcmp (optarg, "-") : (__builtin_co
nstant_p (optarg) && ((size_t)(const void *)((optarg) + 1) - (size_t)(const void *)(optarg) == 1) && (__s1_len = strlen (optarg), __s1_l
en < 4) ? (__builtin_constant_p ("-") && ((size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") == 1) ? __builtin_strcmp (opta
rg, "-") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-"); register int __result = (((
__const unsigned char *) (__const char *) (optarg))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned c
har *) (__const char *) (optarg))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const ch
ar *) (optarg))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (optarg))[3] -
__s2[3]); } } __result; }))) : (__builtin_constant_p ("-") && ((size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") == 1) &&
(__s2_len = strlen ("-"), __s2_len < 4) ? (__builtin_constant_p (optarg) && ((size_t)(const void *)((optarg) + 1) - (size_t)(const void
*)(optarg) == 1) ? __builtin_strcmp (optarg, "-") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const
char *) (optarg); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("-"))[0]; if (__s2_len > 0 && __result
== 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-"))[1]); if (__s2_len > 1 && __result == 0) { __result = (_
_s1[2] - ((__const unsigned char *) (__const char *) ("-"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsi
gned char *) (__const char *) ("-"))[3]); } } __result; }))) : __builtin_strcmp (optarg, "-")))); }) )
{
msgfile = fopen(optarg, "r");
if ( !msgfile )
perror(optarg);
}
else
msgfile = stdin;
if ( msgfile )
{
i = 29;
pos = 0;
do
{
ch = _IO_getc (msgfile);
switch (ch)
{
case '\r':
case '\0':
break;
case '\n':
if ( pos )
{
dummy_boot_code[i++] = '\r';
pos = 0;
}
dummy_boot_code[i++] = '\n';
break;
case '\t':
do
{
dummy_boot_code[i++] = ' ';
pos++;
}
while ( pos % 8 && i < 448 -1 );
break;
case (-1):
dummy_boot_code[i++] = '\0';
break;
default:
dummy_boot_code[i++] = ch;
pos++;
break;
}
}
while ( ch != (-1) && i < 448 -1 );
while( i < 448 -1 )
dummy_boot_code[i++] = '\0';
dummy_boot_code[448 -1] = '\0';
if ( ch != (-1) )
printf ("Warning: message too long; truncated\n");
if ( msgfile != stdin )
fclose(msgfile);
}
break;
case 'n':
sprintf(volume_name, "%-11.11s", optarg);
break;
case 'r':
root_dir_entries = (int) strtol (optarg, &tmp, 0);
if (*tmp || root_dir_entries < 16 || root_dir_entries > 32768)
{
printf ("Bad number of root directory entries : %s\n", optarg);
usage ();
}
break;
case 'R':
reserved_sectors = (int) strtol (optarg, &tmp, 0);
if (*tmp || reserved_sectors < 1 || reserved_sectors > 0xffff)
{
printf ("Bad number of reserved sectors : %s\n", optarg);
usage ();
}
break;
case 's':
sectors_per_cluster = (int) strtol (optarg, &tmp, 0);
if (*tmp || (sectors_per_cluster != 1 && sectors_per_cluster != 2
&& sectors_per_cluster != 4 && sectors_per_cluster != 8
&& sectors_per_cluster != 16 && sectors_per_cluster != 32
&& sectors_per_cluster != 64 && sectors_per_cluster != 128))
{
printf ("Bad number of sectors per cluster : %s\n", optarg);
usage ();
}
break;
case 'S':
sector_size = (int) strtol (optarg, &tmp, 0);
if (*tmp || (sector_size != 512 && sector_size != 1024 &&
sector_size != 2048 && sector_size != 4096 &&
sector_size != 8192 && sector_size != 16384 &&
sector_size != 32768))
{
printf ("Bad logical sector size : %s\n", optarg);
usage ();
}
sector_size_set = 1;
break;
case 'v':
++verbose;
break;
default:
printf( "Unknown option: %c\n", c );
usage ();
}
if (optind < argc)
{
device_name = argv[optind];
if (!create)
i = count_blocks (device_name);
}
if (optind == argc - 2)
{
blocks = (int) strtol (argv[optind + 1], &tmp, 0);
if (!create && blocks != i)
{
fprintf (stderr, "Warning: block count mismatch: ");
fprintf (stderr, "found %d but assuming %d.\n",i,blocks);
}
}
else if (optind == argc - 1)
{
if (create)
fatal_error( "%s: " "Need intended size with -C." "\n" );
blocks = i;
tmp = "";
}
else
{
fprintf (stderr, "No device specified!\n");
usage ();
}
if (*tmp)
{
printf ("Bad block count : %s\n", argv[optind + 1]);
usage ();
}
if (check && listfile)
fatal_error( "%s: " "-c and -l are incompatible" "\n" );
if (!create) {
check_mount (device_name);
dev = open (device_name, 02);
if (dev < 0)
fatal_error( "%s: " "unable to open %s" "\n" );
}
else {
loff_t offset = blocks*(1<<10) - 1;
char null = 0;
dev = open( device_name, 02|0100|01000, 0775 );
if (dev < 0)
fatal_error( "%s: " "unable to create %s" "\n" );
if (llseek( dev, offset, 0 ) != offset)
fatal_error( "%s: " "seek failed" "\n" );
if (write( dev, &null, 1 ) < 0)
fatal_error( "%s: " "write failed" "\n" );
if (llseek( dev, 0, 0 ) != 0)
fatal_error( "%s: " "seek failed" "\n" );
}
if (fstat (dev, &statbuf) < 0)
fatal_error( "%s: " "unable to stat %s" "\n" );
if (!((((statbuf.st_mode)) & 0170000) == (0060000))) {
statbuf.st_rdev = 0;
check = 0;
}
else
if (!ignore_full_disk && (
(statbuf.st_rdev & 0xff3f) == 0x0300 ||
(statbuf.st_rdev & 0xff0f) == 0x0800 ||
(statbuf.st_rdev & 0xff3f) == 0x0d00 ||
(statbuf.st_rdev & 0xff3f) == 0x1600 )
)
fatal_error( "%s: " "Will not try to make filesystem on full-disk device '%s' (use -I if wanted)" "\n" );
establish_params (statbuf.st_rdev,statbuf.st_size);
setup_tables ();
if (check)
check_blocks ();
else if (listfile)
get_list_blocks (listfile);
if (dirname) add_root_directory(dirname);
write_tables ();
exit (0);
}