/* * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * * $Id: fdwrite.c,v 1.1.1.1 1994/09/18 07:39:19 phk Exp $ * */ #include #include #include #include #include #include #include #include int format_track(int fd, int cyl, int secs, int head, int rate, int gaplen, int secsize, int fill,int interleave) { struct fd_formb f; register int i,j; int il[100]; memset(il,0,sizeof il); for(j = 0, i = 1; i <= secs; i++) { while(il[(j%secs)+1]) j++; il[(j%secs)+1] = i; j += interleave; } f.format_version = FD_FORMAT_VERSION; f.head = head; f.cyl = cyl; f.transfer_rate = rate; f.fd_formb_secshift = secsize; f.fd_formb_nsecs = secs; f.fd_formb_gaplen = gaplen; f.fd_formb_fillbyte = fill; for(i = 0; i < secs; i++) { f.fd_formb_cylno(i) = cyl; f.fd_formb_headno(i) = head; f.fd_formb_secno(i) = il[i+1]; f.fd_formb_secsize(i) = secsize; } return ioctl(fd, FD_FORM, (caddr_t)&f); } static void usage () { printf("Usage:\n\tfdwrite [-v] [-f inputfile] [-d device]\n"); exit(2); } int main(int argc, char **argv) { int inputfd = -1, c, fdn = 0, i,j,fd; int bpt, verbose=1, nbytes=0, track; char *device= "/dev/rfd0", *trackbuf = 0,*vrfybuf = 0; struct fd_type fdt; FILE *tty; setbuf(stdout,0); while((c = getopt(argc, argv, "d:s:f:v")) != -1) switch(c) { case 'd': /* Which drive */ device = optarg; break; case 'f': /* input file */ if (inputfd >= 0) close(inputfd); inputfd = open(optarg,O_RDONLY); if (inputfd < 0) { perror(optarg); exit(1); } break; case 'v': /* Toggle verbosity */ verbose = !verbose; break; case '?': default: usage(); } if (inputfd < 0) inputfd = 0; if(optind < argc) usage(); tty = fopen("/dev/tty","r+"); if(!tty) { perror("/dev/tty"); exit(1); } setbuf(tty,0); for(j=1;j > 0;) { fdn++; fprintf(tty, "Please insert floppy #%d in drive %s and press return >", fdn,device); while(1) { i = getc(tty); if(i == '\n') break; } if((fd = open(device, O_RDWR)) < 0) { perror(device); exit(1); } if(ioctl(fd, FD_GTYPE, &fdt) < 0) { fprintf(stderr, "fdformat: not a floppy disk: %s\n", device); exit(1); } bpt = fdt.sectrac * (1<= 0 && j= 0 && j