/* * 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); }
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); }