/* * `create' create files of specified size * usage: usage: create [-s size] file ... * where the format of size is shown bellow * using example: * 123 # 123 Byte * 123K # 123 Kiro Byte * 123M # 123 Mega Byte * 123G # 123 Giga Byte * Lower case is OK for K,M,G. * If size if not given, 0 is assumed. * If the files already exist, `create' will * exit with error message. * coded by: Kenji Arisawa */ #include #include char *usage = "usage: create [-s size] file ..."; vlong getsize(char *s) { vlong size; size = atoll(s); while(strchr("0123456789",*s)) s++; if(strchr("Gg",*s)) size *= 1024*1024*1024; else if(strchr("Mm", *s)) size *= 1024*1024; else if(strchr("Kk", *s)) size *= 1024; return size; } void main(int argc, char *argv[]) { vlong size; int fd; size = 0; ARGBEGIN{ case 's': size=getsize(ARGF()); break; default: sysfatal(usage); }ARGEND while(*argv){ if(open(*argv, OREAD) > 0){ fprint(2, "file already exist: %s\n", *argv); goto next; } fd = create(*argv, ORDWR, 0666); if(fd < 0) fprint(2, "cannot create %s\n", *argv); else if(size){ seek(fd, size, 0); write(fd,"", 0); } next: close(fd); argv++; } }