#include "buffer.h" #include "io.h" #include "fmt.h" #include "scan.h" #include #include #include #include #include #include #include #include #ifdef __i386__ #define rdtscl(low) \ __asm__ __volatile__ ("rdtsc" : "=A" (low)) #endif static void carp(const char* routine) { buffer_puts(buffer_2,routine); buffer_puts(buffer_2,": "); buffer_puterror(buffer_2); buffer_putnlflush(buffer_2); } static void panic(const char* routine) { carp(routine); exit(111); } int main(int argc,char* argv[]) { unsigned long count=10000; for (;;) { int i; int c=getopt(argc,argv,"hc:"); if (c==-1) break; switch (c) { case 'c': i=scan_ulong(optarg,&count); if (i==0 || optarg[i]) { buffer_puts(buffer_2,"mktestdata: warning: could not parse count: "); buffer_puts(buffer_2,optarg+i+1); buffer_putsflush(buffer_2,"\n"); } break; case 'h': buffer_putsflush(buffer_2, "usage: mktestdata [-h] [-c count]\n" "\n" "\t-h\tprint this help\n" "\t-c n\tcreate n small files (default: 10000)\n"); return 0; } } { unsigned long i,j; char buf[4096]; char filename[256]; if (mkdir("data",0700)==-1) panic("mkdir"); for (i=0; i<(count+99)/100; ++i) { j=fmt_str(filename,"data/"); j+=fmt_ulong(filename+j,i); filename[j]=0; if (mkdir(filename,0700)==-1) panic("mkdir"); } for (i=0; iPage "); j+=fmt_ulong(buf+j,i); j+=fmt_str(buf+j,"

Page "); j+=fmt_ulong(buf+j,i); j+=fmt_str(buf+j,"

\nThis is a nice, small and clean web page.

\n"); if (i==count) j+=fmt_str(buf+j,"This is the last page.\n"); else { j+=fmt_str(buf+j,"And here is the next one."); } write(fd,buf,j); close(fd); } } buffer_flush(buffer_1); return 0; }