#include #define BLKSIZ 512 char ibuf[BLKSIZ]; int blksiz = BLKSIZ; int dbgflg = 0; /* Debug; print entry and value */ int main(argc, argv) int argc; char *argv[]; { char *arg; char *ofnm; register char *cp; register FILE *out; int blkno, nblks; if ((argc < 3) || (argc > 4)) { printf("\nmkempty {-d} \n"); exit(1); } argv++; argc--; for (;;) { arg = *argv; if (*arg++ != '-') break; argv++; argc--; switch (*arg) { case 'd': dbgflg++; printf("\n"); break; default: printf("Bad flag: %c", *arg); exit(1); } } ofnm = *argv++; argc--; out = fopen(ofnm, "wb"); if (out == NULL) { printf("Error opening output file: '%s'\n", ofnm); exit(1); } arg = *argv++; argc--; nblks = atoi(arg); if (nblks < 0) { printf("Bad file size: %d\n", nblks); exit(1); } if (argc > 0) { printf("Unneeded extra arg '%s'", *argv); exit(1); } cp = &ibuf[0]; while (cp < &ibuf[BLKSIZ]) *cp++ = 0; for (blkno = 0; (blkno < nblks); blkno++) { if (fwrite(&ibuf[0], sizeof(char), blksiz, out) != blksiz) { printf("Write failed: block %d\n", blkno); exit(1); } } fclose(out); printf("%d blocks written", blkno); }