#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#define MAXSTR 500
#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
#ifndef lint
static char RCSid[] = "$Header: /rel/cvsfiles/devo/libio/dbz/fake.c,v 1.2 1993/10/25 20:02:42 bothner Exp $";
#endif
int midonly = 0;
int tag = 0;
int expired = -1;
int debug = 0;
char *progname;
char *inname;
long lineno;
void doline();
void addchars();
void seed();
int
main(argc, argv)
int argc;
char *argv[];
{
int c;
int errflg = 0;
FILE *in;
struct stat statbuf;
extern int optind;
extern char *optarg;
void process();
register long no;
extern long atol();
char line[MAXSTR];
progname = argv[0];
while ((c = getopt(argc, argv, "ms:te:d")) != EOF)
switch (c) {
case 'm':
midonly = 1;
break;
case 's':
seed(atol(optarg));
break;
case 't':
tag = 1;
break;
case 'e':
expired = atoi(optarg);
break;
case 'd':
debug++;
break;
case '?':
default:
errflg++;
break;
}
if (errflg || optind != argc - 1) {
fprintf(stderr, "usage: %s ", progname);
fprintf(stderr, "[-m] [-s seed] length\n");
exit(2);
}
for (no = atol(argv[optind]); no > 0; no--) {
doline(line);
puts(line);
}
#ifdef DBZ_FINISH
DBZ_FINISH;
#endif
exit(0);
}
void
doline(buf)
char *buf;
{
char tagch[2];
(void) strcpy(buf, "<");
addchars(buf, range(4, 20));
(void) strcat(buf, "@");
addchars(buf, range(8, 20));
if (midonly)
(void) strcat(buf, ">\tx");
else {
if (tag) {
tagch[0] = "1234567890"[range(0,9)];
tagch[1] = '\0';
(void) strcat(buf, ">\t");
(void) strcat(buf, tagch);
(void) strcat(buf, "00000000~-");
} else
(void) strcat(buf, ">\t1234567890~-");
}
if (range(1, 100) > expired) {
if (midonly)
(void) strcat(buf, "\tx");
else {
(void) strcat(buf, "\t");
addchars(buf, range(10, 30));
}
}
}
void
addchars(buf, len)
char *buf;
int len;
{
register int i;
register char *p = buf + strlen(buf);
static char vocab[] = "1234567890.abcde.fghij.klmno.pqrst.uvwxyz.\
1234567890.ABCDE.FGHIJ.KLMNO.PQRST.UVWXYZ.1234567890.\
1234567890.abcde.fghij.klmno.pqrst.uvwxyz.1234567890";
for (i = len; i > 0; i--)
*p++ = vocab[range(0, sizeof(vocab)-2)];
*p++ = '\0';
}