#include <sys/types.h>
#include <dev/usb/if_kuevar.h>
#include <fcntl.h>
#include <stdlib.h>
#include <err.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include "kue_fw.h"
#define FILENAME "kue"
int
main(int argc, char *argv[])
{
struct kue_firmware kfproto, *kf;
int len, fd;
ssize_t rlen;
len = sizeof(*kf) - sizeof(kfproto.data) +
sizeof(kue_code_seg) + sizeof(kue_fix_seg) +
sizeof(kue_trig_seg);
kf = (struct kue_firmware *)malloc(len);
bzero(kf, len);
kf->codeseglen = htonl(sizeof(kue_code_seg));
kf->fixseglen = htonl(sizeof(kue_fix_seg));
kf->trigseglen = htonl(sizeof(kue_trig_seg));
bcopy(kue_code_seg, &kf->data[0],
sizeof(kue_code_seg));
bcopy(kue_fix_seg, &kf->data[0] + sizeof(kue_code_seg),
sizeof(kue_fix_seg));
bcopy(kue_trig_seg,
&kf->data[0] + sizeof(kue_code_seg) + sizeof(kue_fix_seg),
sizeof(kue_trig_seg));
printf("creating %s length %d [%zu+%zu+%zu]\n",
FILENAME, len, sizeof(kue_code_seg), sizeof(kue_fix_seg),
sizeof(kue_trig_seg));
fd = open(FILENAME, O_WRONLY|O_CREAT|O_TRUNC, 0644);
if (fd == -1)
err(1, FILENAME);
rlen = write(fd, kf, len);
if (rlen == -1)
err(1, "%s", FILENAME);
if (rlen != len)
errx(1, "%s: short write", FILENAME);
free(kf);
close(fd);
return 0;
}