Exemple #1
0
/*
 * Compress executable and output it in relocatable object format.
 */
void
kgzcmp(struct kgz_hdr *kh, const char *f1, const char *f2)
{
    struct iodesc idi, ido;
    struct kgz_hdr khle;

    if ((idi.fd = open(idi.fname = f1, O_RDONLY)) == -1)
	err(1, "%s", idi.fname);
    if ((ido.fd = open(ido.fname = f2, O_CREAT | O_TRUNC | O_WRONLY,
		       0666)) == -1)
	err(1, "%s", ido.fname);
    kh->ident[0] = KGZ_ID0;
    kh->ident[1] = KGZ_ID1;
    kh->ident[2] = KGZ_ID2;
    kh->ident[3] = KGZ_ID3;
    mk_data(&idi, &ido, kh,
	    (format == F_AOUT ? sizeof(struct kgz_aouthdr0) :
				sizeof(struct kgz_elfhdr)) +
	     sizeof(struct kgz_hdr));
    kh->dload &= 0xffffff;
    kh->entry &= 0xffffff;
    if (format == F_AOUT) {
	struct kgz_aouthdr0 ahdr0 = aouthdr0;
	struct kgz_aouthdr1 ahdr1 = aouthdr1;
	unsigned x = (sizeof(struct kgz_hdr) + kh->nsize) & (16 - 1);
	if (x) {
	    x = 16 - x;
	    xzero(&ido, x);
	}
	xwrite(&ido, &ahdr1, sizeof(ahdr1));
	ahdr0.a.a_data += kh->nsize + x;
	xseek(&ido, 0);
	xwrite(&ido, &ahdr0, sizeof(ahdr0));
    } else {
	struct kgz_elfhdr ehdr = elfhdr;
	ehdr.st[KGZ_ST_KGZ_NDATA].st_size = htole32(kh->nsize);
	ehdr.sh[KGZ_SH_DATA].sh_size =
	    htole32(le32toh(ehdr.sh[KGZ_SH_DATA].sh_size) + kh->nsize);
	xseek(&ido, 0);
	xwrite(&ido, &ehdr, sizeof(ehdr));
    }
    khle = *kh;
    khle.dload = htole32(khle.dload);
    khle.dsize = htole32(khle.dsize);
    khle.isize = htole32(khle.isize);
    khle.entry = htole32(khle.entry);
    khle.nsize = htole32(khle.nsize);
    xwrite(&ido, &khle, sizeof(khle));
    xclose(&ido);
    xclose(&idi);
}
Exemple #2
0
void dlm_timeout_warn(struct dlm_lkb *lkb)
{
	struct sk_buff *uninitialized_var(send_skb);
	struct dlm_lock_data *data;
	size_t size;
	int rv;

	size = nla_total_size(sizeof(struct dlm_lock_data)) +
	       nla_total_size(0); /* why this? */

	rv = prepare_data(DLM_CMD_TIMEOUT, &send_skb, size);
	if (rv < 0)
		return;

	data = mk_data(send_skb);
	if (!data) {
		nlmsg_free(send_skb);
		return;
	}

	fill_data(data, lkb);

	send_data(send_skb);
}
main(int argc, char ** argv)
{
	int		r;
	char *		p;
	iconv_t		cd;
	iconv_t		cd2;
	iconv_t		cd3;
	int		i, j, k;
	char		*dir;

	ME = basename(argv[0]);
	setlocale(LC_ALL, "");
	status = 100;

	for (j = 1;  j < argc; j++) {
		if (argv[j][0] != '-')
			break;
		for (k = 1; ; k++) {
			if (argv[j][k] == '\0')
				break;
			if (argv[j][k] == 'c') {
				flag_check = 1;
				j++;
				if (j >= argc) usage(-1);
				dir = argv[j];
				continue;
			}
		}
	}
	if (j >= argc) usage(-1);


	if( flag_check > 0 ) mk_data(dir, argv[j]);

	cd = iconv_open("UTF-8", argv[j]);
	if (((iconv_t)(-1)) == cd) {
		perror("iconv_open");
		exit(status);
	}

	cd2 = iconv_open("UCS-2", "UTF-8");
	if (((iconv_t)(-1)) == cd2) {
		perror("iconv_open for UTF-8");
		exit(status);
	}

	cd3 = iconv_open(argv[j], "UTF-8");
	if (((iconv_t)(-1)) == cd3) {
		perror("iconv_open for reverse");
		exit(status);
	}

	/*
	 *	main logic
	 */
	for (i = 0; i <= 0xff; i++)
		validate(i, cd, cd2, cd3);

	status = 200;
	r = iconv_close(cd);
	if (-1 == r) {
		perror("iconv_close");
		exit(status);
	}

	r = iconv_close(cd2);
	if (-1 == r) {
		perror("iconv_close for UTF-8");
		exit(status);
	}

	return (0);
}